Перейти к содержанию

6.3.1.3 SHRDLU

Материал из Охота на электроовец: Большая Книга Искусственного Интеллекта

Ещё одной знаменитой разработкой в области диалоговых систем стала программа SHRDLU, созданная на заре развития отрасли.

Буквы на клавиатурах типографских наборных машин традиционно располагались в порядке убывания частоты букв в целях ускорения работы, поэтому строчные буквы etaoin и shrdlu являлись первыми двумя столбцами на левой стороне клавиатуры. Иногда из-за особенностей типографского процесса эта последовательность символов попадала в печать, таким образом на свет появился Etaoin Shrdlu, дальний родственник нашего соотечественника Йцукенга Фывапролджевича Ячсмитьбю.

Имя Shrdlu в разное время носили и шахматная программа, и герои различных литературных произведений и комиксов, и даже вымышленный джазовый композитор. Но в мире информатики под этим именем известна в первую очередь диалоговая система, созданная в 1968–1970 гг. в MIT Терри Виноградом.

SHRDLU — своеобразный виртуальный ассистент, являющийся хранителем небольшого искусственного мира, состоящего из виртуальной коробки и разноцветных блоков разной формы и размера. Пользователь ведёт общение с SHRDLU, используя предложения на английском языке и задавая различные вопросы об объектах виртуального мира, их параметрах, взаимном расположении и так далее. Также пользователь может попросить SHRDLU переместить те или иные блоки, для чего SHRDLU оснащён виртуальным манипулятором.

SHRDLU был написан на языке программирования Micro-Planner — подмножестве языка PLANNER Карла Хьюита, инкорпорированном в Lisp усилиями Сассмана, Винограда и Юджина Чарняка[1]. В качестве аппаратной платформы использовался компьютер DEC PDP-6, оснащённый графическим терминалом. Позднее в лаборатории компьютерной графики Университета Юты было разработано дополнение к программе, обеспечивающее трёхмерный рендеринг «мира» SHRDLU.

Вот пример диалога человека со SHRDLU:

Человек: Возьми большой красный блок.

SHRDLU: ОК.

Человек: Хватай пирамиду.

SHRDLU: Я не понимаю, какую именно пирамиду вы имеете в виду.

Человек (передумав): Найди блок, который выше, чем тот, который ты держишь, и помести это в коробку.

SHRDLU: Я предполагаю, что под словом «это» вы подразумевали блок, который выше, чем тот, который я держу.

SHRDLU: ОК.

Человек: Что лежит в коробке?

SHRDLU: Голубая пирамида и синий блок.

Человек: Что находится под пирамидой?

SHRDLU: Коробка.

Человек: Сколько блоков не в коробке?

SHRDLU: Четыре.

Человек: По крайней мере один из них уже, чем тот, который я сказал тебе взять?

SHRDLU: Да, красный куб.

Человек: Под ним что-то находится?

SHRDLU: Да, стол.

Даже сейчас такого рода демонстрация выглядит весьма впечатляющей.

В начале 2000-х гг. группа энтузиастов взялась за «воскрешение» SHRDLU[2]. С одной стороны, система реализована на Lisp (а именно на MACLISP — реализации языка Lisp для операционной системы ITS), языке, который пока что не относится к числу мёртвых языков программирования. Однако всё затрудняло использование Micro-Planner, поскольку его оригинальная версия содержала ряд указателей на состояния ITS (в виде разбросанных по коду числовых констант). Некоторое представление об операционной системе ITS даёт её название, которое расшифровывается как Incompatible Timesharing System [Несовместимая система разделения времени]. ITS была создана в основном усилиями лаборатории Минского в MIT при некоторой помощи специалистов из Проекта MAC. Название являлось пародией на название системы CTSS (Compatible Time-Sharing System, Совместимая система разделения времени), также разработанной в MIT. По прошествии лет проблема несовместимости дала о себе знать, поскольку разбросанные по коду программы указатели утратили свою актуальность по мере изменений, вносимых в код операционной системы. В итоге, по воспоминаниям Вогана Пратта, уже к 1974 г. SHRDLU «стала жертвой серьёзного гниения [rot] программного обеспечения». Проект был основой диссертации Винограда и после успешной защиты оказался на многие годы заброшен. Впрочем, в итоге нелёгкий труд могущественных компьютерных некромантов увенчался успехом, и сегодня пообщаться со SHRDLU (как в виде простого чата, так и с графическим сопровождением) может любой желающий. В общем, как принято шутить у нас в 2021 г.:

Воин: Клянусь честью, что жестоко отомщу за смерть брата!

Эльф: С тобой будет мой лук!

Гном: И мой топор!

Некромант: И ТВОЙ БРАТ[3].

Если вы пролистаете огромный (почти 500 килобайт) исходный код SHRDLU, то обнаружите, что он состоит из множества хитроумных правил и условий, предназначенных для интерпретации различных видов предложений естественного языка.

Чтение правил позволяет оценить, насколько изощрённая логика была заложена автором в его систему и какой большой труд был проделан им в процессе разработки. По всей видимости, Виноград провёл уйму экспериментов, чтобы учесть все возможные нюансы, которые могут возникать в ходе диалога. Секрет видимой разумности SHRDLU в том, что его виртуальный мирок очень маленький, он может быть описан с использованием всего около 50 понятий. В случае такого крохотного мира, чтобы создать у пользователя ощущение интеллектуального поведения системы, достаточно разветвлённой и хорошо отлаженной системы правил. Однако по мере роста числа объектов среды, в которой действует интеллектуальный агент, сложность отношений между ними растёт ещё быстрее. Точно так же, как авторы шахматной программы «Пионер» не смогли обуздать сложность мыслительных процессов, стоящих за игрой шахматных профессионалов, создатели сложных сценарных диалоговых систем неизбежно натыкаются на сложность разговорной логики и самой предметной области во многих практических задачах. По мере дополнения сценариев новыми правилами сами сценарии становятся всё менее надёжными и управляемыми. Индустрии были нужны новые инструменты для обуздания этой сложности, и, благодаря многолетним усилиям исследователей, в один прекрасный момент они появились.

  1. Sussman G. J., Winograd T., Charniak E. (1971). Micro-Planner reference manual. Artificial Intelligence Memo No. 203A (Updates 203) // ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-203a.pdf
  2. SHRDLU resurrection (2019) // http://maf.directory/misc/shrdlu.html
  3. Товарищ Силоч (@comrade_siloch) (2020) / Twitter // https://twitter.com/comrade_siloch/status/1217102334376976384
Loading comments...