Copycat не была ни символической программой на основе правил, ни нейронной сетью, но включала аспекты символического и субсимволического ИИ. Она решала задачи на аналогию с помощью постоянного взаимодействия между своими перцептивными процессами (выявляющими признаки в конкретной задаче на аналогию с алфавитными последовательностями) и первоначальными заложенными в нее понятиями (например, “буква”, “группа букв”, “следующая буква”, “предыдущая буква”, “такой же” и “противоположный”). Понятия программы были структурированы таким образом, чтобы имитировать ментальные модели, описанные в предыдущей главе. В частности, они были основаны на идее Хофштадтера об “активных символах” человеческого познания[353]. Я не стану описывать сложную архитектуру Copycat (но дам некоторые ссылки в примечаниях[354]). В конце концов, хотя Copycat умела решать многие задачи на аналогию с алфавитными последовательностями (включая приведенные выше примеры и множество их вариаций), она лишь поверхностно изучила свою огромную сферу. Вот, например, две задачи, с которыми она не справлялась:
Задача 4. Если azbzczd меняется на abcd, на что меняется pxqxrxsxt?
Задача 5. Если abc меняется на abd, на что меняется ace?
Для решения обеих задач необходимо формировать новые концепции на ходу, а Copycat этого не умела. В задаче 4 все z и x играют одинаковую роль “лишних букв, которые необходимо удалить, чтобы увидеть алфавитную последовательность”, и это дает ответ pqrst. В задаче 5 последовательность ace подобна последовательности abc, но образована буквами, которые следуют друг за другом не по порядку, а через одну, а потому ответом будет acg. Мне не составило бы труда наделить Copycat способностью считать количество букв, скажем, между a и c и c и e, но мне не хотелось встраивать в программу специфические способности для работы с алфавитными последовательностями. Copycat должна была стать экспериментальной площадкой для проверки общих идей о построении аналогий, а не полноценным “построителем аналогий для алфавитных последовательностей”.
Метапознание в мире алфавитных последовательностей
Важный аспект человеческого разума, которому сегодня уделяют не слишком много внимания в сообществе ИИ, – способность человека воспринимать и анализировать собственное мышление. В психологии ее называют способностью к метапознанию. Случалось ли вам, тщетно пытаясь решить задачу, вдруг понять, что вы повторяете одни и те же неэффективные мыслительные процессы? Со мной такое случается постоянно, но затем, заметив это, я порой нахожу способ разорвать замкнутый круг. Copycat, как и остальные программы ИИ, описанные на страницах этой книги, не имела механизмов самовосприятия, и это ограничивало ее работу. Иногда программа буксовала, снова и снова пытаясь решить задачу неверным способом, и не могла понять, что уже проходила по этому пути, но ни к чему не пришла.
Будучи аспирантом в группе Хофштадтера, Джеймс Маршалл поставил перед собой задачу научить Copycat анализировать собственное “мышление”. Он создал программу Metacat, которая не только решала задачи на аналогию с алфавитными последовательностями, как Copycat, но и пыталась выявлять закономерности в собственных действиях. Программа сопровождала свою работу комментариями, сообщая, какие концепции она узнает в ходе решения задачи[355]. Как и Copycat, Metacat показала любопытные результаты, но сумела развить лишь примитивные способности к самовосприятию, не сравнимые с человеческими.
Распознавание визуальных ситуаций
В настоящее время я занимаюсь разработкой системы ИИ, которая использует аналогии для гибкого распознавания визуальных ситуаций – визуальных сюжетов, включающих несколько объектов и их взаимодействие. Например, каждый снимок на рис. 48 представляет собой пример визуальной ситуации “прогулка с собакой”. Людям легко это понять, но системам ИИ очень тяжело узнавать примеры визуальных ситуаций, даже если ситуации совсем просты. Распознавать ситуации гораздо сложнее, чем отдельные объекты.