К сожалению, шаг довольно скромный, поскольку язык пропозиционной логики не слишком выразителен. Давайте рассмотрим, что это означает на практике, если попытаться выразить главное правило допустимых ходов в го: «Игрок, имеющий право хода, может поместить камень на любую незанятую точку пересечения линий»
[346]. Первый шаг — решить, какие пропозиционные символы подойдут для описания ходов и игровых позиций го. Значимое базовое предположение — находится ли камень определенного цвета в определенном положении в определенное время. Итак, нам понадобятся такие символы, как Белый_Камень_На_5_5_В_Ходе_38 и Черный_Камень_На_5_5_В_Ходе_38. (Помните, что, как и в случае человека, смертного и Сократа, алгоритму формирования рассуждения не нужно знать значение символа.) Тогда логическое условие возможности для белых сделать ход на пункт (5,5) в процессе 38 хода будет иметь вид:
(не Белый_Камень_На_5_5_в_Ходе_38)
и (не Черный_Камень_На_5_5_В_Ходе_38).
Иными словами, в данном пункте нет ни белого, ни черного камня. Вроде бы просто. К сожалению, в пропозиционной логике это придется расписывать по отдельности для каждого положения на каждом ходе игры. Поскольку за одну игру имеется 361 положение и около 300 ходов, это означает больше 100 000 копий правила! Для правил, описывающих захваты и повторы, в которых участвует несколько камней и пунктов, ситуация ухудшается, и мы быстро заполняем правилами миллионы страниц.
Очевидно, что реальный мир намного больше доски для игры в го. В нем намного больше 361 местоположения и 300 временных шагов, а также множество других типов объектов, помимо камней. В общем, перспектива использования пропозиционного исчисления для описания знания о реальном мире совершенно безнадежна.
Проблему представляет не только огромный до нелепого размер свода правил, но и большой объем опыта, который потребуется обучающейся системе, чтобы усвоить правила из примеров. Если человеку достаточно одного-двух примеров, чтобы составить общее представление о том, как ставить камень на доску, захватывать камни и т. д., то интеллектуальной системе на основе пропозиционной логики пришлось бы показывать примеры перемещений и захватов по отдельности для каждого пункта и каждого хода. Система не может сделать обобщение на основе немногочисленных примеров, как это делает человек, поскольку не имеет возможности сформулировать общее правило. Это ограничение распространяется не только на системы, основанные на пропозиционной логике, но на любые системы с сопоставимыми выразительными возможностями. Например, Байесовы сети, вероятностные родственники систем пропозиционной логики, и нейронные сети, являющиеся основой подхода к созданию ИИ на основе глубокого обучения.
Логика первого порядка
Следующий вопрос: существует ли более выразительный логический язык? Нам подойдет тот, на котором возможно сообщить системе правила игры в го следующим образом:
для всех пунктов на доске и для всех временных шагов выполняются правила…
Логика первого порядка, предложенная немецким математиком Готлобом Фреге в 1879 г., позволяет писать правила именно так
[347]. Ключевое различие между пропозиционной логикой и логикой первого порядка состоит в том, что если первая предполагает, что мир состоит из предложений, являющихся истинными или ложными, то вторая рассматривает мир как состоящий из объектов, которые могут быть связаны друг с другом разными способами. Например, в нем могут быть местоположения, соседствующие друг с другом, моменты времени, непрерывно следующие один за другим, камни, занимающие местоположения в определенные моменты времени, и ходы, допустимые в определенные моменты времени. Логика первого порядка позволяет утверждать, что определенное свойство истинно для всех объектов в мире. Таким образом, можно написать:
для всех временных шагов t, и для всех местоположений l, и для всех цветов с, если с имеет право делать ход в момент времени t и l не занято в момент времени t, то для с допустимо поместить камень в местоположение l в момент времени t.
Добавив еще несколько пояснений и дополнительных предложений, определяющих местоположения на доске, два цвета и значение понятия незанятый, получаем начало полных правил игры в го. На языке логики первого порядка они занимают практически столько же места, сколько и наша фраза.
Развитие логического программирования в конце 1970-х гг. принесло изящный и эффективный метод логического рассуждения, воплотившийся в языке программирования «Пролог». Программисты научились строить на этом языке логические рассуждения, выполнявшиеся со скоростью в миллионы шагов в секунду, что позволило осуществить практическое применение логики. В 1982 г. правительство Японии объявило об огромных инвестициях в разработку ИИ на основе «Пролога», в так называемый проект «Пятое поколение»
[348]. Об аналогичных инициативах сообщили США и Великобритания
[349]
[350].
К сожалению, «Пятое поколение» и другие похожие проекты выдохлись в конце 1980-х и начале 1990-х гг., отчасти из-за неспособности логики первого порядка работать с неопределенной информацией. Они стали воплощением возникшего вскоре уничижительного понятия «старый добрый ИИ» (Good Old-Fashioned AI, GOFAI)
[351]. Стало модно вообще отвергать логику как не имеющую отношения к ИИ. Многие исследователи ИИ, работающие в настоящее время в сфере глубокого обучения, ничего не знают о логике. Думаю, эта мода пройдет: если вы признаете, что мир содержит объекты, связанные друг с другом различными способами, то логика первого порядка не может не быть для вас очевидной, поскольку дает базовую математику для объектов и отношений. Это мнение разделяют Демис Хассабис, генеральный директор Google DeepMind
[352]: