Эта небольшая история верна, за исключением одного: Берру не знал, что работает с байесовскими сетями! Он просто сам открыл алгоритм распространения убеждений. И только пять лет спустя Дэвид Маккей из Кембриджа понял, что это тот же алгоритм, с которым он развлекался в конце 1980-х, рассматривая байесовские сети. Это поместило алгоритм Берру в знакомый теоретический контекст и позволило информатикам-теоретикам лучше понять его работу.
Вообще-то, другой инженер, Роберт Галлагер из Массачусетского технологического института, открыл код, в котором использовалось распространение убеждений (хотя его тогда не называли этим термином), еще в 1960 году, так давно, что Маккей описывает его код как «почти ясновидение». В любом случае он слишком опережал свое время. Галлагеру требовались тысячи процессоров на чипе, которые передавали туда и обратно сообщения о степени уверенности в том, что конкретный информационный бит равен единице или нулю. В 1960 году это было невозможно, и его код был практически забыт, пока Маккей не открыл его заново в 1998 году. Сегодня он есть в каждом сотовом телефоне.
Как бы то ни было, турбокоды имели ошеломляющий успех. До турбореволюции сотовые сети 2G использовали «мягкое декодирование» (т. е. вероятности), а не распространение убеждений. В сетях 3G применили турбокоды Берроу, а в 4G — турбокоды Галлагера. С точки зрения потребителя это означает, что ваш телефон потребляет меньше энергии, а аккумулятор работает дольше, потому что кодирование и декодирование — самые энергоемкие процессы. Кроме того, более совершенные коды означают, что не нужно находиться как можно ближе к вышке сотовой связи, чтобы получить высококачественную передачу. Другими словами, байесовские сети позволили производителям телефонов выполнить обещание: больше полосок в больше мест.
От байесовских сетей к диаграммам причинности
Возможно, после главы, посвященной байесовским сетям, у вас возник вопрос: как они относятся к остальному в этой книге, в частности к диаграммам причинности вроде тех, что приведены в главе 1? Конечно, я обсудил их так подробно отчасти потому, что они привели к причинности лично меня. Но, что еще важнее как с теоретической, так и с практической точки зрения, байесовские сети — ключ, который позволяет диаграммам причинности взаимодействовать с данными. Все вероятностные свойства байесовских сетей (включая связки, которые мы обсуждали выше в этой главе) и разработанные для них алгоритмы распространения убеждений подходят и для диаграмм причинности. Более того, они необходимы для понимания причинного вывода.
Основные различия между байесовскими сетями и диаграммами причинности заключаются в том, как они построены и в каких целях используются. Байесовская сеть — это всего лишь компактное представление огромной таблицы вероятностей. Стрелки означают, что вероятности дочерних узлов связаны со значениями родительских узлов определенной формулой (таблицы условных вероятностей) и что этого отношения достаточно, т. е. знание дополнительных родителей не изменит формулу. Точно так же отсутствие стрелки между любыми двумя узлами означает, что они независимы, если нам известны значения их родителей. Мы видели простую версию этого утверждения выше, когда обсуждали эффект экранирования в цепях и звеньях. В цепочке A → B → C отсутствующая стрелка между A и C означает, что A и C независимы, если мы знаем значения их родителей. Поскольку у A нет родителей, а единственный родитель C — это B, отсюда следует, что A и C независимы, если мы знаем значение B, что согласуется со сказанным выше.
Однако если бы та же диаграмма была сделана как диаграмма причинности, то и замысел, который лежал бы в ее основе, и пути интерпретации изменились бы. На этапе создания нужно рассмотреть каждую переменную, скажем С, и спросить себя, какие другие переменные она «слушает», прежде чем выбрать значение. Цепочка A → B → C означает, что B слушает только A, C слушает только B и A не слушает; т. е. она определяется внешними силами, которые не входят в нашу модель.
Эта метафора слушания обобщает все знания, которые передает причинная сеть; остальные можно вывести, иногда для этого понадобятся данные. Обратите внимание, что, если мы изменим порядок стрелок в цепочке, таким образом получив A ← B ← C, причинное прочтение структуры резко изменится, но условия независимости останутся прежними. Отсутствие стрелки между A и C по-прежнему будет означать, что A и C независимы, если нам известно значение B, как в исходной цепочке. Из этого вытекают два чрезвычайно важных следствия. Во-первых, причинные допущения не изобретаются по нашей прихоти; они подвергаются тщательной проверке данными и могут быть сфальсифицированы. Например, если наблюдаемые данные не показывают, что A и C являются независимыми при наличии B, то мы вправе с уверенностью сделать вывод, что модель цепочки несовместима с данными и ее необходимо отбросить (или исправить). Во-вторых, графические свойства диаграммы определяют, какие модели причинно-следственных связей различают по данным, а какие навсегда останутся неразличимыми, независимо от объема данных. Так, мы не в состоянии отличить вилку A ← B → C от цепочки A ← B ← C только по данным, потому что две диаграммы подразумевают одинаковые условия независимости.
Еще один удобный способ осмыслить каузальные модели — представить их в виде гипотетических экспериментов. Каждую стрелку можно считать утверждением об итоге гипотетического эксперимента. Стрелка от А к С означает, что если мы в силах повлиять только на А, то будем ожидать, что вероятность С изменится. Отсутствующая стрелка от А к С означает, что в том же эксперименте мы не увидим изменений в С, если сохраним родителей С неизменными (другими словами, В в примере выше). Обратите внимание на то, что в первом случае мы рассуждали в терминах вероятности («если нам известно значение В»), а теперь в терминах причинно-следственных связей («если мы сохраним В неизменным»), а это подразумевает, что мы физически оградим В от изменений и отключим стрелку от А к В.
Причинные рассуждения, необходимые для создания каузальной сети, конечно же, дадут результат, расширив группу вопросов, на которые она может ответить. В то время как байесовская сеть способна всего лишь рассказать, насколько вероятно одно событие, если мы наблюдаем другое (информация первого уровня), диаграммы причинности в состоянии ответить на вопросы об интервенции и контрфактивные вопросы. Например, вилка A ← B → C однозначно сообщает нам, что, если «пошевелить» А, это не окажет никакого эффекта на С, каким бы интенсивным ни было шевеление. Однако байесовская сеть не рассчитана на учет шевелений и не позволяет увидеть разницу между наблюдением и действием или в самом деле отличить вилку от цепочки. Другими словами, и вилка, и цепочка показали бы, что наблюдаемые изменения в А ассоциируются с изменениями в С, не давая предсказаний об эффекте воздействия на А.