Как мы решаем эту задачу с помощью вероятностного программирования? Казалось бы, нужен какой-то умный алгоритм, чтобы сортировать все возможности. В действительности, благодаря методу систем, основанных на знании, нам вообще не приходится изобретать новые алгоритмы. Мы просто используем PPL, чтобы выразить то, что знаем о геофизике: как часто случаются события в регионах природной сейсмической активности, с какой скоростью сейсмические волны распространяются в земной коре и насколько они шумные. Затем мы добавляем данные и запускаем алгоритм вероятностного рассуждения. Получающаяся система мониторинга, NET-VISA, функционирует как часть режима контроля запрета испытаний с 2018 г. На рис. 19 показана регистрация NET-VISA ядерного испытания в Северной Корее.
Наблюдение за миром
Одной из самых важных задач вероятностного рассуждения является отслеживание состояния частей мира, недоступных для прямого наблюдения. В большинстве видеоигр и настольных игр в этом нет необходимости, потому что вся релевантная информация наблюдаема, но в реальном мире это редкость.
Примером служит одна из первых серьезных автомобильных аварий с участием автономного автомобиля. Она произошла на перекрестке Саут-Макклинток-драйв и Ист-Дон-Карлос-авеню в Темпе (Аризона) 24 марта 2017 г.
[359] Как показано на рис. 20, автомобиль с автопилотом «Вольво» (V), двигаясь на юг по Макклинток, въезжает на перекресток в тот самый момент, когда сигнал светофора меняется на желтый. Ряд «Вольво» свободен, поэтому машина продолжает движение через перекресток с прежней скоростью. Затем автомобиль «Хонда» (H), какое-то время остававшийся невидимым появляется из-за линии остановившихся машин, и происходит столкновение.
Чтобы сделать вывод о возможном наличии невидимой «Хонды», «Вольво» мог бы собрать подсказки, приближаясь к перекрестку: в частности, что движение в двух других рядах остановилось, хотя еще горел зеленый сигнал, что передние машины в линии не выезжают на перекресток, и у них горят тормозные огни. Это неоднозначные свидетельства существования невидимой машины, совершающей левый поворот, но однозначные и не нужны, достаточно малой вероятности, чтобы дать алгоритму подсказку сбросить скорость и более осторожно въезжать на перекресток.
Эта история учит нас, что интеллектуальные агенты, действующие в частично наблюдаемой среде, должны отслеживать даже то, чего они не могут видеть, — насколько возможно, — основываясь на имеющихся видимых подсказках.
Приведу еще один пример, личного характера. Где ваши ключи от автомобиля? Если вы не ведете машину, читая эту книгу (что не рекомендуется!) то, скорее всего, не видите их в данную минуту. В то же время вы, вероятно, знаете, где они: у вас в кармане, в сумке, на прикроватном столике, в кармане пальто, висящего на вешалке, или, скажем, на крючке в кухне. Вы знаете это, потому что положили их туда, и с тех пор они не перемещались. Это простой пример использования знания и рассуждения для отслеживания состояния мира.
Не будь у нас этой способности, мы плутали бы — иногда буквально. Скажем, сейчас, когда я это пишу, то смотрю на белую стену самого обыкновенного номера в отеле. Где я нахожусь? Если бы мне пришлось полагаться на текущую сенсорную входящую информацию, я именно потерялся бы. Я же знаю, что нахожусь в Цюрихе, потому что вчера прилетел в Цюрих и не уезжал из него. Как и люди, роботы должны знать, где находятся, чтобы успешно ориентироваться в комнатах и зданиях, на улице, в лесу и в пустыне.
В общем, состояние уверенности, а не текущий сенсорный входящий сигнал, является подходящей основой для принятия решений о дальнейших действиях. Поддержание актуальности состояния уверенности — основная деятельность любого интеллектуального агента. В случае некоторых элементов состояния уверенности это происходит автоматически. Например, я просто знаю, что нахожусь в Цюрихе, мне не приходится об этом размышлять. В отношении других элементов это делается, так сказать, по запросу. Например, если я просыпаюсь в новом городе с большим сдвигом часовых поясов посреди долгой поездки, мне иногда требуются сознательные усилия, чтобы восстановить понимание того, где я нахожусь, что должен делать и почему. Думаю, это напоминает перезагрузку ноутбука. Отслеживание не предполагает постоянного точного знания обо всем в мире. Очевидно, это невозможно. Например, я понятия не имею, кто живет в соседнем номере моего ничем не примечательного цюрихского отеля, не говоря уже о нынешнем местонахождении и занятиях большинства из 8 млрд жителей Земли. У меня нет ни малейшего представления о том, что творится в остальной Вселенной за пределами Солнечной системы. Моя неопределенность в отношении текущего положения дел является одновременно громадной и неизбежной.
Базовым методом отслеживания состояния неопределенного мира является Байесово обновление. Его алгоритмы обычно включают два шага: шаг прогнозирования, когда агент предсказывает текущее состояние мира с учетом своего самого недавнего действия, и последующий шаг обновления, когда он получает новые сенсорные входные данные и соответствующим образом обновляет свои представления. Для понимания того, как это работает, рассмотрим проблему, с которой сталкивается робот при выяснении того, где находится. На рис. 21(а) показан типичный случай. Робот находится в центре комнаты, пребывая в некоторой неопределенности относительно своего точного местоположения, и хочет выйти в дверь. Он дает своим колесам команду продвинуться на полтора метра в направлении двери. К сожалению, у него старые разболтанные колеса, и прогноз робота о том, где он закончит движение, является довольно неопределенным, как показано на рис. 21(б). Если он теперь попытается продолжить движение, то может врезаться в дверь. К счастью, у него есть эхолокатор, и он может измерить расстояние до дверного косяка. Как представлено на рис. 21(в), измерения позволяют предположить, что робот находится в 70 см от левого косяка и в 85 см от правого. Наконец, робот обновляет свое состояние уверенности, объединяя прогноз (б) с измерениями (в) и получая новое состояние уверенности, продемонстрированное на рис. 21(г).
Алгоритм отслеживания доверительного состояния может быть использован для работы с определенностью не только в отношении местоположения, но и самой карты. Так был получен метод «Одновременная локализация и картирование» (Simultaneous localization and mapping, SLAM). Этод метод — основной компонент многих ИИ-приложений, от систем дополненной реальности до автомобилей с полным автопилотом и планетоходов.