
Полная версия
ИИ. История машины, которая научилась говорить
Новая область не появилась потому, что все будущие специалисты согласились с одной исходной идеей. Она появилась, потому что стало возможным говорить о разнородных проектах как о соседних, находить общие вопросы и спорить о границах между ними. В этом смысле Дартмутская встреча была не столько рождением машины, сколько попыткой устроить пространство, в котором вопрос о машине и интеллекте мог стать общей работой. Это менее мифический и более человечный сюжет: вместо внезапного открытия — документ, бюджет, неполное финансирование, разные сроки приезда, программы, уже начатые до встречи, и название, которое постепенно приобрело силу.
У этой главы поэтому нет вывода «всё началось именно тогда» в буквальном смысле. Идеи вычисления, автоматизации, логики, обучения и моделирования возникли задолго до 1956 года. Первая глава привела нас от давних способов переложить умственную работу на инструменты к моменту, когда электронная машина стала обещать новый масштаб. Дартмутское предложение попыталось дать этому масштабу имя и программу, но не готовый ответ.
Наиболее наглядным примером машинного рассуждения, связанным с летом 1956 года, была программа Logic Theorist, которую создавали Аллен Ньюэлл, Герберт Саймон и Клифф Шоу. Она не возникла из общего решения участников Дартмута и не доказывала, что машина умеет мыслить так же, как человек. Но она умела совершать конкретную, проверяемую работу: искать доказательства логических теорем. Следующая глава перейдёт от широкого исследовательского обещания к устройству этой программы, людям, которые её создавали, и границам того, что она смогла показать. Это и будет проверкой дартмутской гипотезы в её самой конкретной форме: не окончательным ответом о природе разума, а точным вопросом о работе, которую машина действительно может выполнить.
Глава 3. Логика учится искать
В 1956 году одна программа получила задачу из книги, написанной людьми, которые сами считались вершиной математической логики. Она должна была построить доказательство: цепочку рассуждений, где каждый шаг разрешён правилами. Её успех не закрыл философский спор о машинном мышлении. Он дал более точный результат: компьютер нашёл проверяемый путь к теореме.
Программу назвали Logic Theorist — «теоретик логики». В ранних публикациях встречается и название Logic Theory Machine, «машина логической теории». Её создавали Аллен Ньюэлл, Герберт Саймон и Джон Клиффорд Шоу, которого обычно называли Клиффом. Это была одна из первых программ, специально построенных для решения задачи, которую человек назвал бы интеллектуальной. Важно не превращать это первенство в безоговорочную легенду: до неё существовали вычислительные процедуры для математических задач, а сама программа работала только в узком формальном мире. Но именно Logic Theorist соединила программу, поиск доказательства и исследование человеческого решения задач в один наглядный опыт.
Предыдущая глава завершилась рассказом о Logic Theorist. Команда из Питтсбурга и Санта-Моники начала разрабатывать программу до встречи в Дартмуте; летняя демонстрация сделала проект заметным. Теперь можно рассмотреть его устройство. История отделяет две темы: компьютер действительно смог решить конкретную задачу, а вопрос о том, мыслит ли он как человек, остался открытым.
Задача, у которой можно проверить каждый шаг
В повседневной жизни мы редко получаем задачу в виде аккуратного набора правил. Нужно понять, что имел в виду собеседник, вспомнить контекст, решить, важна ли мелочь, и иногда спросить, чего именно от нас хотят. Доказательство в формальной логике устроено иначе. Исходные выражения заданы, правила вывода перечислены, а правильность результата можно проверить, не читая мыслей автора.
Команда выбрала фрагмент логики высказываний — формальную систему, где простые высказывания соединяются словами вроде «и», «или», «не» и «если…, то…». В символической записи отдельные высказывания обозначаются буквами, например p и q. Формула «если p, то q» говорит об отношении между ними, не сообщая, о каких именно предметах или событиях идёт речь. Для программы такая запись удобна: она работает со структурой выражения и его местом в доказательстве, а не с человеческим смыслом каждого предложения.
В этом заключалось и преимущество, и ограничение опыта. Когда Logic Theorist манипулировала формулой, ей не требовалось знать, означает ли p «на улице идёт дождь» или «число делится на два». Система была выбрана так, чтобы смысл можно было отложить в сторону и сосредоточиться на правильности переходов. Если машина из принятых посылок и правил выводила заключение, человек мог проверить цепочку по пунктам.
Основным источником задач служила Principia Mathematica Альфреда Норта Уайтхеда и Бертрана Рассела. Это многотомный труд начала XX века, в котором авторы стремились построить значительную часть математики на точных логических основаниях. Для Logic Theorist команда использовала теоремы из второй главы первого тома — участок, подходивший для исследования формального вывода. Программа не читала книгу так, как её читает студент. Ей задавали формализованные аксиомы, ранее полученные теоремы и цель, которую требовалось доказать.
Слово «теорема» здесь означает выражение, для которого уже построена допустимая цепочка вывода. Аксиома — исходное утверждение, которое система принимает без доказательства; правила вывода разрешают получать из уже принятых выражений новые. Это похоже на настольную игру: правила определяют, какие ходы законны, а партия состоит из последовательности ходов. Но сравнение с игрой имеет предел. В доказательстве не всякая законная последовательность ведёт к нужному результату. Задача — найти именно ту цепочку, которая заканчивается заданной формулой.
И здесь начинался настоящий поиск. Готовое доказательство можно проверять по шагам; самостоятельный поиск создаёт множество вариантов. Программа должна была выбирать подходящую аксиому, подстановку или преобразование, связывать цель с уже известными теоремами и определять, какой из допустимых шагов продолжит путь. Корректность отдельного хода не подсказывала, какой из тысяч возможных ходов приблизит её к результату.
Узкая формальная задача снимала часть неопределённости, но не снимала трудность выбора. Именно это делало её подходящей для исследования: можно было точно установить, что программа получила и что выдала, а затем разбирать, как она прошла от одного к другому.
От шахматной доски к логическим формулам
Logic Theorist не была исходным планом. Ньюэлл и Саймон пришли к ней через другую задачу: шахматы. Игра привлекала их как пример деятельности, которую легко назвать интеллектуальной и при этом можно точно описать. Правила известны, позиция видна на доске, а ход соперника меняет ситуацию по определённым законам. Однако количество продолжений быстро росло. Если рассматривать ответы на ответы, дерево вариантов разветвлялось так быстро, что полный перебор оказывался непрактичным даже для машины.
В разработке обсуждали и геометрические задачи. У них тоже были достоинства: фигуры, отношения между точками и линиями, возможность доказывать утверждения. Но геометрия привносила трудный вопрос о диаграммах. Рисунок помогает человеку увидеть, что может быть верным, однако внешний вид фигуры способен подсказывать свойства, которых в условии на самом деле нет. Если компьютер использует схему, нужно понять, какие сведения она действительно кодирует и что лишь кажется очевидным глазу.
Позднее Саймон вспоминал переход от шахмат через геометрию к логике как результат технических и случайных обстоятельств. В его рассказе книга Principia Mathematica оказалась под рукой. Это воспоминание не стоит пересказывать как легенду о внезапном озарении: выбор подходящей задачи обычно складывается из интереса исследователей, доступных материалов и ограничений оборудования. Но эпизод передаёт важный принцип. Они искали не обязательно самую грандиозную интеллектуальную задачу, а ту, где можно было отделить работу механизма от множества других проблем.
У доказательства были ясные правила и проверяемый критерий: либо конечная цепочка соответствует аксиомам и правилам вывода, либо нет. В шахматах оценка качества зависела от позиции, соперника и глубины поиска. В геометрии нужно было договориться о том, какие свойства фигуры представлены программе. Формальная логика уменьшала число неизвестных вокруг эксперимента. Она не делала задачу лёгкой; она делала ошибку заметной.
Это не означало, что математика считалась единственным настоящим видом мышления. Скорее, команда начинала с того участка, где можно было проверить идею информационной обработки на сложной задаче. Если программа докажет теорему, это не покажет, что она понимает язык, распознаёт обстановку или принимает решения в организации. Зато станет видно, можно ли описать часть рассуждения последовательностью операций и заставить компьютер самостоятельно выбрать между альтернативными путями.
Выбор также позволял соединить интересы Ньюэлла и Саймона. Они не ставили целью построить самый быстрый в мире автоматический доказатель. Их занимало, может ли программа воспроизводить некоторые процессы решения задач, которые наблюдаются у людей. Теорема была испытательным стендом: достаточно трудным, чтобы потребовать выбора, и достаточно формальным, чтобы процесс можно было разбирать.
Есть и важная разница между «машина получила правильный ответ» и «машина нашла доказательство». Для обычного вычисления результат может быть одним числом; проверка часто состоит в повторном вычислении. В формальной логике программа должна была выдать последовательность выражений, а каждый переход в ней должен был оправдываться правилом. Это делало работу видимой и проверяемой для людей, не обязанных верить авторскому описанию программы на слово.
Впрочем, читателю не нужно принимать выбор формальной логики за доказательство того, что все человеческое мышление устроено так же. Это была гипотеза исследователей, которую предстояло испытывать, а не установленный вывод. Чтобы понять её масштаб, нужно сначала увидеть, кто именно построил программу — и почему её невозможно приписать одному человеку.
Три участника, три разных вида работы
Аллен Ньюэлл работал в RAND Corporation и занимался исследованием человеческого решения задач и моделированием процессов обработки информации. К моменту Logic Theorist он уже участвовал в проектах, где компьютерные модели использовали для разбора того, как люди принимают решения в сложной обстановке. Его роль соединяла психологический вопрос — какие операции совершает решающий задачу человек — с инженерным: можно ли точно описать эти операции программой.
Герберт Саймон пришёл к этому исследованию не из традиционной математической логики. Он изучал политологию и административные организации, преподавал в Carnegie Institute of Technology и интересовался тем, как люди принимают решения при ограниченном времени и неполной информации. Позднее эту линию он назовёт ограниченной рациональностью: реальные люди не перебирают все возможности и не знают всего, что нужно для безошибочного выбора. Они ищут решение, которое достаточно хорошо работает при доступных ресурсах. В Logic Theorist Саймон видел способ исследовать такую стратегию на задаче, где её можно наблюдать с большой точностью.
Джон Клиффорд «Клифф» Шоу был программистом и инженером в RAND. Он работал с вычислительными машинами, участвовал в разработке JOHNNIAC и создавал программные средства, необходимые для обработки структурированных символических данных. В рассказах, где два учёных придумали алгоритм, а затем «просто запрограммировали» его, исчезает центральная часть работы. Шоу помогал превратить описание поиска в инструкции, которые могла выполнить конкретная машина. Кроме того, команда разрабатывала собственный язык, чтобы такие программы вообще можно было записывать удобным способом.
Их сотрудничество было распределённым. Ньюэлл и Шоу находились в RAND в Санта-Монике; Саймон работал в Питтсбурге и сотрудничал с RAND. Это не была единая группа, ежедневно сидевшая у одной машины. Концепции, психологические наблюдения и программирование пересекались через поездки, переписку, встречи и работу над общим проектом. Расстояние и разные профессиональные задачи могли замедлять взаимодействие, но одновременно заставляли участников точно объяснять, что именно они предлагают.
Обстановка RAND тоже имела значение. После войны организация выполняла крупные исследовательские задачи, в том числе для военных ведомств, и располагала вычислительной техникой, доступной для экспериментальной работы. Это не значит, что Logic Theorist создавали как боевое устройство или что доказательство теорем имело прямое военное назначение. Точнее сказать, исследования выросли внутри организации, где существовали машины, технические специалисты и ресурсы для экспериментов. Без этой инфраструктуры интеллектуальная схема могла бы остаться на бумаге.
Нельзя свести распределение труда к простому разделению «идея — код». Ньюэлл занимался и программной стороной, Саймон — не только психологической интерпретацией, Шоу участвовал в разработке языка и логики представления задач. Но их вклады различались, и эта разница важна. У программы есть научный вопрос, формальная схема, реализация, отладка и проверка на машине. Если убрать любой из этих слоёв, останется не действующая система, а замысел о ней.
Трио позже стали называть NSS — по фамилиям Newell, Shaw и Simon. Такое сокращение полезно для истории, но не должно создавать впечатление, что все решения принимались одновременно и одинаково. Программа стала возможна благодаря сочетанию навыков: анализировать решение задачи, формулировать его в виде процедур и заставить компьютер выполнять эти процедуры в заданных ограничениях. История Logic Theorist начинается не с гения у доски, а с распределённой команды, которой требовалось согласовать мысль, язык и машину.
Сначала алгоритм исполнили вручную
Один из самых выразительных эпизодов предшествует работе программы на компьютере. 15 декабря 1955 года команда провела ручную симуляцию Logic Theorist: люди последовательно исполняли описанные операции и проверяли, к чему приводит предложенный поиск. По позднему свидетельству Ньюэлла, это было первое успешное испытание процедуры на одной из теорем Principia Mathematica. Электронный компьютер ещё не выполнял всю программу в её окончательном виде.
«Ручная симуляция» звучит как театральная постановка, но здесь это был метод проверки алгоритма. Участники брали текущее выражение, применяли предусмотренные операции, записывали возникающие варианты и решали, какой путь исследовать дальше. Бумага, карточки, таблицы и инструкции временно заменяли память и команды машины. В этом смысле люди изображали вычислительный процесс, а не разыгрывали персонажей, которые будто бы стали компьютерами.
Ручной этап экономил дорогую работу над программой для JOHNNIAC: ошибка в самом замысле могла стоить больше, чем ошибка в коде. В середине 1950-х компьютер был общим и ограниченным ресурсом; программу для символьных задач ещё нужно было спроектировать, закодировать и отладить. Если процедура на бумаге не могла продвинуться даже при последовательном выполнении шагов, переписывание её на машинном языке не спасло бы идею. Ручной прогон позволял проверить, имеет ли поиск шанс завершиться и где он начинает блуждать.
Такой тест не доказывал, что программа будет эффективной на компьютере. Люди могли удержать в уме то, что не поместилось бы в машинную память; могли незаметно подправить ход или истолковать правило гибче, чем буквальная инструкция. Поэтому ручная симуляция была промежуточным свидетельством: схема поиска на конкретном примере оказалась исполнимой, но предстояло перенести её в точную программу и столкнуть с ограничениями JOHNNIAC.
Этот эпизод также помогает отделить программу от оборудования. Алгоритм — описание шагов и способов выбора — можно исполнять разными средствами. Человек может пройти по инструкции, компьютер — выполнить её электронными операциями. Но физический носитель влияет на скорость, память и удобство проверки. Алгоритм не тождествен железу, однако его практическая судьба от железа зависит.
У ручного этапа была и научная ценность. Команда могла наблюдать за поиском, отмечать, где возникает тупик, и пересматривать процедуру. Если исследователи одновременно хотели понять человеческое решение задач, они могли сравнивать поведение программы с тем, как человек решает аналогичную задачу. Это не превращало один удачный ручной прогон в модель человеческого мышления. Но оно позволяло перейти от смутного разговора о «рассуждении» к наблюдаемым операциям: выбору выражения, применению правила, возврату к прежнему узлу поиска.
Появление программы поэтому не следует датировать одним щелчком выключателя. Сначала была исследовательская идея, затем схема, ручная симуляция, язык программирования, реализация и запуск на машине. Эти этапы частично перекрывались. В позднем воспоминании Ньюэлла рабочая программа датируется летом 1956 года, тогда как рукопись и первые описания относятся к тому же году. Дартмутская встреча совпала с периодом, когда работу уже можно было показывать и обсуждать, но не была местом, где участники впервые придумали Logic Theorist.
Прежде чем машина могла искать, ей нужен был язык
Рассказывая об искусственном интеллекте, легко перейти от идеи к алгоритму, словно между ними нет промежуточных ступеней. В реальном проекте Logic Theorist эти ступени занимали месяцы. Чтобы программа могла работать с формулами, требовалось не только определить, какие правила вывода разрешены, но и придумать, как хранить выражения, находить их части, заменять одну структуру другой и сохранять список открытых вариантов поиска.
Обычный числовой расчёт часто можно представить как последовательность операций над значениями: сложить два числа, умножить результат, записать его в память. Формула устроена вложенно. Например, в выражении «если p, то (q или не-r)» одна операция применяется ко всему выражению, другая — только к его части, а отрицание относится к отдельной букве. Программе нужно знать не только символы по порядку, но и то, как они собраны друг в друга. Иначе она может случайно заменить кусок формулы, который выглядит похоже, но играет другую роль.
Ньюэлл, Шоу и Саймон разрабатывали Information Processing Language — IPL, «язык обработки информации». Это был не язык общения с компьютером в нынешнем бытовом смысле и не английские команды, которые машина якобы понимала. Это программная система для описания операций над символическими структурами. Важной её особенностью были списки — последовательности элементов, которые можно связывать и изменять. Вместо того чтобы хранить формулу как плоскую строку, программа могла представить её составные части так, чтобы к ним было удобно обращаться.
Представим полку с карточками, на каждой из которых записан один элемент, а на карточке есть указатель на следующую. Такая модель помогает понять список: можно пройти по его элементам, вставить новую часть, связать два фрагмента или отделить один участок. Аналогия не описывает все детали IPL и тем более не заменяет техническую документацию. Она объясняет, почему список оказался удобен для выражений, где элементы вложены и отношения между ними важнее простого соседства знаков.
Это решение имело цену. Списки и указатели требовали памяти и дополнительных действий. Программисту приходилось следить за тем, куда ведут связи и как новая структура соотносится со старой. Но именно такая гибкость делала возможной работу с символьными объектами. Язык программирования здесь не был декоративным инструментом, выбранным после того, как теория уже готова. Он влиял на то, какие процедуры можно было описать и сколько усилий потребует их исполнение.
Система IPL развивалась вместе с Logic Theorist, а не возникла как универсальный готовый инструмент. Команде понадобились операции, подходящие для её задач, и на их разработку уходили силы, которые иначе можно было бы потратить на доказатель. Это знакомая закономерность: новый класс задач часто требует новых средств выражения. Если язык умеет удобно складывать числа, но неудобно представлять вложенные формулы, разработчик сначала строит недостающий слой, а уже потом может сосредоточиться на самом рассуждении.
Эта работа особенно важна для роли Клиффа Шоу. Он знал машину, её инструкции и то, как собрать пригодный для исполнения язык. Саймон и Ньюэлл формулировали процедуры и исследовательские цели, но их реализация зависела от того, можно ли сделать из символической идеи конкретное представление в памяти. Вклад Шоу нельзя свести к тому, что он «перевёл» готовый алгоритм в код: сам перевод требовал решений о структуре данных, организации операций и поведении программы.
IPL показывает, почему ранняя история искусственного интеллекта — одновременно история алгоритмов и история инфраструктуры. Когда новая идея требует непривычного способа представления данных, программистам приходится создавать средства, с которыми потом смогут работать и другие исследователи. Этот труд обычно исчезает, как только инструмент становится привычным. Но без него мысль так и осталась бы записью в блокноте.
Машина в комнате RAND
Logic Theorist запускалась на JOHNNIAC — компьютере, созданном в RAND Corporation по проекту класса машин, восходившему к разработкам Института перспективных исследований. Название отдавало дань Джону фон Нейману, чьи идеи повлияли на устройство компьютера. Но JOHNNIAC не был универсальной абстракцией, в которой программа существует сама по себе. Это была конкретная машина, построенная и обслуживаемая людьми в конкретном исследовательском центре в Санта-Монике.
Мы привыкли думать о программе как о файле, который можно переслать и открыть почти на любом устройстве. В 1956 году перенос программы между компьютерами не был лёгким действием. Разные машины имели свои инструкции и ограничения; язык высокого уровня, который скрывает особенности оборудования, только зарождался. JOHNNIAC работал с электронными компонентами, но вычислительный процесс по-прежнему был тесно связан с машинным кодом, устройствами ввода-вывода и доступом к ограниченной памяти.
Это меняло повседневный масштаб разработки. Участники не могли бесконечно запускать эксперимент на личном компьютере, мгновенно менять строку и повторять попытку. Чтобы узнать, где система ошиблась, нужно было подготовить программу, подать ей данные, получить печать или другой результат и разобраться, связано ли поведение с логикой поиска, ошибкой кодирования или особенностью машины. Программирование было не только написанием инструкций, но и организацией доступа к вычислительному ресурсу.
В таких обстоятельствах тезис «машина умеет доказывать теоремы» означал сразу несколько вещей. Во-первых, исследователи сумели формально описать задачу. Во-вторых, нашли способ выразить процедуру в программном языке. В-третьих, машина смогла выполнить её в имеющихся аппаратных ограничениях. Наконец, её результат можно было прочитать и проверить. Если не различать эти уровни, легко приписать успех одному изобретению, хотя он возник на стыке логики, психологии, программирования и инженерии.
Есть соблазн представить оборудование просто препятствием для большого замысла: не хватало памяти, машина была медленной, и всё же исследователи победили. Но ограничения не только мешали. Они заставляли искать способы не тратить время на полный перебор, выбирать представление выражений, контролировать объём поиска. Это не значит, что ограниченный компьютер автоматически порождает интеллект. Скорее, исследователи были вынуждены сделать вопрос управления вычислениями явным.
Здесь проявляется материальная сторона научной идеи. Набор символов не перемещается по невидимой доске сам собой. Его нужно закодировать, разместить в памяти, обработать и вывести так, чтобы человек мог оценить результат. Если программа должна моделировать рассуждение, сначала нужно, чтобы машина надёжно выполнила инструкции. Между формулой на странице и доказательством на распечатке лежала работа Шоу, инженеров RAND и всех тех, кто поддерживал машину в рабочем состоянии.
Поэтому выражение «Logic Theorist работала на JOHNNIAC» не просто добавляет марку компьютера в историю. Оно напоминает, что первая демонстрация машинного рассуждения происходила в среде, где вычисления были ощутимым ресурсом. Результат не был бесплатным и мгновенным. Его приходилось строить через программную и аппаратную инфраструктуру, которой почти не существовало до того, как она понадобилась самой задаче.
Знать правила — не значит знать, какой ход сделать





