В принципе, способность мыслить в логике первого порядка позволяет нам далеко продвинуться на пути к универсальному интеллекту. В 1930 г. блестящий австрийский логик Курт Гёдель опубликовал знаменитую теорему о полноте
[63], доказывающую возможность существования алгоритма со следующим свойством
[64]:
Для любого собрания знания и любого вопроса, выразимого в логике первого порядка, алгоритм даст нам ответ на этот вопрос, если тот существует.
Это, вообще говоря, неслыханная гарантия. Она означает, к примеру, что мы можем объяснить системе правила игры в го и она ответит нам (если мы подождем достаточно долго), ведет ли этот дебютный ход к победе в партии. Мы можем сообщить ей факты о местной географии, и она укажет нам путь в аэропорт. Мы можем предоставить ей факты о геометрии, движении и столовых приборах, и она укажет роботу, как накрыть стол к ужину. В общем, получив любую достижимую цель и достаточное знание о последствиях своих действий, агент может использовать алгоритм для создания плана, который затем выполнит, чтобы достичь цели.
Следует сказать, что Гёдель не предложил сам алгоритм — он только доказал его существование. В начале 1960-х гг. стали появляться реальные алгоритмы логического вывода
[65], и казалось, что мечта Маккарти об универсальных интеллектуальных системах на основе логики вот-вот сбудется. Первый в мире проект создания крупного мобильного робота, стэнфордский «Шеки», был основан на логическом рассуждении (см. рис. 4). Шеки получал цель от разработчиков-людей, с помощью алгоритмов визуализации создавал логические предположения, описывающие текущую ситуацию, выводил логическое умозаключение, чтобы построить план, гарантированно приводящий к цели, а затем выполнял этот план. Шеки был «живым» доказательством того, что аристотелевская концепция человеческого мыслительного процесса и действия по крайней мере частично верна.
К сожалению, Аристотель (и Маккарти) были правы далеко не полностью. Главной проблемой является невежество — разумеется, не Аристотеля или Маккарти, а всех людей и машин, настоящих и будущих. Лишь в очень немногом из нашего знания мы абсолютно уверены. Особенно важно, что мы очень мало знаем о будущем. Невежество — прямо-таки непреодолимая проблема для чисто логической системы. Если я спрошу: «Приеду ли я вовремя в аэропорт, если выйду за три часа до вылета?» или «Смогу ли я обзавестись домом, купив выигрышный лотерейный билет и приобретя дом на выигрыш?» — правильным ответом будет: «Не знаю». Дело в том, что на любой из вопросов с точки зрения логики одинаково возможны ответы «да» и «нет». На практике невозможно быть совершенно уверенным в ответе на любой эмпирический вопрос, если ответ еще не известен
[66]. К счастью, определенность совершенно не обязательна для того, чтобы действовать: нам достаточно знать, какое действие является наилучшим, а не какое обречено на успех.
В силу неопределенности «заложенное в машину назначение» не может, в общем, быть точно известной целью, которой следует добиваться любой ценой. Больше не существует такой вещи, как «последовательность действий, достигающая цели», поскольку любая последовательность действий будет иметь множественные результаты, часть которых не достигнет цели. Вероятность успеха действительно важна: выехав в аэропорт за три часа до вылета, вы, возможно, не опоздаете на самолет, а купив лотерейный билет, возможно, выиграете достаточно, чтобы купить новый дом, но это очень разные возможно. Вы не можете гарантировать достижение цели, даже выбирая план, максимизирующий вероятность ее достижения. План с наибольшей вероятностью поспеть на рейс может предполагать выезд из дома за несколько дней, организацию вооруженного эскорта, готовность разнообразных альтернативных средств транспорта на случай, если другие сломаются, и т. д. Неизбежно приходится принимать в расчет относительную желательность каждого исхода, а также его вероятность.
Таким образом, вместо цели мы можем использовать функцию полезности для описания желательности разных исходов или последовательностей состояний. Часто полезность последовательности состояний выражается в сумме вознаграждений за каждое состояние в последовательности. Если цель определена через функцию полезности или вознаграждения, машина ориентируется на поведение, максимизирующее ожидаемую полезность или ожидаемую сумму вознаграждений, усредненных по возможным результатам с весами-вероятностями. Современный ИИ отчасти возрождает мечту Маккарти, только с полезностями и вероятностями вместо целей и логики.
Пьер-Симон Лаплас, великий французский математик, писал в 1814 г.: «Теория вероятности есть обычный здравый смысл, сведенный к расчетам»
[67]. Однако только в 1980-х гг. были разработаны практический формальный язык и алгоритмы формирования рассуждений для вероятностного знания. Это был язык Байесовых сетейВ, предложенный Джудой Перлом. Попросту говоря, Байесовы сети — вероятностные родственники пропозиционной логики. Они также являются вероятностным подобием логики первого порядка, в том числе Байесовой логики
[68] и большого разнообразия языков вероятностного программирования.