Чем сложнее объяснение, тем больше свидетельств необходимо, чтобы просто определить его в пространстве убеждений (в Традиционной Рациональности это формулируется вводящим в заблуждение образом, скажем, «чем сложнее утверждение, тем больше требуется оснований, чтобы его принять»). Как можно измерить сложность объяснения? Как определить, сколько свидетельств потребуется?
Допустим, вы, проведя какие-то эксперименты, получили ряд интересных результатов. Почему эти данные выглядят именно так, а не иначе? На ум приходят несколько объяснений, но какое из них выбрать?
Кажется, пришло время вспомнить принцип бритвы Оккама, точнее, следующую его формулировку: «следует считать верным самое простое объяснение, не противоречащее собранным данным». Но как оценить степень простоты? Роберт Хайнлайн как-то заявил, что самое простое объяснение звучит так: «Женщина, живущая напротив — ведьма, так сделала она».
Видимо, длина предложения на естественном языке — не очень хороший способ измерять «сложность». И нельзя гордиться тем, что теория «не противоречит данным» лишь потому, что ей не удаётся противоречить вообще хоть каким-нибудь фактам.
Но в чём причина того, что длина предложения — плохая мера сложности? Потому что, произнося предложение, ты используешь обозначения для понятий, которые знает слушатель, и именно в них слушатель уже хранит сложность. Скажем, можно превратить предложение Хайнлайна в аббревиатуру «ЖЖНВТСО!», тогда всё объяснение можно сообщить одним словом. Или, ещё лучше, можно дать предложению короткий произвольный код навроде «фнорд!». Уменьшают ли эти действия сложность? Нет, потому что тогда собеседнику нужно заранее сказать, что «ЖЖНТВТСО!» означает «Женщина, живущая напротив — ведьма, так сделала она». «Ведьма», в свою очередь, тоже обозначение для ряда очень необычных утверждений, и то, что все знают, каких именно, не означает, что «ведьма» — это просто.
Гигантский электрический искровой разряд падает с неба, сжигая дерево, и древние скандинавы говорят: «Наверное, какая-то могущественная личность разгневалась и бросила в дерево молнию». Человеческий мозг — самый сложный артефакт во всей известной вселенной. Гнев выглядит простым лишь потому, что мы не видим всей паутины нейронов, отвечающей за эту эмоцию (Представь, как трудно было бы объяснить пришельцам без чувства юмора, почему мы смеёмся над «Летающим цирком Монти Пайтона». Но это не говорит, что люди лучше пришельцев — у людей нет ощущения фнордотоватости). Сложность гнева, и, конечно, сложность разума, не бросилась в глаза авторам гипотезы о Торе, агенте-швыряющим-молнии.
Чтобы человек понял гипотезу Тора, нужно всего лишь бросить пару фраз. Чтобы человек понял уравнения Максвелла, нужно пересказать ему несколько книг. У людей есть встроенное понятие «гнев», но нет встроенного понятия «дифференциальное исчисление». Придётся объяснять язык, и язык, лежащий за языком, и основы математики, и лишь потом можно начинать лекцию об электричестве.
И всё же кажется, что в каком-то смысле уравнения Максвелла проще, чем человеческий мозг, или чем швыряющий-молнии-агент.
Вот разгадка: как выяснилось, намного проще написать компьютерную программу, симулирующую уравнения Максвелла, чем компьютерную программу, симулирующую пронизанный эмоциями разумный мозг Тора.
В алгоритмической теории информации «сложность описания» измеряется длиной кратчайшей компьютерной программы, выводящей это описание. Прежде чем говорить о «кратчайшей компьютерной программе», нужно задать пространство компьютерных программ, для чего нужен язык и интепретатор. Индукция Соломонова использует машины Тьюринга (точнее, последовательности битов, задающие машины Тьюринга). Что делать, если тебе не нравятся машины Тьюринга? Тогда можно спроектировать универсальную машину Тьюринга, интерпретирующую код на идеологически верном языке, и получить несильное пенальти — сложность изменится не более чем на некую заранее известную константу. Эта константа «худшего случая» зависит лишь от размера универсального интерпретатора для выбранного языка программирования, и поэтому различные формулировки в некотором смысле совершенно равносильны.
На мой взгляд, лучшая формулировка индукции Соломонова — требующая, чтобы компьютерная программа делала не детерминистическое предсказание, а приписывала строкам вероятности. Например, программа, объясняющая поведение симметричной монеты, будет просто приписывать одинаковую вероятность всем 2^N строкам длины N. Как понимать «объясняющая поведение» или «не противоречащая данным»? Чем больше вероятность, которую программа приписывает полученным данным, тем лучше программа их «объясняет». И сумма всех вероятностей должна равняться единице, и поэтому, чтобы лучше «объяснить» одну возможность, программа должна забрать сколько-то вероятностной меры у другой возможности, и теперь она будет «объяснять» её хуже. Монета не может в 100% случаев выпадать орлом, и в 100% случаев выпадать решкой.
Что можно сказать про оптимальный компромисс между сложностью программы и её способностью объяснять данные? Если забыть о сложности и думать только об объяснении, то лучшими будут программы, предсказывающие данные детерминистически, то есть приписывающие им 100% вероятность. Если монета выпала «ОРРООР», то программа, заявляющая, что монета фиксирована и изначально должна была показать «ОРРООР», объясняет данные в 64 раза лучше, чем программа, считающая монету симметричной. С другой стороны, если рассматривать только сложность, то гипотеза о симметричной монете всегда проще любой другой гипотезы. Даже если монета выпадает «ОРООРОООРООООРОООООР…». Гипотеза «монета симметрична» действительно проще и объясняет эту последовательность точно также хорошо, как и любую другую последовательность из 20 бросков — не лучше и не хуже — но легко увидеть другую гипотезу, выглядящую не слишком уж сложной, и объясняющую эти наблюдение намного лучше.
Программа, которой позволили хранить дополнительный бит информации, способна в два раза урезать пространство возможностей, и, следовательно, приписать в два раза больше вероятности точкам в оставшемся пространстве. Отсюда выходит, что один бит сложности должен стоить как минимум двукратного улучшения способности объяснять. Поэтому программа, в явном виде хранящая инструкцию «приписать ОРРООР 100% и % всем остальным», не сможет выиграть у всех остальных программ. Шесть бит, отведённые на хранение «ОРРООР» сводят на нет всю достоверность, полученную 64-кратным улучшением способности объяснять. Иначе, рано или поздно, придётся решить, что все симметричные монеты фиксированы.
Если, конечно, это программа не написана умно, и не пытается сжать строки данных. Во всех остальных случаях перемещение информации из данных в код не помогает укрепить достоверность программы.
Как именно работает индукция Соломонова? Нужно расcмотреть все допустимые программы (если допустима любая программа, то индукция становится невычислимой), причём каждая программа имеет априорную вероятность, равную (1/2)N, где N — её длина в битах, а затем вероятность корректируется, исходя из того, насколько хорошо программа объясняет данные на текущий момент. В результате получается группа «экспертов» различной степени достоверности, могущая предсказывать следующие биты: просто просуммируй мнения, умножив их на весовой коэффициент авторитета.
Принцип минимальной длины сообщения почти эквивалентен индукции Соломонова. Сначала ты посылаешь строку, описывающую код, а затем строку, описывающую данные, используя этот код. Объяснение, создающее кратчайшее суммарное сообщение, считается лучшим. Если приравнять набор возможных кодов к пространству всех компьютерных программ и считать сообщение-с-определениями универсальным интерпретатором, то принцип минимальной длины сообщения почти эквивалентен индукции Соломонова (почти — потому, что он выбирает кратчайшую программу, а не суммирует все возможные программы).
Это позволяет яснее увидеть проблему с использованием фразы «женщина, живущая напротив — ведьма, так сделала она» для объяснения закономерности в последовательности «0101010101». Если ты отправляешь другу письмо, пытаясь описать последовательность, которую ты наблюдал, тебе придётся сказать: «женщина, живущая напротив — ведьма, она сделала так, что последовательность вышла 0101010101». Обвинения в колдовстве не позволили сократить вторую половину сообщения. Тебе по-прежнему нужно описать, во всех подробностях, порождённые её запретным искусством данные.
Колдовство объясняет известные данные в том смысле, что оно качественно их разрешает. Но это лишь потому, что колдовство позволяет вообще всё, как и флогистон. Поэтому, после того, как слово «ведьма» сказано, тебе всё равно предстоит описать все наблюдения, не упуская даже мельчайшей детали. Посылая сообщение о колдовстве, ты не сжимаешь сообщение с данными. Первое сообщение — бесполезный пролог, мёртвый груз, увеличивающий суммарную длину.
Подвох фразы «так сделала ведьма» спрятан в слове «так». Как именно сделала ведьма?
Конечно, благодаря эффекту знания задним числом, якорению, лжеобъяснениям, лжепричинности, предвзятости подтверждения и целенаправленным размышлениям, может казаться совсем очевидным то, что, если женщина ведьма, то, конечно же, она заставит монету выпасть 0101010101. Но это уже отдельный разговор.
Элиезер Юдковский
Перевод BT. Оригинал Occam’s Razor
Post your comments