Выбрать главу

В 1959 году появилось несколько других версий «Теоретика», одну из которых назвали «Универсальный решатель задач». Он смог проводить также логические и физические манипуляции и к тому же обладал очень важной особенностью, благодаря которой так хорошо работал: он отделял знания (символы) от метода, используемого для манипулирования этими знаниями. Манипулирование символами производилось с помощью программного обеспечения, названного «решатель», который использовал поиск, чтобы найти правильное решение.

Представьте, что вы робот и вам нужно переместить пирамидку из дисков разного размера с одного стержня на другой, сохраняя их в порядке уменьшения размера. Эта головоломка, называется «Ханойские башни». Вы можете перемещать лишь по одному диску за раз и брать диск только сверху. Нельзя положить диск большего размера поверх меньшего. И есть всего три стержня. Каким образом нужно перекладывать диски? В рамках каждого хода, учитывая текущее состояние стержней, возможны два или больше перемещений. Какой же диск выбрать? На какой стержень его перенести? После того как вы перенесете диск, у вас появится больше доступных ходов, и после очередного принятого решения их количество будет расти. Игра подобна дереву возможностей, каждая ветвь которого ведет вас к решению, если вы сделали верный ход. Но как с таким множеством вариантов выбрать правильный?

Решение – это поиск. ИИ представляет, что, делая выбор за выбором, он движется по дереву возможностей вниз и выносит суждение: в этот момент, если бы я сделал такой ход, я бы стал ближе к решению? Рассмотрев достаточное количество комбинаций вариантов, ему удается найти правильный путь, а значит, теперь можно принять следующее решение – я положу этот диск туда. После этого ИИ находит новое дерево возможностей, на один шаг дальше, и ищет следующий ход.

Поиск в сочетании с символическим представлением знаний стал стандартным подходом в ИИ. Независимо от того, ищет ли ИИ способ, как выиграть партию в шахматы или го, пытается доказать формулу или планирует маршрут, позволяющий роботу избежать препятствия на пути, он, вероятно, ищет среди тысяч, миллионов, а возможно, и триллионов вариантов. Размер пространства поиска быстро стал ключевым ограничивающим фактором в основанном на поиске символическом ИИ, поэтому было разработано много умных алгоритмов для удаления маловероятных областей «деревьев» или деления большой проблемы на более мелкие задачи. В меньшем пространстве и вариантов для поиска тоже меньше.

Все, что дает нам новые знания, дает нам возможность быть более рациональными.

ГЕРБЕРТ САЙМОН (2000)

Но размер пространства (его комбинаторика) все же оставался проблемой. По иронии судьбы выяснилось, что программы вроде «Универсального решателя задач» непригодны для решения общих задач – пространство возможностей оказывалось слишком большим, что делало поиск невозможным в обозримом временном промежутке. Хотя эти программы могли справиться с проблемой вроде головоломки «Ханойские башни», они пасовали перед сложностями реального мира. Как оказалось, большего успеха можно достичь, если каждый ИИ сосредоточить на определенной задаче. Создайте набор правил о соответствии медицинских симптомов и различных заболеваний. Тогда компьютер сможет задать ряд вопросов, например «вы чувствуете боль?», «это острая боль или тупая?», «где локализуется боль?» и так далее, которые выявят симптомы, и в результате предложить одну или несколько версий вероятных заболеваний.

Подобные версии ИИ известны как экспертные системы, и на какое-то время они стали чрезвычайно популярны (возможно, даже слишком, как вы поняли по предыдущей главе). Хотя у крупных экспертных систем есть проблемы с техническим обслуживанием, они продолжают использоваться в медицине для диагностики, системах поддержки для автомобильных инженеров, системах обнаружения мошенничества и интерактивных сценариях для продавцов.

Хранение знаний

Многие идеи символического ИИ связаны с тем, как лучше всего представлять и использовать информацию. Правила и структурированные фреймы (формы представления знаний) слились с объектно ориентированными языками программирования, и сегодня существует множество способов хранения знаний: например, вкладывание, при котором родительский объект «дерево» содержит дочерние элементы «дуб» и «береза», или передача сообщений, при которой объект «продавец» может отправить аргумент «скидка 10 %», чтобы вызвать действие с объектом «цена». Были созданы языки для представления всех знаний, иногда называемые онтологическими, со своими сложными структурами и правилами. Все они основаны на логике и могут быть объединены с автоматизированными системами формирования рассуждений, для того чтобы логически выводить новые факты, которые затем могут быть добавлены к их знаниям, или проверять соответствие существующих фактов.