От идеи к работающим системам

В предыдущей заметке я писал о зарождении научного направления Artificial Intelligence и развитии двух линий — символического ИИ и искусственных нейронных сетей.

После Dartmouth начинается период, который можно назвать первым десятилетием ИИ — примерно 1956–1972 годы. Именно тогда появились первые программы, которые уже действительно выполняли интеллектуальные задачи.

После Dartmouth исследователи довольно быстро перешли от философского вопроса

Может ли машина мыслить?

к инженерному:

Какие конкретно задачи человека мы можем заставить решать компьютер?

1956: Logic Theorist

Одной из первых таких систем стал Logic Theorist, созданный Алленом Ньюэллом, Клиффом Шоу и Гербертом Саймоном. Программа предназначалась для доказательства теорем математической логики.
Здесь произошёл принципиальный сдвиг. До этого компьютер в основном рассматривался как машина для вычислений. Теперь его начали использовать для поиска решения.

Упрощённо:

задача > представление задачи символами > набор возможных действий > поиск > решение

Это стало фундаментом так называемого символьного ИИ. При этом исторически важно не приписывать Logic Theorist то, чего она не делала — она не «думала как человек» и не обладала общим интеллектом. Она решала определённый класс формализованных задач.
Почти одновременно развивается совершенно другая идея.
Если символьный подход говорит

Давайте дадим машине правила и научим её манипулировать символами

то нейросетевой подход говорит:

Давайте построим систему из большого количества простых элементов и позволим ей обучаться

1957-1958: The Perceptron

В 1957 году Фрэнк Розенблатт публикует работу «The Perceptron, a Perceiving and Recognizing Automaton» и разрабатывает перцептрон. Перцептрон был существенно ближе к современной концепции машинного обучения.
У него были:

  • входные сигналы
  • веса
  • выход
  • механизм изменения весов в процессе обучения

Упрощённо:

X1 — вес W1 ┐
X2 — вес W2 ┤
X3 — вес W3 ┤> сумма > решение
X4 — вес W4 ┘

То есть вместо того чтобы программист заранее прописывал каждое правило, параметры системы могли изменяться на основе примеров. Это чрезвычайно важная идея, потому что современное машинное обучение в фундаментальном смысле следует именно этому принципу.
Но перцептрон был очень ограниченным, он решал задачи, которые можно было разделить линейной границей. Это ограничение впоследствии стало одной из причин кризиса интереса к нейросетям.

1958: На арену выходит Lisp

Второе фундаментальное событие 1958 года — создание Джоном Маккарти языка Lisp.
Документированная история Lisp начинается с работ Маккарти 1958–1960 годов в MIT, где по настоящий момент хранятся оригинальные технические материалы. В опубликованной в 1960 году статье Маккарти описал Lisp как систему для работы с символическими выражениями на IBM 704.
Разработка этой системы чрезвычайно важна именно для раннего ИИ. Обычные языки того времени были прежде всего ориентированы на численные вычисления, а AI-исследователям требовалось работать с конструкциями вроде:

человек:
| является > студент
| знает > математику
| находится > Москва

Lisp был хорошо приспособлен для обработки символических структур и списков, поэтому на протяжении последующих десятилетий Lisp стал одним из главных языков исследований искусственного интеллекта. Это не было случайностью, первоначальная работа над Lisp непосредственно связывалась Маккарти с идеей Advice Taker — системы, которая могла бы работать с декларативными утверждениями и делать из них выводы.

1958–1960: появляется идея General Problem Solver

Ньюэлл, Шоу и Саймон пошли ещё дальше. Они пытались создать не программу для одной конкретной задачи, а универсальный механизм решения задач. Так появился проект General Problem Solver (GPS).

Его идея была очень привлекательной:

Цель > GPS ищет способ перейти от состояния A к состоянию B > решение

То есть вместо написания отдельного алгоритма для каждой задачи система должна была иметь общий механизм поиска. Это направление оказалось чрезвычайно влиятельным, однако здесь постепенно обнаружилась первая серьёзная проблема раннего ИИ — реальный мир слишком сложен для простого перебора символических вариантов.
В маленькой формальной задаче количество вариантов может быть приемлемым. В реальности же:

возможные действия × возможные состояния × неполная информация × неопределённость × контекст

очень быстро дают огромное пространство поиска.

Именно это станет одной из центральных проблем последующих десятилетий. Работы Ньюэлла, Шоу и Саймона конца 1950-х уже рассматривали вычислительное моделирование человеческого решения задач, например в статье «Elements of a Theory of Human Problem Solving» опубликованой в 1958 году.

1959: появляется термин «machine learning»

Здесь начинается ещё одна важная ветвь. Артур Самуэль работал над программой для игры в шашки, но его интересовало не просто создание сильной программы, он хотел, чтобы программа улучшала свою игру. Самуэль экспериментировал с методами, при которых программа использовала предыдущие партии для изменения своей стратегии. Именно с его работами связывают раннее употребление термина «machine learning» в современном смысле. IBM, где проводились исследования, датирует его соответствующие работы 1950-ми годами.

Получается ещё одна историческая ветвь:

AI

  • символы + правила
  • нейронные сети
  •  обучение на опыте

Сегодня эти три направления уже не выглядят совершенно раздельными, но тогда между ними существовала существенная концептуальная разница.

1960-е: рост оптимизма, компьютер начинает работать с языком

В начале 1960-х исследователи получили несколько впечатляющих результатов и возникло убеждение, что до настоящего машинного интеллекта осталось совсем немного. Сегодня особенно интересно читать заявления того времени, потому что они показывают, насколько иначе исследователи оценивали сложность проблемы.
Одной из важнейших областей становится natural language processing — обработка естественного языка.
Исследователи пытались заставить компьютер работать с человеческими языками, но подход был преимущественно символическим.

Компьютеру давали:

  • словарь
  • правила
  • грамматические конструкции
  • процедуры анализа
  • правила преобразования

То есть это ещё совсем не тот принцип, который используется современными LLM.

1964–1966: ELIZA

В 1966 году Джозеф Вайценбаум из MIT разработал программу ELIZA, он опубликовал её описание в Communications of the ACM.
ELIZA могла вести текстовый диалог с человеком, но механизм её работы был довольно простым по современным меркам. Она анализировала введённую фразу, находила ключевые слова и применяла заранее заданные правила преобразования.
Например, принципиально упрощённо:

Человек: «Моя мать меня не понимает»
ELIZA: «Расскажите подробнее о вашей семье.»

Это не означало, что программа понимала человека, в оригинальной публикации прямо описывается механизм:

ключевые слова > правила декомпозиции > преобразование > формирование ответа

Это очень интересный исторический момент, люди могли воспринимать такую систему как более интеллектуальную, чем она была на самом деле. Впоследствии этот эффект получил название ELIZA effect — склонность человека приписывать компьютерной системе понимание и человеческие качества на основании её поведения.

1966: важное предупреждение

Сам Вайценбаум не пришёл к выводу «Мы создали искусственный интеллект», напротив, его дальнейшая работа стала одной из первых серьёзных критических рефлексий относительно отношения человека к интеллектуальным машинам. Это существенно для понимания истории, уже в 1960-е годы стало ясно:

симулировать внешнее интеллектуальное поведение значительно проще, чем создать систему, которая действительно обладает соответствующей глубиной понимания

1966-1972: появляется робот Shakey

Теперь ещё одна проблема:

как соединить интеллект с физическим миром?

В Stanford Research Institute (SRI) началась работа над роботом Shakey. Это был один из первых мобильных роботов, который мог воспринимать окружающую среду, строить представление о ней, планировать действия и выполнять их.
Это был принципиальный переход:

ранний AI:

задача > символы > решение

робот:

мир > сенсоры > представление мира > планирование > действие > изменившийся мир > новое восприятие

Именно здесь становится очевидно, насколько сложнее интеллект в физическом мире, чем решение абстрактной логической задачи.

1969: серьёзный удар по нейросетевому подходу

В 1969 году Марвин Минский и Сеймур Паперт опубликовали книгу «Perceptrons: An Introduction to Computational Geometry». Она содержала математический анализ возможностей и ограничений однослойных перцептронов. Одним из известных примеров является XOR — задача, которую простой однослойный перцептрон решить не может. Минский и Паперт показали существенные ограничения определённого класса перцептронов, прежде всего однослойных.
Позднее нейросети продолжили развиваться, появились многослойные архитектуры и методы обучения, а интерес к ним снова резко вырос десятилетия спустя. Историческая роль книги Минского и Паперта действительно связана с ограничениями перцептронов, но популярное утверждение, что именно она единолично «убила нейросети», является чрезмерным упрощением.

Итак, что произошло за 13 лет?

Если взять период 1956–1969, то картина выглядит так:

Год Событие Что появилось
1956 Dartmouth ИИ оформляется как самостоятельная область
1956 Logic Theorist Автоматическое доказательство
1957 Perceptron Обучаемая нейросетевая модель
1958 Lisp | Язык для символической обработки
1958–59 GPS Общий подход к решению задач
1959 Работы Самуэля Раннее машинное обучение
1960-е NLP Первые системы обработки языка
1964–66 ELIZA Диалог на естественном языке
1966-72 Shakey Планирование + восприятие + робот
1969 Perceptrons Формальный анализ ограничений простых нейросетей

И самое главное — к концу 1960-х стало видно, что существуют две совершенно разные философии построения ИИ.

Символьная: знания > символы > правила > логический вывод > решение
Нейросетевая: данные > простые вычислительные элементы > веса > обучение > распознавание / решение

Современный ИИ в значительной степени является результатом последующего сближения этих исторически разных линий, а не прямым продолжением только одной из них.И здесь мы подходим к очень интересному моменту: 1970-е годы. Именно тогда появляется первая большая проблема раннего ИИ — обещания оказались существенно выше реальных возможностей. Начинаются ограничения финансирования, критика подходов, а затем формируется то, что сегодня называют первой зимой искусственного интеллекта. Об этом я расскажу в следующей заметке.