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