Самый простой способ сообщить о поставленной задаче — в форме цели. Когда вы садитесь в свою машину с автопилотом и нажимаете иконку «дом» на экране, бортовой компьютер принимает это как поставленную задачу, переходит к плану и осуществляет движение по маршруту. Состояние мира или соответствует цели (да, я дома), или не соответствует (нет, я не живу в аэропорту Сан-Франциско). В классический период исследования ИИ, до 1980-х гг., когда неопределенность стала главной проблемой, большинство исследований исходило из восприятия мира как полностью наблюдаемого и детерминистского, и цели имели смысл в качестве способа постановки задачи. Иногда имеется также функция издержек для оценки решений: оптимальным является то решение, которое минимизирует совокупные издержки при достижении цели. В случае автомобиля она может быть встроенной — например, издержки маршрута есть некая фиксированная комбинация времени и потребления топлива, — или же у человека может быть опция установления соотношения между этими двумя параметрами.
Ключом к выполнению таких задач является способность «мысленно моделировать» эффекты возможных действий, которая иногда называется опережающим поиском. Ваша машина с автопилотом имеет внутреннюю карту и знает, что если ехать на восток от Сан-Франциско по Бэй-бридж, то попадешь в Окленд. Алгоритмы, восходящие к 1960-м гг.
[60], находят оптимальные маршруты, заглядывая вперед и ведя поиск среди многих возможных последовательностей действийА. Эти алгоритмы являются повсеместным элементом современной инфраструктуры: они дают нам не только указания, куда ехать, но и решения в области авиапутешествий, роботизированной сборки, организации строительства и логистики в сфере доставки. С некоторыми модификациями по нейтрализации нежелательного поведения противников та же идея опережающего изучения используется в играх, таких как крестики-нолики, шахматы и го, целью которых является выигрыш в соответствии с конкретным определением этого понятия в данной игре.
Алгоритмы опережающего поиска чрезвычайно эффективны для своих специфических задач, но не отличаются гибкостью. Например, AlphaGo «знает» правила го, но только в том смысле, что имеет две подпрограммы, написанные на традиционном языке программирования наподобие С++: одна подпрограмма генерирует все возможные допустимые шаги, другая кодирует цель, определяя, является ли данное состояние выигрышем или проигрышем. Чтобы AlphaGo сыграла в другую игру, кто-то должен переписать ее код на С++. Более того, если вы задаете новую цель, скажем, посетить экзопланету на орбите Проксимы Центавра, она станет исследовать миллиарды последовательностей ходов в го в бесплодной попытке найти ту последовательность, которая приведет к достижению цели. Она не может заглянуть внутрь кода на С++ и понять очевидное: никакая последовательность шагов го не доставит вас на Проксиму Центавра. Знание AlphaGo, в сущности, заперто внутри «черного ящика».
В 1958 г., через два года после летнего собрания в Дартмуте, на котором и появилась сфера разработки ИИ, Джон Маккарти предложил намного более универсальный подход, открывающий «черный ящик»: написание разумных программ общего назначения, способных усваивать знание по любой теме и мыслить на его основе, чтобы ответить на любой вопрос, имеющий ответ
[61]. В особенности полезным здесь окажется практическое рассуждение того типа, что предложил Аристотель: «Выполнение действий А, Б, В… достигнет цели Г». Цель может быть какой угодно: убедиться, что в доме чисто, до того, как я там окажусь, выиграть в шахматы, не потеряв ни одного своего коня, снизить мои налоги на 50 %, посетить Проксиму Центавра и т. д. Новый класс программ, предложенный Маккарти, скоро получил название экспертной системы
[62].
Чтобы создание экспертной системы стало возможным, нужно ответить на два вопроса. Во-первых, как хранить знание в компьютере? Во-вторых, как добиться, чтобы компьютер правильно мыслил на основе этого знания, делая новые выводы? К счастью, древнегреческие философы, особенно Аристотель, дали базовые ответы на эти вопросы задолго до появления компьютеров. В действительности кажется вполне вероятным, что если бы Аристотель получил доступ к компьютеру (и электроэнергии, разумеется), то стал бы исследователем ИИ. Ответ Аристотеля, заново данный Маккарти, состоял в использовании формальной логикиБ как основы знания и рассуждения.
Для компьютерной науки по-настоящему важны два типа логики. Первая, так называемая пропозиционная, или Булева логика, была известна грекам, а также древнекитайским и индийским философам. Это тот же язык, что использует логические соединения «и», «нет» и т. д., составляющие структуру компьютерных чипов. В самом буквальном смысле современный микропроцессор — это просто очень большое математическое выражение, в сотни миллионов страниц, написанное на языке пропозиционной логики. Второй тип логики, тот, что Маккарти предложил для ИИ, называется
логикой первого порядкаБ. Язык логики первого порядка намного более выразителен, чем логики пропозиционной; это означает, что есть вещи, которые очень легко выразить в логике первого порядка, но чрезвычайно трудно или невозможно — в пропозиционной. Например, правила го занимают около страницы в логике первого порядка, но миллионы страниц в пропозиционной логике. Также легко выражается знание о шахматах, британском гражданстве, налогообложении, купле-продаже, движении, живописи, кулинарии и многих других сторонах нашего практического мира.