Участники Дартмутского семинара 1956 года озвучивали разные мнения о правильном подходе к разработке ИИ. Одни – в основном математики – считали, что языком рационального мышления следует считать математическую логику и дедуктивный метод. Другие выступали за использование индуктивного метода, в рамках которого программы извлекают статистические сведения из данных и используют вероятности при работе с неопределенностью. Третьи твердо верили, что нужно черпать вдохновение из биологии и психологии и создавать программы по модели мозга. Как ни странно, споры между сторонниками разных подходов не утихают по сей день. Для каждого подхода было разработано собственное множество принципов и техник, поддерживаемых отраслевыми конференциями и журналами, но узкие специальности почти не взаимодействуют между собой. В недавнем исследовании ИИ отмечается: “Поскольку мы не имеем глубокого понимания интеллекта и не знаем, как создать общий ИИ, чтобы идти по пути настоящего прогресса, нам нужно не закрывать некоторые направления исследований, а принимать «анархию методов», царящую в сфере ИИ”[27]
.Однако с 2010-х годов одно семейство ИИ-методов, в совокупности именуемых глубоким обучением (или глубокими нейронными сетями), выделилось из анархии и стало господствующей парадигмой ИИ. Многие популярные медиа сегодня ставят знак равенства между понятиями “искусственный интеллект” и “глубокое обучение”. При этом они совершают досадную ошибку, и мне стоит прояснить различия между терминами. ИИ – это область, включающая широкий спектр подходов, цель которых заключается в создании наделенных интеллектом машин. Глубокое обучение – лишь один из этих подходов. Глубокое обучение – лишь один из множества методов в области “машинного обучения”, подобласти ИИ, где машины “учатся” на основе данных или собственного “опыта”. Чтобы лучше понять эти различия, нужно разобраться в философском расколе, который произошел на заре исследования ИИ, когда произошло разделение так называемых символического и субсимволического ИИ.
Символический ИИ
Давайте сначала рассмотрим
Приведу пример. Одной ранней программе ИИ присвоили громкое имя “Универсальный решатель задач” (
Создатели УРЗ, когнитивисты Герберт Саймон и Аллен Ньюэлл, записали, как несколько студентов “размышляют вслух”, решая эту и другие логические задачи. Затем Саймон и Ньюэлл сконструировали программу таким образом, чтобы она копировала ход рассуждений студентов, который ученые признали их мыслительным процессом.
Я не буду подробно описывать механизм работы УРЗ, но его символическую природу можно разглядеть в формулировке программных инструкций. Чтобы поставить задачу, человек писал для УРЗ подобный код:
ТЕКУЩЕЕ СОСТОЯНИЕ:
ЛЕВЫЙ-БЕРЕГ = [3 МИССИОНЕРА, 3 ЛЮДОЕДА, 1 ЛОДКА]
ПРАВЫЙ-БЕРЕГ = [ПУСТО]
ЖЕЛАЕМОЕ СОСТОЯНИЕ:
ЛЕВЫЙ-БЕРЕГ = [ПУСТО]
ПРАВЫЙ-БЕРЕГ = [3 МИССИОНЕРА, 3 ЛЮДОЕДА, 1 ЛОДКА]
Если говорить обычным языком, эта инструкция показывает, что изначально левый берег реки “содержит” трех миссионеров, трех людоедов и одну лодку, в то время как правый не содержит ничего. Желаемое состояние определяет цель программы – переправить всех на правый берег реки.
На каждом шаге программы УРЗ пытается изменить текущее состояние, чтобы сделать его более похожим на желаемое состояние. В этом коде у программы есть “операторы” (в форме подпрограмм), которые могут преобразовывать текущее состояние в новое состояние, и “правила”, кодирующие ограничения задачи. Например, один оператор перемещает некоторое количество миссионеров и людоедов с одного берега реки на другой:
ПЕРЕМЕСТИТЬ (#МИССИОНЕРОВ, #ЛЮДОЕДОВ, С-БЕРЕГА, НА-БЕРЕГ)