Почти никого из жертв авиакатастрофы не удалось идентифицировать, сравнив ДНК с места катастрофы с ДНК из центральной базы данных. Следующим логичным шагом было взять у родственников образцы ДНК и искать частичные совпадения с ДНК жертв. Традиционные (небайесовские) методы позволяют это сделать, и они сыграли важнейшую роль в раскрытии нескольких давних преступлений в Нидерландах, США и других странах. Например, простая формула под названием «индекс отцовства» или «индекс сиблинга» помогает оценить вероятность того, что не идентифицированная ДНК принадлежит сыну или брату человека, чья ДНК есть у экспертов.
Однако эти индексы дают ограниченный результат, потому что они работают только для одного типа родства и только для близких родственников. Идея Bonaparte состоит в том, чтобы можно было использовать данные о ДНК более дальних родственников или от нескольких родственников сразу. Bonaparte делает это, преобразовывая родословную семьи в байесовскую сеть (рис. 18).
На рис. 19 мы видим, как Bonaparte переводит один небольшой кусочек родословной в (причинную) байесовскую сеть. Главная проблема состоит в том, что генотип индивида, который определяет генетическая экспертиза, содержит элементы, полученные и от отца, и от матери, но мы не можем определить их происхождение. Таким образом, два этих элемента (которые называются «аллели») необходимо рассматривать как скрытые, неизмеримые переменные в байесовской сети. Часть задачи состоит в том, чтобы вывести вероятность причины (ген голубых глаз был унаследован от отца) из имеющейся информации (например, есть гены голубых глаз и черных глаз; у кузенов со стороны отца голубые глаза, но у кузенов со стороны матери черные глаза).
Это задача на определение обратной вероятности, для чего и было изобретено правило Байеса.
Рис. 18. Фактическая родословная семьи с несколькими погибшими в авиакатастрофе рейса MH17 «Малайзия эйрлайнс» (источник: данные предоставлены Виллемом Бургерсом)
После того как байесовская сеть построена, финальный шаг — ввести ДНК жертвы и вычислить вероятность того, что она занимает определенное место в генеалогическом древе. Это делается путем распространения убеждений с помощью правила Байеса. Сеть начинается с определенной степени уверенности в каждом возможном утверждении об имеющихся в ней узлах, например: «отцовская аллель цвета глаз у этого человека — голубая». По мере того как в сеть вводится новая информация — неважно, в какое место, — степени уверенности в каждом узле, вверх и вниз по сети, будут меняться каскадно. Таким образом, как только мы обнаруживаем, что данный образец является вероятным совпадением для одного человека в родословной, мы распространяем эту информацию вверх и вниз по сети. В итоге Bonaparte учится не только на ДНК живых членов семьи, но и на уже полученных им результатах.
Рис. 19. От генетической экспертизы до байесовских сетей. В байесовской сети незакрашенные узлы представляют аллели, закрашенные — генотипы. Данные доступны только для закрашенных узлов, потому что генотипы не показывают, какая аллель была унаследована от отца, какая от матери. Байесовская сеть позволяет сделать выводы о ненаблюдаемых узлах, а также оценить вероятность того, что данный образец ДНК был получен от ребенка (источник: инфографика Маяна Харела)
Этот случай живо иллюстрирует преимущества байесовских сетей. Как только сеть настроена, следователю не нужно вмешиваться, чтобы сообщить ей, как оценить новые данные. Обновление происходит очень быстро (байесовские сети особенно хороши для программирования на распределенных вычислительных системах). Сеть интегративна, т. е. вся она реагирует на новую информацию. Вот почему даже ДНК тети или троюродного брата может помочь в идентификации жертвы. Байесовские сети — почти живая органическая ткань, и неслучайно именно эту картину я держал в уме, пока пытался добиться, чтобы они заработали. Я хотел, чтобы байесовские сети работали как нейроны в человеческом мозге: когда касаешься одного нейрона, реагирует вся сеть, распространяя информацию на все остальные клетки в системе.
Прозрачность байесовских сетей отделяет их от большинства других подходов к машинному обучению, которые часто производят непроницаемые «черные ящики». В байесовской сети вы можете проследить каждый шаг и понять, почему те или иные данные изменили уверенность сети.
Какой бы изящной ни была программа Bonaparte, она ничего не стоит без одной способности, которой не располагает (пока), — человеческой интуиции. Программа проводит анализ и сообщает специалистам, кому мог принадлежать каждый образец ДНК, составив рейтинг самых вероятных вариантов, а также сообщает о коэффициенте вероятности. После этого эксперты объединяют информацию о ДНК с данными о вещественных доказательствах, найденных на месте крушения, и делают окончательные выводы, не без помощи интуиции. Пока компьютер не может провести идентификацию самостоятельно. Одна из целей причинного вывода — создать более удобный интерфейс для взаимодействия человека и машины, который позволит включить интуицию следователя в процесс распространения убеждений.
Пример с генетической экспертизой дает самое поверхностное представление о том, как байесовские сети можно применять в геномике. Однако я хотел бы перейти к следующей области их применения, которая стала повсеместной в современном обществе. Более того, есть хорошие шансы, что у вас есть байесовская сеть в кармане прямо сейчас. Она называется «сотовый телефон». В каждом таком устройстве используются алгоритмы исправления ошибок, основанные на распространении степени уверенности.
Начнем с самого начала: когда вы говорите по телефону, он преобразует ваш прекрасный голос в последовательность нулей и единиц (которые называются биты) и трансформирует их, используя радиосигнал. К сожалению, ни один из них не принимается со 100 %-ной точностью. Пока он идет от башни сотовой связи и до телефона вашего друга, отдельные биты сменятся с нуля на единицу или наоборот.
Для исправления этих ошибок можно добавить избыточную информацию. Простейшая схема состоит в том, чтобы повторить каждый бит информации три раза: закодировать единицу как 111 и ноль как 000. Допустимые строки 111 и 000 называются кодовыми словами. Если приемник получит недопустимую строку, например 101, он будет искать наиболее вероятное допустимое кодовое слово, чтобы объяснить ее. Здесь, скорее всего, ошибка — ноль, а не две единицы, поэтому декодер интерпретирует это сообщение как 111 и, таким образом, заключит что бит был единицей.
К сожалению, это крайне неэффективное кодирование, потому что все наши сообщения становятся в три раза длиннее. Однако специалисты по телекоммуникациям 70 лет работают над кодами исправления ошибок, постоянно их улучшая.
Проблема декодирования аналогична другим проблемам с обратной вероятностью, которые мы обсудили, потому что мы снова хотим вывести вероятность гипотезы (послали сообщение Hello World!) из имеющихся данных (получили сообщение HXllo Wovld!). Кажется, пришло время применить распространение убеждений.
В 1993 году инженер «Франс телеком» по имени Клод Берру поразил мир программирования кодом для исправления ошибок, который позволял добиться почти идеальных результатов (другими словами, требуемый объем лишней информации был близок к теоретическому минимуму). Его идею под названием «турбокод» можно проиллюстрировать, представив ее с помощью байесовской сети.
На рис. 20a показано, как работает обычный код. Биты информации, которые поступают в телефон, когда вы говорите, показаны в первом ряду. Они кодируются любым способом — назовем его код A — в кодовые слова (второй ряд), которые потом принимаются с некоторыми ошибками. Это диаграмма — байесовская сеть, и мы можем использовать распространение убеждений, чтобы вывести из полученных битов, каковы были биты информации. Однако это никак не улучшит код А.
Рис. 20. Представление обычного процесса кодирования и турбокода в виде байесовской сети: а— информационные биты преобразуются в кодовые слова; они передаются и принимаются в пункте назначения с шумом (ошибками); б — информационные биты скремблируются и кодируются дважды. Декодирование происходит путем распространения убеждений в этой сети. Каждый процессор внизу использует информацию от другого процессора, чтобы улучшить предположение о скрытом кодовом слове в итеративном процессе
Блестящая идея Берру состояла в том, чтобы закодировать каждое сообщение дважды: один раз непосредственно и один раз уже после того, как сообщение скремблировано (преобразовано в случайную последовательность). Это приводит к созданию двух отдельных кодовых слов и получению двух шумных сообщений (рис. 20б). Нам неизвестна формула, которая позволяет напрямую декодировать такое двойное сообщение. Но Берру на опыте показал, что, если неоднократно примерить формулы распространения убеждений к байесовским сетям, происходят две потрясающие вещи. В большинстве случаев (и здесь я имею в виду около 99,999 % случаев) вы получаете верные информационные биты. Более того, можно использовать гораздо более короткие кодовые слова. Проще говоря, две копии кода А гораздо лучше одной.
Эта небольшая история верна, за исключением одного: Берру не знал, что работает с байесовскими сетями! Он просто сам открыл алгоритм распространения убеждений. И только пять лет спустя Дэвид Маккей из Кембриджа понял, что это тот же алгоритм, с которым он развлекался в конце 1980-х, рассматривая байесовские сети. Это поместило алгоритм Берру в знакомый теоретический контекст и позволило информатикам-теоретикам лучше понять его работу.
Вообще-то, другой инженер, Роберт Галлагер из Массачусетского технологического института, открыл код, в котором использовалось распространение убеждений (хотя его тогда не называли этим термином), еще в 1960 году, так давно, что Маккей описывает его код как «почти ясновидение». В любом случае он слишком опережал свое время. Галлагеру требовались тысячи процессоров на чипе, которые передавали туда и обратно сообщения о степени уверенности в том, что конкретный информационный бит равен единице или нулю. В 1960 году это было невозможно, и его код был практически забыт, пока Маккей не от