Текст
                    г
555
В МИРЕ НАУКИ И ТЕХНИКИ
Реальность и прогнозы искусственного интеллекта
РЕАЛЬНОСТЬ
U ПРОГНОЗЫ
ИСКУССТВЕННОГО
ННТЕЛЛЕКТП
♦
ИЗДАТЕЛЬСТВО |\/||/|Р МОСКВА

РЕАЛЬНОСТЬ И ПРОГНОЗЫ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА
Roger Schank, Larry Hunter THE QUEST TO UNDERSTAND THINKING John R. Anderson, Brian J. Reiser THE LISP TUTOR W. Lewis Johnson, Elliot Soloway PROUST Patrick H. Winston THE LISP REVOLUTION Car! Hewitt THE CHALLENGE OF OPEN SYSTEMS Dana H. Ballard, Christopher M. Brown VISION Geoffrey E. Hinton LEARNING IN PARALLEL NETWORKS Jerome A. Feldman CONNECTIONS John K. Stevens REVERSE ENGINEERING THE BRAIN Robert H. Michaeisen, Donald Michie, Albert Boulanger THE TECHNOLOGY OF EXPERT SYSTEMS Beverly A. Thompson, William A. Thompson INSIDE AN EXPERT SYSTEM Michael F. Deering ARCHITECTURES FOR Al Marvin Minsky COMMUNICATION WITH ALIEN INTELLI- GENCE
В мире науки и техники РЕАЛЬНОСТЬ И ПРОГНОЗЫ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА Сборник научно-популярных статей Перевод с английского под редакцией канд. техн, наук В. Л. Стефанюка Москва «Мир» 1987
ББК 32.813 Р31 УДК 519.68: 007.5(0.062) Реальность и прогнозы искусственного интеллек- Р31 та: Сб. статей; Пер. с англ./Под ред. и с предисл. В. Л. Стефанюка.— М.: Мир, 1987.—247 с., ил.— (В мире науки и техники) Сборник научно-популярных статей из американского журнала Byte, написанных видными специалистами США, Англии, Канады. Затрагивает- ся широкий круг вопросов из области искусе I венного интеллекта: фундаментальные проблемы создания искусственного интеллекта, языки программирования, машинное зрение, биологические прототипы, экспертные системы и т. д. Адресована читателям, интересующимся достижениями современной науки и техники, а также всем, кто по роду своей профессиональной деятельности связан с вычислительной техникой. 1501000000-436 Р---------------2—87, ч. 1 041(01)-86 ББК 32.813 Редакция научно-популярной и научно-фантастической литературы © перевод на русский, язык, «Мир», 1987
Предисловие редактора перевода Попытки человека познать или даже «смоделировать» самого себя уходят корнями в глубокую древность. Можно сказать, что в каком-то смысле именно этим занимались на протяжении веков поэты, художники, мыслители. И во все времена находились люди с техническим воображением, которые пытались решать эти проблемы, создавая всевоз- можные «живые» конструкции. Не отвлекаясь на описание целой череды механических «мышей», «черепах», «уток», которые могли обучаться отыски- вать пищу, обходить препятствия, избегать опасности и т. д. (об этом см., например, в книгах [1, 2]), отметим лишь, что технические решения—хотя они порой и поражали современг ников метким копированием отдельных черточек поведения животных и даже людей — не шли ни в какое сравнение с результатами, которых удавалось достигнуть «гуманитарными методами». Ведь для нас шекспировский король Лир или пушкинский Евгений Онегин—почти реальные люди, и мы редко вспоминаем о том, что это всего лишь модели людей, созданные талантом и наблюдательностью писателя. Научное же познание человека составляло широкое поле деятельности для психологов, медиков, философов. В наши дни в эту работу активно включились технические специалисты. И толчком к таким исследованиям послужило создание компьютера. Разработанный вначале как естествен- ное развитие механического арифмометра, компьютер (от английского compute — вычислять, что в свою очередь основа- но на латинском computare — определять; у нас до сих пор широко используется название ЭВМ, т. е. электронная вычис- лительная машина) в конечном счете обернулся уникальным техническим устройством, способным эффективно обрабаты- вать громадные объемы информации.’ Технические специалисты немедленно усмотрели в этом свойстве компьютера большие возможности для моделирова- ния отдельных функций и поведения в целом человека и 5
животных [3], тогда как «гуманитарии» отнеслись к нему с большой осторожностью. Однако, например, психологи, заин- тригованные феноменальными способностями некоторых лю- дей к запоминанию и устному счету [4], уже давно начали подозревать, что за, казалось бы, ограниченными способно- стями среднего человека скрыты мощные «дедуктивная маши- на» и «машина запоминания». Очевидно, что для исследования этих вопросов традиционных методов (главным образом неза- мысловатых тестов различного характера [5]) недостаточно, и компьютер мог бы оказать здесь существенную помощь. Инженерам вдруг стало ясно, что компьютер открывает путь к моделированию самого интересного (с их точки зрения) в человеке — его интеллекта, причем интеллекта в «чистом виде», что снимает трудности, связанные с реализацией физической системы, несущей интеллект. (По сей день остается нерешенной, скажем, задача моделирования техниче- скими средствами естественных движений руки. Более того, поскольку рука человека включает в себя примерно сотню относительно независимых единиц [6], то вряд ли можно надеяться, что в ближайшем будущем удастся создать модель управления системой, которая более чем на порядок сложнее любого современного робота-манипулятора. Проблема состо- ит не столько в вычислительных трудностях, сколько в отсутствии принципиально новых идей. Известна такая шут- ка: если бы бегущая сороконожка хотя бы на мгновение задумалась, в каком порядке ей следует двигать каждой из ножек, то она так навсегда и застыла бы с поднятой вверх очередной лапкой. Попробуйте хотя бы мысленно проанали- зировать, в каком порядке и в какой степени вы напрягаете различные мышцы тела, подавая мяч при игре в теннис!) Занимаясь моделированием интеллекта, не надо думать об устройстве реальных рук, ног, глаз и т. д. Можно просто писать программы для компьютера, что, несомненно, являет- ся более простым и, главное, легко контролируемым процес- сом. Наконец-то инженеры, казалось бы, могут взять реванш у гуманитариев: достаточно составить сложную программу— и компьютер начнет обыгрывать людей в шахматы, писать за них стихи, принимать в считанные секунды оптимальные решения по важнейшим вопросам и прочее! Новое направление, получившее название «искусственный интеллект» (ИИ), стало одновременно развиваться во многих научных лабораториях мира. С успехами и перспективами его развития в США читателя знакомит настоящий .сборник статей, составленный по материалам американского журнала Byte (апрель 4985 г.). В США главную роль в формировании этого направления сыграли, пожалуй, А. Ньюэлл и Дж. Маккарти. Именно Маккарти ввел в употребление термин 6
«искусственный интеллект» (ИИ), организовав первую конфе- ренцию по этому вопросу в Джорджтаунском колледже в 1956 г. В 1957 г. при его участии была создана лаборатория ИИ в Массачусетском технологическом институте (в насто- ящем сборнике эта лаборатория представлена такими изве- стными именами, как П. Уинстон — ее директор, К. Хью- итт— создатель Плэннера, самого первого языка высшего уровня, и профессор М. Минский — один из пионеров в области искусственного интеллекта). В 1963 г. аналогичная лаборатория начала действовать в Станфордском универ- ситете. Маккарти разработал также язык программирования Лисп, который стал преобладающим языком программирова- ния в области ИИ, Кстати, в трех из статей, вошедших в сборник, этому языку уделяется непосредственное внимание. У истоков третьей крупнейшей лаборатории в США, занимающейся проблемой ИИ (лаборатория Университета Карнеги—Меллона), стоял А. Ньюэлл, который впервые объединил методы программирования и психологии, присту- пив тем самым к созданию «точных» моделей мышления человека в процессе решения им задач. Роль А. Ньюэлла в становлении, развитии и популяризации искусственного ин- теллекта велика: универсальный ^решатель задач, символьные вычисления, действия по образцу, использование порожда- ющих правил—это лишь краткий перечень тех элементов современного ИИ, которые впервые зазвучали в работах А. Ньюэлла и его коллег. (В настоящем сборнике от имени названного университета выступают Дж. Хинтон, Дж. Андер- сон и Б. Рейзер.) Значительный вклад в исследования, связанные с искус- ственным интеллектом, внесли многие из авторов настоящего сборника: М. Минский, П. Уинстон, К. Хьюитт, Дж. Фелдман, Д. Мичи, Р. Шенк. Можно назвать и многих других крупных ученых, работы которых вошли в «золотой фонд» трудов по искусственному интеллекту: Слейгл, Ниль- сон, Виноград и др.; причем практически все книги этих авторов в свое время были переведены на русский язык. Однако мы не ставим здесь целью дать полный историче- ский очерк развития исследований в области искусственного интеллекта. Нам важно лишь отметить, что популярность этого направления на протяжении всех 20—30 лет с момента его возникновения непрерывно возрастала [7, 8]. О необычайной привлекательности этого направления для ученых и «деловых людей» говорит .беспрецедентное число участников (пять тысяч) очередной Международной объеди- ненной конференции по искусственному интеллекту, состояв- шейся в 1985 г.’ в США. (Большое число участников собрала и 7
аналогичная конференция, проходившая в 1975 г. в нашей стране, в Тбилиси. В частности, из США в ней участвовали почти все из перечисленных выше ученых, а также многие другие.) Исследования в области искусственного интеллекта в значительной степени носят экспериментальный характер, где под экспериментом понимается проверка работы вариантов программы для компьютера при решении конкретных задач. М. Минский, в частности, считает, что искусственный интел- лект, как всякая новая область науки, должен выработать свой «язык», и этим языком у него являются не формулы, а программы. Писать же программы, например, на языке Лисп не только не трудно, но и увлекательно (см. статью «Лисп совершает революцию»), поэтому легче сразу создать действующий вариант системы, чем, предварительно продумав такую систе- му, очертить границы ее применимости. Немного интуиции, увлекательный (хотя и весьма длительный) процесс програм- мирования— и вы получаете наглядную демонстрацию «ин- теллектуальной» программы, а подчас и очень полезную для практики систему. Попробовав эту систему в работе, вы можете при необходимости внести в программу какие-то изменения, повторяя затем этот цикл столько раз, сколько потребуется. Правда, в последние десять лет выяснилось, что подчас нужно не «немного интуиции» (этого порою недостаточно для создания практически полезной системы), а громадный запас знаний о рассматриваемом предмете, которых в готовом виде нет,— поэтому цикл реализации систем существенно удлиня- ется. Заметим, что создание систем, полезных для решения практических задач,— это не только стимулирующий фактор для прогресса в области искусственного интеллекта, но и оправдание весьма серьезных затрат, поскольку работы в области ИИ требуют и мощной вычислительной техники, и развитого математического, т. е. программного обеспечения. Но вместе с тем некоторые ученые, в частности такой крупный специалист, как Р. Шенк (см. статью «Познать механизмы мышления»), считают, что создание прикладных систем—самостоятельная трудная задача, которая подчас отвлекает ученого от «фундаментального» направления в ИИ, заключающегося, по мнению Шенка, в использовании компьютеров для познания механизмов мышления человека. Решая эту главную задачу, мы получим возможность справить- ся с гораздо, более важными и сложными прикладными задачами, которые неразрешимы .существующими методами. На сегодня особенно ярким примером «прикладного на- 8
правления» в ИИ являются экспертные системы; в сборнике они представлены статьями Р. Майклсена, Д. Мичи, А. Бу- ланже и Б. Томпсона, У. Томпсона. Эти статьи хорошо дополняют друг друга. Во второй из них работа экспертной системы описывается буквально «на пальцах», тогда как в первой рассматриваются различные проблемы, возникающие при попытках ввести в экспертную систему компоненты глубокого, а не поверхностного рассуждения в конкретной предметной области. В настоящее время только в США создано более 150 экспертных систем [8], среди которых особенно известна система Проспектор, предназначенная для поиска месторож- дений полезных ископаемых по данным геологической развед- ки. Эта система помогла открыть месторождение молибдена в одном из штатов США, оцениваемое в 100 млн. долларов. Сегодня экспертные системы, находясь буквально в штате медицинских учреждений, без труда справляются с зада- чами медицинской диагностики, в течение нескольких ми- нут выбирают оптимальную конфигурацию сложного вычис- лительного комплекса, помогают людям в решении многих других трудных и важных проблем [10, 11]. Экспертные системы не единственное прикладное направ- ление в искусственном интеллекте. Так, в последнее время методы ИИ стали активно применяться для создания автома- тических «учителей», что позволяет обеспечить индивидуаль- ное обучение каждого студента. О действующих системах такого рода рассказывают две статьи настоящего сборника («Учитель Лиспа» и «PROUST»), авторы которых многие годы работали в области психологии машинного преподавания. В связи с поставленной в нашей стране задачей «компьютериза- ции» обучения эти две статьи представляют для советского читателя особый интерес. Весьма плодотворным оказалось активное сотрудничество специалистов по искусственному интеллекту и создателей новой вычислительной техники. Можно сказать, что именно в этой области достигнуты наиболее значительные успехи, хотя «авторство» в таком симбиозе трудно поделить. Говоря о достижениях в области искусственного интеллек- та, нельзя обойти вниманием и «самоусовершенствующуюся» программу Эвриско Д. Лената [12], которая, в частности, открыла неожиданные для инженера трехмерные, а не плоские, логические вентили, что значительно расширяет возможности СБИС (сверхбольших интегральных схем) — элементов вычислительных машин. В общем можно с уверен- ностью сказать, что искусственный интеллект уже сейчас приносит ощутимые практические результаты. Несмотря* на популярность исследований в области искус- 9
ственного интеллекта и заметные успехи в его приложениях, некоторые ведущие специалисты в последнее время выража- ют определенную озабоченность [13]. В частности, они задаются такими вопросами: насколько глубоко за все эти годы удалось проникнуть в суть процессов мышления (см. статьи «Познать механизмы мышления» и «Сетевые модели»); насколько мы готовы работать в действительно реальной ситуации, когда конкретную задачу не удается полностью вычленить из множества других задач и рассматривать совершенно изолированно (см. статью «Открытые системы»); могут ли искусственные системы хоть в какой-то степени соперничать с биологическими (статьи «Зрение: биоло- гия бросает вызов технике» и «Перспективы нейроинжене- рии»). Некоторые участники упомянутой выше конференции по искусственному интеллекту 1985 г. отмечали, что среди лиде- ров направления явственно ощущается неудовлетворенность состоянием дел. Не исключено, что потребуется некоторая перестройка, быть может, новые организационные формы работы в области искусственного интеллекта. Но несмотря на все сложности и нерешенные проблемы, безусловно одно: искусственный интеллект—это не> сложившийся натюрморт, а живая наука, которая уже принесла ощутимые результаты, но возможности которой еще далеко не исчерпаны. В целом можно утверждать, что предлагаемый вниманию советского читателя сборник статей довольно полно рисует современную ситуацию в области искусственного интеллекта и намечает перспективы дальнейших исследований. К сожале- нию, ориентируясь на американского читателя, авторы обош- ли вниманием работы большинства европейских и тем более советских специалистов. Однако советские исследования в области моделирования мышления сыграли важную роль еще на этапе становления исследований по искусственному интел- лекту. Следует отметить, что первый язык программирования для компьютеров был создан советским ученым А. А. Ляпу- новым, в нашей стране был создан язык Рефал — в каком-то отношении аналог языка Лисп. Глубокие исследования совет- ских специалистов по машинной лингвистике получили миро- вое признание. Основополагающие работы по распознаванию образов, развитием которых можно считать экспертные си- стемы, были выполнены в Советском Союзе М. М. Бонгар- дом, Э. М. Браверманом, а также многими их коллегами и последователями. Оригинальное направление «ситуационного управления», разработанное Д. А. Поспеловым, не имеет ана- логов в зарубежной науке. Нельзя также не упомянуть важное направление коллективного поведения автоматов М. Л. Цетлина. (Кстати, некоторые из задач, сформулирован- 10
ных М. Л. Цетлиным 25 лет назад, только сейчас поставлены авторами ряда статей настоящего сборника.) Как правило, статьи сборника состоят как бы из трех частей: введения в проблематику, волнующую автора, демон- страции на примерах полученных результатов и самокритич- ной оценки достижений и возможных перспектив развития. В общем, если не вдаваться в отдельные технические детали, статьи можно считать в достаточной степени популярными. Вместе с тем сами эти детали описываются настолько наглядно и упрощенно, что вдумчивый читатель, безусловно, в состоянии их понять. Если некоторые статьи все же покажутся слишком слож- ными, вспомните, что речь здесь идет либо о последних достижениях, либо о том, что еще предстоит сделать: поэтому иные понятия еще «не устоялись», а утверждения не всегда логически строго обоснованы. Знакомясь с этими статьями, читатель как бы попадает в творческую лаборато- рию ученого, который с энтузиазмом пытается поведать ему о своих поисках и экспериментах, поделиться своими сомне- ниями и надеждами на будущее. Мы надеемся, что настоящий сборник статей будет с интересом встречен советскими читателями и принесет нема- лую пользу, особенно сейчас, когда в нашей стране остро поставлены проблемы развития вычислительной техники и информатики. Тем, кто пожелает глубже познакомиться с рассматриваемыми проблемами, мы предлагаем небольшой список дополнительной литературы. В. Стефанюк 1. Гаазе-Раппопорт М. Г. Автоматы и живые организмы.— М.:. Госфизматгиз, 1961. 2. Эндрю А. Искусственный интеллект.— М.: Мир, 1985. 3. Шеннон К. Работы по теории информации и кибернетике.— М.: ИЛ, 1959. • 4. Лурия А. Р. Маленькая книжка о большой памяти.— М.: Изд-во МГУ, 1968. 5. Зейгарник Б. В. Патология мышления.— М.: Изд-во МГУ, 1962. 6. Бернштейн Н. А. Очерки по физиологии движений и физиологии активности.— М.: Медицина, 1966. 7. Поспелов Д. А. Фантазия или наука. На пути к искусственному интеллекту.— М.: Наука, 1982. 8. Поспелов Г. С., Поспелов Д. А. Искусственный интеллект— прикладные системы.— М.: Знание, 1985. 9. Дрейфус X. Чего не могут вычислительные машины.— М.: Прог- ресс, 1979. 10. Алексеева Е. Ф., Стефанюк В. Л. Экспертные системы — состояние и перспектива.— Известия АН СССР, Техническая кибернетика, 1984, № 5, с. 153 —167. 11
11. Хейес-Рот Ф., Уотерман Д., Ленат Д. Построение экспертных систем (планируется к выпуску в изд-ве «Мир» в 1987 г.). 12. Мичи Д. Компьютер — творец (планируется к выпуску в изд-ве «Мир» в 1987 г.). 13. Поспелов Д. А., Стефанюк В. Л. Состояние зарубежных работ по искусственному интеллекту. Информационные материалы № 3.— М.: Изд-во Совета по комплексной проблеме «Кибернетика» АН СССР, 1986.
От составителя Вообразите, что однажды утром вы просыпаетесь с ощущением, будто ваш мозг пополнился еще одной долей. Эта незримая дополнительная доля головного мозга отвечает на ваши вопросы, сообщая информацию, с которой не под силу справиться вашей собственной памяти, предлагает вари- анты разумного образа действий, а порой задает вопросы, пытаясь уяснить какие-то важные для дела факты. Вскоре вы настолько привыкаете к существованию новой части мозга, что перестаете задумываться над тем, как она работает. Всё это мечта тех, кто занимается искусственным интеллектом. Предлагаемая вниманию читателя подборка статей, среди авторов которых немало известных имен, знакомит с состо- янием дел в этой интригующей области науки. И хотя искусственный интеллект как дополнительная доля мозга пока остается лишь далекой мечтой, некоторые из представ- ленных здесь статей показывают, что он уже занял прочное место в персональном компьютере. Если мы хотим понять, что такое искусственный интел- лект, то прежде всего нам следует разобраться в том, что такое интеллект вообще. Марвин Минский из Массачусетско- го технологического института (США) анализирует саму концепцию интеллекта, рассматривая вопрос о том, сможем ли мы общаться с внеземным интеллектом, если нам когда- нибудь доведется с ним встретиться. Роджер Шенк и Ларри Хантер из Йельского университета (США) обращаются к исследованию Некоторых принципиальных структур, которые необходимы для выполнения на компьютере операций, столь обыденных для разума человека. Сфера вычислений и программирования—-одна из первых научных областей, где результаты разработок по искусствен- ному интеллекту нашли полезное применение. Джон Андерсон и Брайен Рейзер из Университета Карнеги—Меллона (США) описывают интерактивную программу на языке Лисп, которая способна обучать людей искусству программирования на этом 13
языке. Льюис Джонсон и Эллиот Солоуэй из Йельского университета подробно объясняют работу своей программы (также написанной на Лиспе), которая отыскивает несинтакси- ческие ошибки в студенческих программах на языке Паскаль. Для создания эффективно действующего искусственного интеллекта на персональном компьютере требуются соответ- ствующие аппаратная и программная базы. Майкл Диринг из фирмы «Шламбергер ресерч» (США) дает обзор некоторых специальных вычислительных архитектур, предназначенных для искусственного интеллекта. Отмечая широкое применение языка Лисп на персональных компьютерах. Патрик Уинстон из Массачусетского технологического института вводит чита- теля в мир этого языка. Карл Хьюитт, создатель одного из первых языков логического программирования, ставит вопрос о том, можно ли с помощью логического программирования создать интеллектуальные системы, которые оказались бы полезными при решении сложных практических задач. Дана Баллард и Кристофер Браун из Рочестерского университета (США) показывают, что удивительные способ- ности зрительной системы человека и животных обусловлены использованием иерархического представления информации и параллельной обработки данных. Последняя проблема анали- зируется в статье Джефри Хинтона из Университета Карне- ги— Меллона, где рассматриваются две теории, связанные с обучением в сетях, напоминающих структуру мозга. Джером Фелдман из Рочестерского университета тщательно исследует ключевые проблемы организации параллельной обработки данных в естественном и искусственном интеллектах. Джон Стивенс из университета г. Торонто (Канада) глубоко и интересно анализирует возможность прямого копирования нейронных схем, лежащих в основе работы мозга. Начав с описания физических принципов работы элементов мозга, автор приходит к обсуждению соответствующих микросхем на кремниевой основе. Касаясь методов построения экспертных систем, Роберт Майкл сен, Доналд Мичи и Альберт Буланже (США, Великоб- ритания) описывают как подход с применением правил, так и подходы, опирающиеся на более глубокие представления совокупности знаний. Беверли и Уильям Томсоны (США) рассказывают о структуре конкретной экспертной системы, использующей язык Паскаль, в которой знания представлены в форме правил. Фил Леммонс,' главный редактор журнала Byte
Познать механизмы мышления Роджер Шенк, Ларри Хантер Область науки, называемая «искусственный интеллект» (ИИ), занимается изучением самых таинственных вопросов человеческого существования. Какова природа мышления? Какие процессы происходят в нашем организме, когда мы думаем, чувствуем, видим, понимаем? Возможно ли в принци- пе понять, как работает наш мозг? На протяжении тысячеле- тий человек задавался этими вопросами, но до сих пор мы не можем ответить на них сколько-нибудь определенно. Исследования в области искусственного интеллекта воору- жили нас новым средством для изучения этих вопросов — компьютером. Каждый, кому приходилось иметь дело с ЭВМ, согласится, что часто машина порождает больше проблем, нежели решает. Однако для исследования процесса мышления это только полезно. ЭВМ помогает нам понять суть процессов познания прежде всего тем, что дает возможность проверить теорети- ческие предположения о том, как работает мозг. Теории такого рода обычно строятся как описания происходящих процессов. Например, пытаясь понять, как человек получает ответ на вопрос, можно предположить, что при этом вопрос сначала переводится во «внутреннее представление»; затем, пользуясь этим «внутренним представлением» как своего рода указателем, человек находит в памяти нужную информацию, преобразует ее в форму, удобную для ответа, после чего переводит в слова (эту модель не следует рассматривать как пример реальной теории процесса построения ответа—она лишь иллюстрирует такие теории деятельности мозга, кото- рые опираются на понятие процесса). Казалось бы, подобные описания достаточно хорошо отражают процессы, которые, возможно, происходят в созна- Перепечатано с разрешения журнала Byte, апрель 1985 г. Copy- right © by McGraw-Hill, Inc., New York 10020. Все права сохраняют- ся. 15
нии. Однако то, что на первый взгляд выглядит вполне удовлетворительным описанием, на деле, как правило, оказы- вается весьма несовершенным. Разве процессы, связанные с запоминанием какого-либо факта, можно прояснить фразой: «... пользуясь внутренним представлением как указателем, находят информацию, хранящуюся в памяти...»? Как факты вызываются из памяти? Как эта память организована? Как мозг справляется с огромными объемами информации? А что происходит, если какой-то факт сам по себе не хранится в памяти, а выводится из имеющейся в ней информации? Если программист попытается написать программу на такой прими- тивной теоретической основе, как в приведенном примере, то немедленно столкнется со всеми названными и многими другими вопросами. Поэтому и полезно писать программы: они требуют четкости изложения, а это в свою очередь побуждает нас углублять теоретические представления. Совсем недавно основное внимание ученых (в том числе и авторов данной статьи) в области искусственного интеллекта было направлено на то, что считалось проявлением высокого интеллекта, а именно на игру в шахматы, доказательство теорем, решение сложных логических головоломок и т. д. Много сил было потрачено на создание эффективных прог- рамм для решения такого рода «интеллектуальных» задач. Однако вскоре обнаружилось, что разработанные методы не похожи на те, которыми в действительности пользуются люди при решении подобных задач1. И теперь ученые занялись исследованием таких вещей, которые любому взрос- лому человеку кажутся тривиальными: использование языка, обращение к «здравому смыслу», умение учиться на собствен- ном опыте. 1 Исторически это не совсем верно, поскольку при постановке указанных здесь задач с самого начала и не пытались скопировать методы, которыми пользуется для их решения человек. Наоборот, исследования велись в надежде, что чисто машинные методы искус- ственного интеллекта окажутся более сильными: ведь с вычислитель- ными задачами ЭВМ справляется гораздо лучше человека. Накопленный опыт показал, однако, что во многих интеллекту- альных задачах превзойти человека пока не удается, несмотря на использование самой передовой вычислительной техники. Это одна из причин, объясняющая, почему интерес ученых из области искус- ственного интеллекта переключился на такие обыденные для челове- ка вещи, как <язык, здравый смысл и обучение, и на методы, к которым человек прибегает при решении различных проблем.— Прим. ред. 16
Язык Изучение вопроса о сущности мышления мы начали с попытки написать программу, в которой мог бы использовать- ся английский или любой другой «естественный» язык. Нам хотелось, чтобы эта программа могла понимать напечатанное слово, т. е. выяснять его смысл, переводить его на другой язык и отвечать на различные вопросы, касающиеся этого слова. Однако мы тотчас заметили, что люди обычно понима- ют гораздо больше непосредственного лексического значения слова. Например, большинство людей не сомневаются, что предложение «Джон купил машину» имеет отношение к деньгам, хотя слово «деньги» в нем отсутствует. Следователь- но, любая программа, способная понять смысл данного предложения, должна ответить «да» на вопрос: «Потратил ли Джон деньги?». Но каким образом программа может узнать это? Один способ сообщить программе такую информацию заключается в том, чтобы связать слово «деньги» со словом «купил», т. е. программа должна знать, что «покупать» это значит «тратить деньги на что-либо». При таком подходе смысл предложения складывается из смысла входящих в него слов. В общем это верно, но возникает и ряд трудностей. Во-первых, слова могут иметь неоднозначный смысл, что часто приводит к неправильным выводам о смысле предложения. Например, слово «покупать» не всегда означает, что какие-то деньги переходят из рук в руки, как, скажем, это имеет место в предложении «Джон купил свою свободу ценою измены». Неоднозначность слов — столь частое явление, что любая программа должна иметь средства для ее разрешения. Еще одна трудность связана с тем, что скрытый смысл не вытекает из определений слов, взятых из словаря. Рассмот- рим такой короткий рассказ: «Джон пришел в кафе. Он заказал сандвич. Официант быстро принес его, поэтому он дал большие’ чаевые». Из рассказа ясно, что Джон съел сандвич и заплатил за него. Но ведь эти действия не вытекают ни из одного употребленного в рассказе слова. Как же может машина сделать такой вывод? Для этого ей необходимо сообщить сведения о том, что обычно люди делают в кафе. Человек, прослушав этот рассказ, может, кроме того, сказать, что Джон, вероятно, сел за стол, просмотрел меню, что на кухне приготовили сандвич и т. д. Программа должна быть способна заполнять пропуски в тексте заложенной в ней информацией об описываемых событиях. Обе задачи решаемы; для этого программе нужно посто- янно строить прогноз относительно дальнейшего хода собы- 17
тий. Ведь у людей неоднозначность почти никогда не вызыва- ет затруднений, так как из контекста ясно, какое значение слова подходит в том или ином конкретном случае. Чтобы справляться с неоднозначностью, программе также придется строить «контекст». Другими словами, программа должна предвидеть последующий ход событий на основании того, что уже произошло, и того, что она знает о подобных ситуациях. Прогнозы подсказывают не только дальнейшие события, но и смысл слов; например, фраза «Бармен плеснул виски на лед» однозначно определяет смысл слова «лед»: в данном случае подразумевается, что это кубики льда в стакане. Прогноз помогает восполнять пропуски в рассказе. Обыч- но мы прогнозируем сразу много вещей. Когда в рассказе упоминается кафе, мы ожидаем, что речь пойдет об опреде- ленном наборе объектов, событий, людей. Программисты называют это пакетом ожиданий. В нашем рассказе он включает меню, клиента, который просматривает меню, что-то выбирает и заказывает официанту, затем ждет испол- нения заказа, ест, после чего со стола убирают и приносят чек; клиент оплачивает чек, оставляет чаевые и уходит. Из приведенного примера видно, что пакет ожиданий вызывается программой в нужном месте анализа текста, помогая ей сделать вывод о том, что «Джон съел сандвич». Если ожидание оправдалось, программа делает и другой вывод — что предыдущие ожидания, вероятно, тоже оправдались. Знания об обычном ходе событий помогают людям прогнози- ровать свое поведение и поведение других людей. Невозмож- но понимать язык без того, чтобы хоть что-то не знать об описываемых событиях. Для создания программы, позволяющей проверить эти идеи, необходимо точно выяснить, какие бывают ожидания и как они используются людьми. Мы начали с изучения поведения. Люди постоянно делают прогнозы на различных уровнях детализации. Прогнозируем, какой слог будет произ- несен следующим, достраивая отдельные неясные звуки до однозначно понимаемого слова. С учетом лексики строим прогнозы относительно того, какие слова или классы слов должны быть сказаны. Мы прогнозируем наступление наибо- лее вероятных событий; строим множество прогнозов по различным поводам: о целях других людей, планах и контр- планах, которые они разрабатывают на пути достижения своих целей, об эмоциональных реакциях на события. Затем мы стали думать, как же все это организовать в программе. В каком-то смысле любая традиционная програм- ма, анализирующая естественный язык, тоже строит прогноз. Разница между традиционным, строго синтаксическим, анали- затором и нашим, концептуальным,— в источнике прогноза. 18
Синтаксический анализатор использует только знания о грам- матике, тогда как концептуальный черпает информацию из многих источников, в том числе и из грамматики языка. Для традиционного анализатора синтаксический анализ предше- ствует всем другим видам анализа, а в нашем анализаторе текст одновременно подвергается обработке по нескольким линиям анализа. Многие прогнозы, а именно прогнозы низкого уровня, берутся из словаря, дающего значения слов. Некоторые из наших программ (см. [1]) представляют значения слов с помощью концептуальных зависимостей (КЗ). Основная структура КЗ такова: в ней имеются слоты1 для хранения действий, действующих лиц, объектов и для компонентов направления («к» или «от»). Каждое действие в КЗ наклады- вает семантические ограничения на элементы, которыми можно заполнять слоты КЗ. Например, действие «есть» требует, чтобы объект был съедобный, а действующее лицо — одушевленным. Когда в тексте появляется какой-либо синоним, обозначающий это действие, слушающий ожидает узнать о чем-то съедобном (обычно после слова, обознача- ющего действие «есть») и об одушевленном действующем лице (обычно перед этим словом). Обратите внимание, что порождаемые КЗ ожидания имеют как семантический (прог- ноз значения слова), так и синтаксический (прогноз, где это слово может встретиться в предложении) характер. Но даже на уровне действия в структуре КЗ может возникнуть неоднозначность. В этом случае программа сохраняет все ожидания и затем выбирает из них то действие, при котором выполняются ожидания для других слов в рассказе. Этот же метод позволяет различать два значения слова «купил» в приведенном ранее примере, где слово «купил» порождает два множества ожиданий: одно, относящееся к рыночному това- ру, а другое — к ценной, но уже в переносном смысле, категории, товаром не являющейся. Как только удовлетворя- ется одно такое множество ожиданий, второе программа перестает рассматривать. Есть и другие способы разрешения неоднозначности. Более сложные схемы прогноза значительно информативнее. Вернемся опять к рассказу о посещении кафе: «...Официант быстро принес его, поэтому он дал большие чаевые». В этом тексте встречается неоднозначное местоимение «он». Стан- дартные правила соотнесения местоимения со значимыми частями речи здесь не помогают: во-первых, число и род у 1 Слот—это распространенный в специальной литературе тер- мин, обозначающий ячейку, отведенную в формальной схеме, в которую предполагается заносить информацию вполне определенного типа.— Прим.' ред. 19
всех существительных, которые могут претендовать на соот- несение с этим местоимением, одинаковы; во-вторых, мы понимаем, что «он дал» говорится не об официанте, хотя, согласно стандартным правилам, местоимению обычно припи- сывают значение ближайшего в тексте существительного, имеющего тот же род и используемого в том же числе. Единственное, что подсказывает нам правильное понимание этого местоимения,— это ожидание, указывающее, что кли- ент обычно оставляет чаевые обслуживающему персоналу. Можно было, конечно, пойти другим путем и связать эту информацию со словом «чаевые», но понятия «клиент» и «обслуживающий персонал» не являются хорошими семанти- ческими ограничениями для значений соответствующих сло- тов, так как в одной ситуации Джон может быть клиентом, а в другой — обслуживать кого-то. Ожидания «клиент— обслуживающее лицо — чаевые» и идентификация Джона как клиента на самом деле следуют из пакета ожиданий, касающе- гося кафе. Начав использовать в программах пакеты ожиданий, мы обнаружили следующее. Во-первых, любые рассказы о жизненных ситуациях адресуются одновременно ко многим пакетам, и между этими пакетами существует множество связей. Пакеты объединяются в группы (например, «свида- ние» = «поездка», «ресторан», «поездка», «кинотеатр», «поезд- ка»); они могут заполнять слоты в других пакетах (например, слот «оплачиваемая работа» в пакете «ресторан» заполняется действием «мытье посуды»). Действия могут протекать однов- ременно (скажем, «есть» и «лететь в самолете») или, наобо- рот, быть несовместимыми («ехать в машине» и «лететь в самолете»). Пакеты могут иметь прямую связь со значениями слов. В пакете «ресторан» слово «чай» в сочетании «на чай» имеет совсем другое значение, чем название напитка. Эти связи, впрочем, не решают полностью проблемы неоднознач- ности, но могут быть весьма полезными. Метод пакетов порождает свои трудности. Каким образом программа решает, какой пакет следует вызвать в каждом конкретном случае? Для этой цели каждый пакет характери- зуется определенными условиями активации, т. е. условиями, при которых он считается относящимся к текущей ситуации. Наши первые программы просто перебирали все пакеты в поисках подходящего условия. Когда число пакетов суще- ственно увеличилось, нам пришлось усовершенствовать их организацию, ибо стало невозможным перебирать*все пакеты, чтобы в нужный момент отыскать соответствующий; Когда мы стали давать нашим программам реальные сообщения о событиях (телёграфные сообщения агентства ЮПИ), обнару- жилось, что иногда ожидания оказывались неверными, при- 20
чем часто такие неудачи соответствовали очень интересным событиям. Мы стали сравнивать эти «неудачи» с теми, когда ожидания вообще не удавалось найти, поскольку программа не могла сделать никакого прогноза по тексту. Еще одна проблема заключалась в том, какую информа- цию можно выбрать в качестве пакета, а какую — нет. Так, например, в ситуации «еда дома» многое совпадает с ситу- ацией «еда в кафе». Поэтому не ясно, стоит ли сводить эти ситуации в один сценарий или хранить в разных? А что можно сказать о еде в разных кафе и ресторанах? Нам была нужна теория, которая позволяла бы организовывать и выявлять группы ожиданий. Короче говоря, чтобы создать программу, которая могла бы читать небольшой текст из нескольких предложений и отвечать на вопросы по этому тексту, мы начали с изучения языка. Вскоре мы обнаружили, что для наших целей следует строить ожидания, касающиеся существа вопроса, о котором идет речь. Эти ожидания основываются на различных источ- никах и объединяются в пакеты. Здесь перед нами встали вопросы: что помещать в эти пакеты, как их организовать и как ими пользоваться? То, что начиналось как изучение языка, постепенно превратилось в теорию познания и органи- зации знаний, т. е. по существу в исследование памяти. Память Как создается прогноз? Как мы узнаём, что должно произойти потом? Чтобы понять, что последует дальше, мы используем наш прежний опыт. Новорожденные не понимают рассказов о кафе и ресторанах, а люди, которые там работают, могут увидеть очень многое за каким-то, казалось бы, незначительным фактом. Все увиденное мы кодируем в уже известных понятиях. Вот почему два человека, будучи свидетелями одного и того же события, могут трактовать его по-разному: каждый из них опирается на свои знания и пакеты ожиданий. Наша способность понять и оценить Ситуацию вытекает из способности сравнивать ее с соответ- ствующими прежними ситуациями. Знания, полученные из опыта (так называемая ситуативная память), которые мы используем и для понимания, т. е. для семантической памя- ти,— это как раз те знания. Какое отношение все это имеет к нашим пакетам ожида- ний? Во-первых, как оказалось, такие пакеты позволяют эффективнее хранить информацию об отдельных эпизодах. Вместо того чтобы фиксировать каждый момент случившего- ся события, программа должна просто указать на прототип (например, «в кафе») и, кроме того, содержать те элементы 21
информации, которых в пакете не было (например, то, что клиента звали Джон, что пищей был сандвич, что чаевые были большими). Память регистрирует лишь те данные, которыми эпизод отличается от прототипа. Поскольку пакеты содержат то, что мы ожидаем от ситуации, они служат ее прототипом и эффективным способом организации памяти о событиях. Таким образом, пакеты ожиданий выполняют еще одну роль: это не только ожидания, нужные для понимания, но и память о совершившихся событиях. Если пакеты должны выполнять функцию памяти, а не только служить для анализа текстов, то они должны удовлет- ворять некоторым дополнительным требованиям. Самое глав- ное— структура памяти должна быть динамической. Нужно иметь возможность менять ее с накоплением опыта. Память, которая не реагирует на новые входные данные и не учится на опыте, нерезультативна. Во-первых, память, построенная на основе системы ожиданий, должна быть способна реагиро- вать на неудачу прогноза и реорганизовать себя так, чтобы в дальнейшем давать более точные прогнозы. Во-вторых, систе- ма памяти должна уметь находить любые хранящиеся в ней сведения. Это не так просто, как кажется на первый взгляд. Задача памяти — найти события, связанные с данным событи- ем. Но что значит «связанные» события и где их искать? Эти две цели (запоминание и обучение) — основные в наших теоретических исследованиях структуры памяти. Очень важ- но понять, как строится наше знание и как оно меняется. Люди располагают мощным механизмом, с помощью которого можно исследовать структуру памяти,— ассо- циативным воспоминанием. Это обычное явление: люди все- гда вспоминают одни вещи по ассоциации с другими. Что-то может напомнить нам другие объекты, людей или ситуации. Разговаривая, люди часто вспоминают предшествующие со- бытия. «Обрабатывая» этот разговор, мозг активизирует память, которая помогает понять сказанное. Тот факт, что одна жизненная ситуация напоминает нам другую, указывает на то, что для запоминания и понимания мы используем одни и те же структуры. Изучая ассоциативную память, мы получаем возможность исследовать структуру памяти. Теперь, познакомив читателя с нашей концепцией структу- ры памяти, мы можем вернуться к примеру о посещении кафе. Предположим: получив счет, Джон обнаружил, что официант ошибочно взял с него слишком много, и указал тому на ошибку в счете. Извинившись, официант не только исправил ошибку, но и предложил Джону бесплатно десерт. Джон (или любая динамическая система памяти, которая пытается понять, что происходит) запомнит это отклонение от ожидаемого течения событий. Если когда-нибудь в даль- 22
нейшем Джон заметит подобную ошибку, скажем при покуп- ке запчастей для автомобиля, то он может по ассоциации вспомнить случай в кафе. И тогда, опираясь на прежний опыт, он будет ожидать от автомагазина компенсации за ошибку. Почему события в магазине напоминают ему собы- тия в кафе? В памяти должны быть структуры, которые используются для понимания обоих этих событий. Кроме того, храня информацию о неоправдавшихся ожиданиях (а также их результатах) в общей структуре, мы автоматиче- ски производим обобщение. Что это дает для понимания организации памяти? Ясно, что не все ожидания в этих двух событиях совпадают. Вряд ли Джон будет ожидать, что в автомагазине ему предложат посмотреть меню или подадут омара на обед. Совпадает следующее: в обоих случаях он будет ожидать, что узнает, какие услуги здесь предлагаются клиенту, сообщит обслужи- вающему персоналу, в чем нуждается, получит желаемое, после чего ему подадут счет, который он оплатит. Некоторые элементы встречаются в одних сценариях и не встречаются в других: например, в автомагазине клиента не будут провожать к столу. Отличия могут быть в специфике одного и того же действия: скажем, в автомагазине клиент знакомится с предлагаемым ассортиментом по каталогам, где запчасти пронумерованы и расположены по маркам машин и годам, тогда как в кафе он просматривает меню. На основании сказанного можно сделать несколько выво- дов о структуре памяти. Пакеты ожиданий сгруппированы гнездовым способом, т. е. имеют подпакеты. В терминологии ИИ пакет принято называть МОП (от англ, memory organizati- on package—пакет организации памяти), а подпакет—сценой. Многие сцены входят в несколько МОПов; примеры сцен: «покупка» и «заказ». Важно отметить, что перечень пакетов ожиданий никогда нельзя считать окончательным. Пакеты, которые использует любая динамическая система организа- ции памяти в каждое конкретное время, зависят от ее предыдущего опыта. МОП содержит информацию о специфи- ческих деталях входящих в него сцен. Эти детали называются «раскрасками»: например, МОП «ресторан» «раскрасит» сцену «оплата», определив приемлемые формы оплаты в ресторане (наличными, в кредит, поденной работой за еду и т. д.). Наличие общих сцен позволяет делать обобщения. Когда ожидания не оправдываются, а их источник входит в общую структуру, то неудача и новые ожидания, построенные на основании этой неудачи, запоминаются данной структурой. При повторении подобной ситуации — даже в другом пакете — прошлая неудача всплывает в памяти, так как она хранится в общей Сцене. Теперь она может использоваться для анализа 23
новых событий. Программа, построенная на основе такой системы, «сообразит» посчитать сдачу в автомагазине, если ее ранее обсчитали в ресторане, поскольку в обоих пакетах есть общая сцена оплаты. Сочетание механизма обучения на собственных ошибках и общих структур памяти очень эффек- тивно. Неоправдавшиеся ожидания могут быть также исполь- зованы для вывода новых МОПов из старых — путем измене- ния «раскраски» или порядка следования сцен (например, в закусочной с самообслуживанием клиент платит до еды). Разработанная нами теория мышления и основанные на ней программы выделяют целый ряд структур, о которых здесь не упоминалось; однако основные принципы организа- ции памяти должны быть теперь ясны. (Более подробно см. в [2, 3].) Пока, правда, не совсем понятно, как велико значение организации памяти в процессе познания. Способность извле- кать нужную информацию в нужный момент из нашей огромной, постоянно меняющейся памяти играет важную роль не только для эффективного владения языком, но и для проявлений «здравого смысла» (который по сути есть не что иное, как логика обыденной жизни, знание о многих вещах и событиях, а также использование этих знаний в самых разнообразных ситуациях). Такая способность необходима для реализации богатых знаний специалистов, для создания литературных произведений и решения многих других важных задач. Умение учиться на собственном опыте и правильно применять свои знания в соответствующих ситуациях-— важная составляющая настоящего интеллекта. Что такое искусственный интеллект Термин «искусственный интеллект» в последнее время нередко подвергался нападкам, поэтому нам хотелось бы сначала пояснить, что мы под ним понимаем. Программы, реализующие теории знания, приносят интересные — а порой даже очень интересные—результаты. Однако многие прог- раммы, не претендующие на имитацию процесса познания, также могут давать значительные результаты. В термине «искусственный интеллект» неспециалисты обычно акценти- руют внимание на слове «искусственный». В настоящее время компьютеры действительно способны делать многое такое, о чем прежде мы не могли и мечтать. Усилиями ученых и инженеров производительность и сфера применения компь- ютеров непрерывно увеличиваются, но это еще не искусствен- ный интеллект. Основное значение искусственного интеллекта как научного направления заключается именно в слове «ин- теллект»—таинственном и привлекательном. Многие прекрас- ные «интеллектуальные» программы не делают ничего полез- 24
кого, а многие «умные» программы не имеют никакого отношения к ИИ. Если бы с самого начала эти вещи четко разграничивались, то нам, по-видимому, удалось бы избежать путаницы, недовольства и разочарований. Хороший пример тому — экспертные системы. Это прог- раммы, более точно называемые программами вывода, осно- ванного на правилах, не предназначены для имитации рассуж- дений человека-эксперта. Зачастую эти системы хорошо справляются с важными заданиями, отнюдь не моделируя решения творческих задач. Человек-эксперт не просто следу- ет каким-то правилам. У него есть опыт, позволяющий увидеть необычный случай и помогающий ему принимать правильные решения с учетом этого опыта. Наш подход к проблеме моделирования работы экспертов иной: мы ставим целью описать, как поступает эксперт, когда ситуация не укладывается в общие правила. Кроме этого в теорию следует включить изменение и пополнение экспертом набора правил, если какой-то конкретный случай не укладывается в имеющиеся правила. Искусственный интеллект—гораздо более фундаменталь- ная область исследований, чем обычно считают. Многие из самых блестящих идей ИИ требуют детальной теоретической проработки, прежде чем они дойдут до программной реализа- ции. Но после того, как идеи ИИ превращаются в приклад- ную систему, они в каком-то смысле переходят рамки ИИ. Конкретные условия ставят системе множество ограничений, которые требуют чисто программистских решений для того, чтобы эту систему можно было использовать в реальной среде, на реальных машинах и получать необходимые практи- ческие результаты. В основе такой системы лежит идея ИИ, но ее достоинства определяются тем, как она действует, а не тем, что ее вызвало к жйзни. В конечном счете получается, что по основополагающей идее системы невозможно судить о ее функционировании. Найдутся ли применения искусственному интеллекту? Мы полагаем, что да. Если мы выясним, как мыслят люди, наши исследования помогут людям оптимизировать этот процесс. Возможно, что самое важнбе значение ИИ будет заключаться не в написании новых программ, а в новом подходе к пониманию процесса мышления. Если мы узнаем что-то новое о том, как человек читает и понимает прочитанное или сказанное, как происходит творческий процесс, то это помо- жет людям в их деятельности. Возможно, наиболее много- обещающим выглядит применениие ИИ в образовании — программы помогут учить людей читать, запоминать, мыслить на основании фундаментального понимания этих процессов. Рассмотрим вопрос обучения детей (или взрослых) чте- 25
нию. Пытаясь написать программы, способные читать, мы многое узнали об этом процессе, и на основании этих знаний можно было бы разработать методику обучения чтению. Конечно, это не всегда просто, но в принципе возможно. Ожидания играют основополагающую роль в понимании текста. Когда у детей развивается способность строить ожидания относительно известных им. слов и текстов, они начинают лучше читать. Владение языком тесно связано со знанием существа вопроса, поэтому по своему содержанию детские книги должны быть близки к тому, что дети знают. Используя пакеты ожиданий, касающиеся того, что детям известно, можно было бы создавать более совершенные хрестоматии для чтения и писать такие книги, которые развивали бы у детей способность заполнять тексты деталя- ми, «читаемыми между строк», и таким образом учили бы детей логическому мышлению. Поскольку исследования в области искусственного интеллекта были все время связаны в первую очередь с проблемой языка, накоплено много знаний именно из области обучения чтению. Но это не единственное, что могут дать исследования в области ИИ. В будущем, возможно, станет более ясно, как учиться и лучше запоми- нать информацию, как лучше объяснять новое и даже как развить творческие способности. Искусственный интеллект как область науки — это лишь малая часть грандиозной попытки постичь мышление. Мы считаем, что это основная цель данной области науки и здесь достигнуты немалые успехи. Программы, которые мы пишем, важны как эксперимент, а не как конечный результат. Главный интерес для нас составляет именно интеллект, а не его искусственное происхождение. Если мы достигнем успеха в этом направлении, то проложим путь для создания механи- ческих помощников человеку в его повседневных делах и заботах. Но не в этом главное. Самое важное, чего мы тогда добьемся,— более глубокого понимания самих себя, что, безусловно, гораздо ценнее, чем любая программа. Об авторах: Роджер Шенк — декан факультета вычисли- тельной техники Йельского университета. Ларри Хантер — выпускник этого факультета. 1. Schank R. С. Conceptual Information Processing.— Amsterdam: North- HoIIand, 1975. [Русский перевод: Шенк P. Обработка концептуаль- ной информации.— М.: Энергия. 1980.] 2. Schank R. С. Dynamic Memory: A Theory of Reminding and Learning in Computers and People.— Cambridge: Cambridge University Press, 1982. 3. Schank R, C.,t Christopher K. R. Inside Computer , Understanding, Five Programs Plus Miniatures.— Hillsdale (New Jersey): Lawrence Eribaum Associates, 1981.
Учитель Лиспа Джон Р. Андерсон, Брайен Дж. Рейзер На протяжении последних пяти лет мы изучали, как протекает процесс усвоения студентами математики, логики и навыков программирования. Полученные данные дают нам теперь возможность разработать квалифицированный машин- ный преподаватель этих дисциплин. В настоящей статье мы описываем свою работу по созданию машинного учителя Лиспа — одного из основных языков программирования искус- ственного интеллекта (ИИ); роль этого языка непрерывно растет вместе с бурным развитием данного научного направ- ления. В университетах, подобных Университету Карнеги — Меллона, где мы работаем, остро ощущается потребность в курсах программирования на языке Лисп. Для многих наших студентов Лисп оказывается первым языком программирова- ния, с которым они знакомятся. Однако Лисп весьма труден для изучения как по причине символьного характера этого языка и использования в нем рекурсии, так и вследствие необходимости усваивать при его изучении абстрактные мето- ды программированияу свойственные ИИ. Спектр проблем, затрагиваемых на курсах по обучению Лиспу, чрезвычайно широк, а уровень подготовки — высокий. Некоторые студен- ты считают, что такой курс вполне можно рассматривать как введение в область ИИ, тогда как другим кажется, что они ничего нового не усвоили. Наблюдая за тем, как студенты приобретают навыки такого рода, мы пришли к выводу, что индивидуальное обучение гораздо более эффективно, нежели обычные груп- повые занятия в университетской аудитории. При аудиторном обучении студенты прослушивают лекции, занимаются по учебникам и в одиночку трудятся над домашними заданиями. Перепечатано с разрешения журнала Byte, апрель 1985 г. Copy- right © by McGraw-Hill, Inc., New York 10020. Все права сохраняют- ся. 27
При индивидуальном обучении к студенту прикрепляется опытный преподаватель, под руководствоти которого учащий- ся работает с учебником и решает задачи. При изучении Лиспа сравнительный анализ показал, что студенты, занима- ющиеся с педагогами, за 11 учебных часов усваивают такой материал, на который при аудиторных занятиях требуется 43 учебных часа. Как выяснилось, в том и в другом случае время уходило в основном не на изучение учебных пособий или инструкций, а на непосредственные попытки написания программ на языке Лисп. Роль индивидуального учителя в том и состоит, чтобы наибольший опыт и знания студент приобретал именно при решении задач. Специалисты по психологии обучения пришли к выводу, что индивидуальное обучение предпочтительно при изучении самого разнообразного материала. Так, в одном исследовании [1] на примере изучения двух дисциплин—теории вероятно- стей и картографии — сравнивались группы студентов, изучав- ших один и тот же предмет в течение одинакового периода времени, но одни занимались с педагогами индивидуально, а другие — обычным аудиторным методом. На контрольных экзаменах 98% индивидуально обучавшихся студентов показа- ли в среднем более высокие результаты, чем студенты, занимавшиеся в аудитории. Интересно отметить, что особен- но полезным индивидуальное обучение оказалось для слабых студентов, тогда как для сильных результат был относитель- но скромным. Мы поставили перед собой цель — создать на основе ЭВМ такого «учителя», который так же хорошо обучал бы студен- тов языку Лисп, как опытный преподаватель-человек. Систе- ма GREATERP1 — результат попытки применить методы ис- кусственного интеллекта и психологию обучения для созда- ния весьма эффективного обучающего устройства. Такой учитель сам по себе является большой программой, реализо- ванной на диалекте Лиспа, Franz LISP, предназначенном для работы на ЭВМ типа VAX. Приступив к испытаниям системы в аудиториях нашего университета, мы убедились в том, что она способствует более быстрому и глубокому усвоению студентами методов программирования на языке Лисп. Далее мы обсудим принципы устройства и работы системы, оказав- шейся весьма эффективной; мы рассмотрим также перспекти- 1 Аббревиатура от Goal-Restricted Environment for Tutoring and Educational Research on Programming—система целенаправленного исследования по преподаванию программирования.- Кстати, GRE- ATERP—название одного из стандартных предикатов языка Лисп.— Прим, перев. 28
ву использования варианта такой системы на персональном компьютере. Система GREATERP—это лишь один из нескольких машинных учителей, созданных в нашем университете. В рамках специального проекта, предусматривающего создание машинных преподавателей, в настоящее время у нас разраба- тываются программы для обучения университетскому курсу алгебры и геометрии. Планируется также создание подобных систем для обучения формальной логике и таким языкам программирования, как Паскаль1 и Пролог. «Учитель Лиспа» служит иллюстрацией нашего общего подхода к использова- нию методов, заимствованных из области искусственного интеллекта, для создания программ, связанных с обучением. Интеллектуальное преподавание Описанные здесь проекты машинного обучения представ- ляют собой пример одного из наиболее обещающих подходов к созданию программного обеспечения преподавания, полу- чившего название интеллектуальное преподавание [2]. В отличие от других методов использования искусственного интеллекта в проблеме обучения для таких систем характерна попытка добиться такой же эффективности в ходе решения задач, какая достигается при обучении с преподавателем- человеком. В системе, предназначенной для интеллектуального препо- давания, обычно можно выделить несколько составляющих. Во-первых, здесь имеется специалист по предмету, способ- ный решать поставленные задачи. (GREATERP включает подсистему, которая по описанию условий задачи может строить функции на Лиспе.) Во-вторых, система имеет ката- лог ошибок, содержащий- все возможные отклонения от правильного результата, которые может допустить конкрет- ный студент (по сравнению со специалистом). В-третьих, имеется модуль обучения—экспертная система, предназна- ченная для преподавания. Этот модуль учитывает три группы соображений. Во-первых, по поведению студента определяет- ся, что ему известно и какие недочеты или ошибки ему присущи; во-вторых, рассматривается вопрос о том, в какой момент следует прервать процесс решения задачи и что при этом нужно сообщить студенту, и, в-третьих, осуществляется подбор задач, которые надлежит решить студенту, и принима- ется решение, когда следует переходить к изучению нового 1 Системе, обучающей студентов программированию на языке Паскаль, посвящена работа У. Джонсона и Э. Солоуэя, включенная в настоящий сборник.— Прим. ред. 29
материала. Такие решения, как правило, принимаются на основании некой внутренней модели знаний, которыми распо- лагает студент, и испытываемых им затруднений, что позво- ляет учителю организовывать обучение в зависимости от индивидуальных особенностей студента. Наконец, система обучения должна содержать интерфейс, обеспечивающий контакт со студентом. При создании интер- фейса необходимо учитывать особенности общения человека с машиной, т. е. предусмотреть, как придать информации форму, понятную для студента, как задавать ему вопросы и как обеспечить возможность ввода в систему ответов студен- та, а также решить, что именно должно размещаться на экране дисплея. До недавнего времени вопросы интеллектуального обуче- ния оставались предметом чисто научных изысканий, и, ка- залось бы, не шло речи непосредственно о разработке прог- рамм для реального преподавания. Однако теперь ситуация изменилась. Во-первых, опыт, накопленный в психологии познания и в искусственном интеллекте, позволяет ныне создавать машинных учителей гораздо быстрее и эффектив- нее. Например, наш учитель Лиспа позволяет подготовить материал для академических занятий за более короткое время, чем отводится на это при использовании обычного программного обеспечения. Во-вторых, хотя для систем ин- теллектуального преподавания требуется достаточно мощный и быстродействующий компьютер, стоимость аппаратуры непрерывно снижается, что делает соответствующие затраты вполне оправданными. Принципы работы системы В основу нашей конструкции учителя Лиспа положена простая идея: студент должен работать над поставленными задачами в «дружественной» атмосфере, так, словно ему помогает опытный наставник—структурный редактор. Когда студент допускает ошибку в планировании или программиро- вании или просит о помощи, машинный учитель должен обеспечить его необходимой информацией, которая помогла бы студенту вернуться на правильный путь решения. Кроме того, мы хотели, чтобы сама атмосфера обучения лучше отражала концептуальную структуру задач программирова- ния, чем это достигается при работе с обычными машинными редакторами. Чтобы иметь возможность следить за ходом обучения, обнаруживать и исправлять ошибки, машинный учитель сам должен быть в состоянии решить те задачи, над которыми работают студенты. Поэтому первой составляющей учителя 30
Лиспа является идеальная модель, имитирующая программи- стские знания, которые используются при решении задач идеальными студентами. Такая модель основывается на де- тальной теории процесса обучения программированию [3]. Для представления правил, которыми руководствуются программисты при решении задач, мы воспользовались систе- мой GRAPES1 [4]. Каждое такое правило — это порождающее правило (или продукция), содержащее часть с ЕСЛИ, где перечисляется множество условий, при которых данное пра- вило применимо, и часть с ТО. Ниже приведены описания двух (из нескольких сотен порождающих правил, известных машинному учителю) правил: ЕСЛИ целью является объединение списков СПИСОК! и СПИ- СОК? в единый список ТО воспользуйся функцией APPEND и установи в качестве подцелей необходимость задать СПИСОК! и СПИСОК2 ЕСЛИ целью является проверка того, что рекурсивный вызов некоторой функции прекратится и этот рекурсивный вызов осуществляется в контексте функции МАР ТО в качестве подцели убедись, что список, являющийся аргументом функции МАР, всегда обращается в NIL после некоторого числа рекурсивных вызовов Первое из этих порождающих правил является прямым следствием определения функции APPEND языка Лисп, стро- ящей новый список по двум другим. Второе правило не столь широко известно, и к нему может прибегать достаточно опытный программист. Когда указанная идеальная модель используется для построения некоторой функции на Лиспе, множество подобных порождающих правил применяется сна- чала на этапе планирования, а затем при создании самой программы. В ней содержится также большое число ошибоч- ных правил, соответствующих тем ошибочным представлени- ям, которые нередко вырабатываются у новичков в процессе обучения. Идеальная модель — это те знания, которые мы хотели бы передать студенту. Вместе с тем преподаватель должен также хорошо представлять, что студенту уже известно, а что — нет, и какой подход тот использует при решении каждой конкретной задачи. Машинный учитель следит за каждым вводимым символом по мере того, как студент составляет программу, и пытается понять, какое верное или ошибочное порождающее правило могло бы привести к наблюдаемым действиям студента. Если найденное правило относится к 1 Аббревиатура от Goal-Restricted Production System—система продукций, ориентированная на цели.— Прим, перев. 31
числу верных, то учитель, не вмешиваясь, ожидает дальней- ших шагов студента. Если же действия студента оказываются ошибочными, учитель прерывает его работу подсказкой. Таким образом, пока студент движется по пути, ведущему к верному решению, машинный учитель «остается в тени». Наш учитель Лиспа полностью обеспечивает все необходи- мое руководство студентом. Убедившись, что при программи- ровании задачи студент сталкивается с затруднением, учитель переводит его из «режима программирования» в «режим планирования», при котором на конкретном примере учитель шаг за шагом прорабатывает требуемый алгоритм. После того как построение алгоритма завершено, студент может вернуть- ся к программированию, теперь, вероятно, уже лучше пред- ставляя себе, что нужно сделать, чтобы его программа работала так, как нужно. При разработке машинного учителя Лиспа было важно обеспечить «мгновенную» обратную связь. Как только сту- дент допускает ошибку, учитель реагирует соответствующим сообщением, указывая тип допущенной ошибки. Поскольку студент может писать программу по частям, обратная связь срабатывает тотчас, как только какой-то элемент программы оказывается неверным. В отличие от этого в обычной ситуации система реагирует лишь после того, как задана целиком вся функция или совокупность функций, причем это происходит уже на этапе запуска функции в работу. Исследо- вание психологии обучения убедительно показывает, что при мгновенной обратной связи процесс обучения облегчается. Руководя обучением, машинный учитель подсказывает верное решение в случае, если студент испытывает затрудне- ния. Эти подсказки имеют вид вопросов или напоминаний о преследуемых на данном этапе целях. При необходимости учитель сам может достроить небольшой отрезок программы, тем самым давая студенту возможность продолжать програм- мирование. Это делается либо по просьбе студента, либо после того, как он совершит максимально допустимое для данного отрезка программы число ошибок (обычно—две ошибки). Этим преследуется цель заставить студента рабо- тать активнее, поскольку в таком случае процесс обучения оказывается более эффективным, нежели при пассивном наблюдении. Достраивая следующий отрезок программы, учитель побуждает студента продолжить работу над програм- мой, тогда как в противном случае студент, возможно, просто опустил бы руки. При таком подходе к обучению студент получает возможность переходить к рассмотрению все более сложных зацач. Главным элементом интерфейса, осуществляющего обще- ние машинного учителя со студентом, является структурный 32
экранный редактор, через который студент вводит свою программу в машину. Этот редактор автоматически уравнива- ет число скобок и указывает позиции для размещения аргументов каждой функции. Например, для задания опреде- ления функции в Лиспе следует пользоваться функцией defun, за которой идет имя задаваемой функции, список параметров и собственно функция. Сначала студент набирает на клавиату- ре терминала левую скобку и слово defun. Как только студент печатает пробел после этого слова, машинный учитель показывает на экране дисплея (defun <ИМЯ> <ПАРАМЕТРЫ> <ПРОЦЕСС>) Символы в угловых скобках соответствуют аргументам, которые необходимо указать программисту. Учитель помеща- ет курсор под <ИМЯ> и высвечивает (т. е. эта часть строки выглядит более яркой) эту надпись на экране, указывая тем самым, что теперь следует задать имя функции. Структурный редактор освобождает студента от необхо- димости следить за сбалансированностью числа скобок и за синтаксисом, давая ему возможность сконцентрировать основ- ное внимание на концептуально трудных аспектах языка Лисп. Наш опыт показывает, что подобный подход ускоряет изучение основных методов и навыков, не ухудшая при этом знания синтаксиса. Впоследствии студенты, прошедшие курс обучения под руководством машинного учителя, лучше прояв- ляют себя при самостоятельной работе по всем вопросам программирования (включая создание алгоритмов, выделение машинной памяти для лисповских функций и использование синтаксиса), нежели студенты, обучавшиеся обычными мето- дами. Редактор также облегчает контакт между учителем и студентом. В проведенных нами исследованиях различных организаций интерфейса было установлено, что в обычном вопросо-ответном режиме > свойственном большинству прог- рамм, предназначенных для обучения, ученик при решении сложных задач часто теряет нить рассуждения, переставая понимать, о какой части рассматриваемой задачи толкует ему учитель. В нашей системе обучения Лиспу студент вносит информацию непосредственно в программу, заменяя содержи- мое позиций, отведенных для аргументов; поэтому ему всегда совершенно ясно, над какой частью программы ведется работа. Кроме того, используемые символы помогают в передаче студенту концептуальной структуры задачи прог- раммирования. Например, когда студент набирает итератив- ную конструкцию prog, машинный учитель выдает такой шаблон для итерации: 2—2596 33
(prog СЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ> СНАЧАЛЬНЫЕ ЗНАЧЕНИЯ> <ТЕЛО> <ПОВТОР> ) Этот шаблон помогает разбить задачу на части, выделяя в ней список локальных переменных, список начальных значе- ний этих переменных, тело программы (т. е. повторяющиеся действия) и возвращение к началу цикла. Во многих случаях отдельный символ представляется в виде совокупности нес- кольких символов, отражающих различные детали, например <ТЕЛО> задается двумя частями <УСЛОВИЕ ЗАВЕРШЕНИЯ> и <ПЕРЕМЕННАЯ ЧАСТЬ>. Если возникает ошибка или студент обращается за сове- том, машинный учитель строит объяснение (на английском языке), которое основывается на использовании шаблонов, ассоциированных с каждым порождающим правилом. Такие объяснения позволяют учителю не только описывать ошибку или делать подсказку, пользуясь некоторым общим правилом, но и давать ссылки на конкретную задачу, программирование которой ведется, тогда как составление программ для понима- ния естественного языка — крайне трудная задача. В действи- тельности те описания, которые студенты часто дают состав- ленным ими алгоритмам, нелегко понять даже учителю- человеку. Поэтому студенту, работающему над созданием какого-то алгоритма с машинным учителем, предлагается воспользоваться списком возможностей (меню) для отклика на вопрос учителя, а не пытаться ответить на него на естественном языке. Такое меню строится по верным и ошибочным порождающим правилам, которые в данный момент рассматриваются. Обучение Лиспу с машинным учителем В настоящее время учитель Лиспа использует примерно 325 порождающих правил, касающихся планирования и со- ставления программ на Лиспе, и 475 ошибочных вариантов таких правил. Этого достаточно для диагностики и реакции в 45—80% случаях ошибок студентов в зависимости от сложно- сти урока и объема проведенных испытаний. Разработанный нами учебный курс показан в табл. 1. Наша система успешно обучает на задачах, включенных в первые десять уроков, причем на каждый урок отводится 1—4 ч. По каждому вопросу имеется небольшой учебный буклет,, а в ходе урока производится изучение многих задач, закрепляющих соответ- ствующие навыки. При создании таких буклетов преследова- 34
лась цель сократить письменный инструктаж до минимума. Имеются веские основания считать, что письменный учебный материал усваивается более эффективно, когда он краток [5]. Основная часть- времени в любом уроке уходит на прора- ботку задач. Распечатки 1 и 2 дают примеры диалогов, в ходе которых машинный учитель направляет работу студента по решению простых задач. Однако эти распечатки не отражают того, как действует машинный учитель в действительности, а дают лишь телетайпные варианты диалога учителя со студентом. Реальное их взаимодействие связано с использова- нием нескольких окон на экране дисплея: программное окно, в котором студент набирает свою программу, обучающее окно, где размещается реакция учителя, и окно целей, где представлено то, что остается сделать. Таблица 1. Учебный курс языка Лисп 1. Основные функции языка Лисп 2. Определение новых функций 3. Условные выражения и предикаты 4. Структурное программирование 5. Функция prog, ввод/вывод данных и оценка 6. Целочисленная итерация 7. Целочисленная рекурсия 8. Рекурсия на списках 9. Итерация на списках 10. Более сложные виды рекурсии 11. Более сложные программные средства: Maps, Dos, Lets 12. Списки свойств и массивы 13. Методы поиска 14. Усложненная задача — «кувшин с водой» 15. Структуры списков и структуро-разрушающие функции 16. Макро-операции и усложненные типы функций 17. Более трудная тема: сопоставление с образцом 18. Более трудная тема: реализация систем продукций В телетайпных вариантах указания учителя печатаются обычными буквами, а вхбдные данные, поступающие от студента,—выделены особо. Приведенные распечатки пред- ставляют собой как бы фотоснимки с реального процесса взаимодействия студента с учителем. Каждый раз, когда действия студента вызывают реакцию, мы показываем их вместе с текстом, поступающим от учителя (для удобства обсуждения введена нумерация). Весь отрезок программы показан так, как он выглядит на экране, хотя студент добавил только то, что отличает его от предыдущего отрезка програм- мы (выделено жирным шрифтом). Например, в пункте 2 2* 35
распечатки 1 им напечатано (lessp (difference в качестве продолжения программы строки 1. Распечатка 1. Диалог между студентом и машинным учителем при построении функции rightp Определите функцию r.ightp с тремя аргументами, сторона!, сторонаЗ и сторонаЗ, представляющими длины трех сторон заданного треугольника, причем сторонаЗ — наибольшая. Функция rightp прове- ряет, является ли этот треугольник прямоугольным, т. е. равна ли сумма квадратов сторона! и сторонаЗ квадрату сторонаЗ. Особенность функции rightp состоит в том, что измерения допускаются с 2%-ной точностью, т. е. она должна возвращать значение t, если сумма квадратов двух первых сторон лежит в пределах 2% отклонения от квадрата третьей стороны. Например, (rightp 3 4 5,01)=t, поскольку 32+42=25, что лежит в пределах отклонения в 2% от квадрата 5,01. 1. (defun rightp (сторона! сторонаЗ сторонаЗ) (cond)) Да, вы можете воспользоваться функцией cond в этом случае, однако есть намного более легкий способ проверки того, что сумма квадратов двух первых сторон лежит в пределах 2%-ного отклонения от квадрата третьей стороны. Поскольку нам потребуется лишь один тест, вы можете использовать здесь предикат. 2. (defun rightp (сторона! сторона2 сторонаЗ) (lessp (difference) <ЧИСЛО2>)) Вы хотите вычислить величину разности суммы квадратов первых двух сторон и квадрата третьей стороны, и вам не важно, какое из этих двух чисел больше. Поэтому разумно воспользоваться абсолютной величиной этой разности. 3. (defun rightp (сторона! сторона2 сторонаЗ) (lessp (abs (difference <ЧИСЛОЗ> <ЧИСЛО4>)) <ЧИСЛО2>)) С чего вы хотите начать? НАЖМИТЕ ЕСЛИ ХОТИТЕ 1 Написать программу вычисления суммы квадратов двух первых сторон. 2 Написать программу вычисления квадрата третьей стороны. Ваш выбор: 1 4. (defun rightp (сторона! сторона2 сторонаЗ) (lessp (abs (difference (plus) <ЧИСЛО4>)) <ЧИСЛО2>)) Неправильно. Для этого отрезка программы вам следует постро- ить вспомогательную функцию, а не пытаться программировать впрямую. Наша функция rightp к настоящему времени имеет четыре уровня вложенности, а отношение,.которое мы хотим запрограммиро- вать, т. е. сумма квадратов двух чисел, было бы полезной вспомога- 36
тельной функцией. Таким образом, попробуем запрограммировать сумму квадратов двух первых сторон с помощью некоторой вспомога- тельной функции. 5. (defun rightp (сторона! сторона2 сторонаЗ) (lessp (abs (difference (sumsq <АРГУМЕНТЫ>) <ЧИСЛО4>)) <ЧИСЛО2>)) Что, по вашему мнению, должна бы делать вспомогательная функция sumsq? НАЖМИТЕ ЕСЛИ ВЫ ХОТИТЕ 1 Взять два аргумента функции, соответствующие квад- рату первой стороны и квадрату второй стороны. Вычислить их сумму. 2 Взять два аргумента функции—первую и вторую сторо- ны. Вычислить сумму квадратов этих чисел. 3 Предоставить выбор учителю. Ваш выбор: 1 Неправильно. Мы не хотели бы иметь вспомогательную функцию, которая всего лишь вычисляет сумму двух чисел. Вам следует построить вспомогательную функцию так, чтобы она не сводилась к суммированию. Было бы правильнее определить sumsq таким образом, чтобы у нее было два аргумента (в данном случае [1] — первая сторона и [2] — вторая сторона) и чтобы вычислялась сумма квадратов этих чисел. Ваш выбор: 2 6. (defun rightp (сторона! сторона2 сторонаЗ) (lessp (abs (difference (sumsq сторона! сторона2 (times))) <ЧИСЛО2>)) Вам следует воспользоваться вспомогательной функцией square,’ которая уже была вами запрограммирована. Поскольку эта функция вычисляет квадрат числа, вы можете ее использовать для вычисления квадрата третьей стороны. 7. (defun rightp (сторона! сторона2 сторонаЗ) (lessp (abs (difference (sumsq сторона! сторона2) (square сторона 3))) (plus))) Этого я не понимаю, Роб. Как вы собираетесь программировать вычисление 2% от квадрата третьей стороны? [ОБЪЯСНИТЕ] Хорошо, объясню, что я хотел. Вы можете либо прямо здесь закодировать, либо построить вспомогательную функцию вычисления 2% от квадрата третьей стороны. Чтобы было понятнее, построим вспомогательную функцию, которую назовем percentage (процент). Мы определим функцию percentage после того, как закончим програм- мирование функции rightp. Что, по-вашему, должна была бы делать вспомогательная функция percentage? 37
НАЖМИТЕ ЕСЛИ ВЫ ХОТИТЕ 1 Чтобы было два аргумента, одна сотая от 2 и квадрат третьей стороны. Вычислить их произведение. 2 Чтобы было два аргумента—2 и третья сторона. Вычислить заданный процент от квадрата второго аргумента. 3 Чтобы было два аргумента—2 и квадрат третьей стороны. Вычислить заданный процент от второго аргумента. 4 Чтобы был один аргумент—квадрат третьей стороны. Вычислить 2 процента от ее аргумента. 5 Выбор функции предоставить учителю. Ваш выбор: 3 Очень хорошо. 8. (defun rightp, (сторона! сторона2 сторонаЗ) (lessp (abs (difference (sumsq (сторона! CTOpOHa2)(square сторонаЗ))) (percentage 2(square сторонаЗ)))) Хорошо. Мы завершили программирование функции rightp. Теперь запрограммируем вспомогательную функцию (функции), которую мы использовали, но еще не определили. С чего бы вы хотели начать? НАЖМИТЕ ЕСЛИ ВЫ ХОТИТЕ 1 Определить вспомогательную функцию sumsq. 2 Определить вспомогательную функцию percentage. Ваш выбор: 1 Определим вспомогательную функцию sumsq. У нее два аргумента, мы предлагаем обозначить их как (число! число2), хотя их можно назвать как угодно. Функция sumsq должна вычислять сумму квадратов число! и число2. 9. (defun sumsq (s у) (plus (square s)(square у))) Хорошо. Мы закончили программирование функции sumsq. Теперь запрограммируем вспомогательную функцию (функции), которую мы использовали, но еще не определили. Определим вспомогательную функцию percentage. У нее два аргумента, мы предлагаем обозначить их (проц общий), хотя их можно назвать как угодно. Функция percentage должна вычислять проц процентов от общий. 10. (defun percentage (х у) <ПРОЦЕСС> 38
[ОБЪЯСНИТЕ] Хорошо, объясню, что я хотел. Давайте разберемся, как записать вычисление х процентов от второго числа. Как вы можете записать вычисление х процентов от второго числа? НАЖМИТЕ ЕСЛИ ВЫ ХОТИТЕ 1 Умножить второе число на одну сотую от х. 2 Умножить второе число на х. 3 Разделить второе число на 100. 4 Предоставить выбор учителю. Ваш выбор: 1 Хорошо. 11. (defun percentage (ху)) (times <ЧИСЛО1> <ЧИСЛО2>)) С чего вы хотите начать? НАЖМИТЕ ЕСЛИ ВЫ ХОТИТЕ 1 Написать программу для вычисления одной сотой от первого числа. 2 Написать программу для получения второго числа. Ваш выбор: 1 12. (defun percentage (ху)) (times (quotient х 0,01) <ЧИСЛО2>)) Это неверное число. Как вы собираетесь определять одну сотую в языке Лисп? 13. (defun percentage (ху)) (times (quotient х 100) у)) Хорошо. Теперь мы закончили программирование функции percen- tage. Больше не осталось вспомогательных функций, нуждающихся в определении. Важно остановиться на следующих особенностях приве- денных диалогов. Во-первых, вспомним, что машинный учи- тель автоматически уравнивает число открывающих и закры- вающих u скобок и указывает позиции (например, <СЛУЧАЙ>, <ИМЯ>, <ЧИСЛО>) для тех участков прог- раммы, которые нуждаются в дальнейшем разъяснении. Во-вторых, несмотря на то что от одной строки к другой добавляется большой объем программного текста, машинный учитель воспринимает по отдельности каждое слово или символ, вводимый студентом, и при необходимости реагирует на любой такой элемент сообщением об ошибке. 39
Построение функции rightp Распечатка 1 содержит диалог из урока 4, ориентирующе- го студента на разбиение задачи на совокупность подзадач. Хотя в этом диалоге больше ошибок, чем в среднем допуска- ет студент, тем не менее он может служить хорошей иллюстрацией того, как учитель реагирует на ошибки студен- та и его просьбы о помощи. Студент спокойно вводит информацию до тех пор, пока не напечатает cond. В этот момент учитель говорит ему, что в условной структуре необходимости нет. После строки 1 в распечатке 1 на экране дисплея появляется следующая информация: Да, вы можете воспользоваться функцией COND в этом случае, но есть гораздо более простой способ проверки того, что сумма квадратов двух первых сторон лежит в пределах 2%-ного отклонения от квадрата третьей стороны. Поскольку нам потребуется лишь один тест, вы можете использовать здесь предикат. ПРОГРАММА ДЛЯ rightp (defun rightp (сторона! сторона? сторонаЗ; (cond) ) ЦЕЛИ Определить функцию rightp. (rightp 3 4 5,01)=t. ... Проверяет, является ли треугольник прямоугольным ... Далее студент печатает (lessp (difference (см. строку 2) и получает подсказку, благодаря чему правильно размещает функцию вычисления абсолютной величины abs перед разно- стью в строке 3. Заметим, что учитель выдает меню, когда не знает, как дальше поступит студент. Например, поскольку аргументы для разности в функции rightp могут быть взяты в любом порядке, ему нужно знать, какой из них будет на- печатан следующим. Это выясняется через меню в строке 3. После строки 4 учитель дает студенту информацию о том, когда полезно запрограммировать отдельную вспомогатель- ную функцию. Он задает студенту вопросы после строки 5, чтобы убедиться, что их мнения относительно того, что должно вычисляться с помощью такой функции, совпадают. Это пример режима планирования в действиях учителя. Студент неправильно представляет себе, что должна делать такая вспомогательная функция, т. е. допускает ошибку, которая корректируется учителем. После строки 7 студент 40
обнаруживает, что его программа цели не достигает. Но поскольку эта программа не приводится в соответствие ни с одним из ошибочных правил в идеальной модели, от машинно- го учителя поступает минимальная информация — он указыва- ет, что программа непонятна и просит студента пояснить, что же он пытается запрограммировать. Такой подсказки для студента недостаточно, и последний просит пояснения, нажи- мая на терминале специальную клавишу. Тогда машинный учитель помогает студенту определить другую вспомогатель- ную функцию, а именно percentage (процент). Окончательный вид функция rightp приобретает в строке 8. В строке 9 студент определяет вспомогательную функцию sumsq, не допустив при этом ошибок, и переходит к определе- нию функции percentage в строке 10. Он спотыкается на том, что не знает, что делать после того, как напечатано тело функции,— и просит учителя дать пояснения. Машинный учитель помогает студенту улучшить алгоритм, после чего тот определяет функцию percentage, допустив при этом одну ошибку в строке 12. После того как студент определил функцию rightp и необходимые для нее вспомогательные функции, учитель переводит студента в систему программирования на языке Лисп, в которой тот может экспериментировать с полученным определением и пробовать различные варианты. Дав студенту возможность поработать таким образом сколько тому угодно, машинный учитель переходит к рассмотрению следующей проблемы из данного урока. Построение функции fact Распечатка 2 иллюстрирует, как машинный учитель на- правляет программирование рекурсивной функции типа фак- ториала какого-то числа — это одна из первых задач урока 7. Хотя у студента возникают некоторые трудности с синтакси- сом условного теста в строках 1 и 2, в основном он верно указывает проверку условия окончания рекурсии. Распечатка 2. Диалог, возникающий при определении функции fact для вычисления факториала числа Определите функцию fact, имеющую один аргумент п и вычисля- ющую факториал п, который по определению есть результаг умноже- ния ПХП-1ХП-2...Х1. Например, (fact 3)=3х2х1=6. По определению факториал 0 равен 1. 1. (defun fact(n) (cond ((equal) <ДЕЙСТВИЕ>) <РЕКУРСИВНЫЙ-СЛУЧАЙ>)) 41
Мне представляется, что вы пытаетесь проверить, не равен ли аргумент числу нуль. Для проверки эквивалентности нулю имеется специальная функция. Попробуйте воспользоваться ею вместо equal. Какую программу вы можете написать для проверки выполнения условия завершения? Попробуйте использовать для этого некоторый предикат. 2. (defun fact (n) (cond ((гего<ДЕЙСТВИЕ>) <РЕКУРСИВНЫЙ-СЛУЧАЙ>)) Может быть, вы имели в виду zerop (да или нет)? да 3. (defun fact (n) (cond ((zerop n)l) <РЕКУРСИВНЫЙ-СЛУЧАЙ>)) Как вычисляется значение факториала в рекурсивных случаях? НАЖМИТЕ ЕСЛИ ВЫ ХОТИТЕ 1 Путем рекурсивного обращения к функции fact с п. 2 Умножением п на fact от п минус 1. 3 Получая 1 2 ... и затем перемножая их. 4 Предоставить выбор учителю. Ваш выбор: 3 Это разумный способ вычисления факториала, но он не годится в качестве плана для рекурсивной функции. Поскольку у вас, очевидно, возникают трудности в рекурсивных случаях, просмотрим несколько примеров, чтобы выяснить, какими должны быть условия и действия для каждого из этих случаев. Рекурсивное отношение — это отношение между функцией fact, вызванной с аргументом п, и fact, вызванной с аргументом: НАЖМИТЕ ЕСЛИ ВЫ ХОТИТЕ 1 п минус 1. 2 п равное 0. 3 п плюс 1. 4 Предоставить выбор учителю Ваш выбор: 1 Рассмотрим несколько конкретных примеров. Охарактеризуем рекурсивное отношение между fact, вызванной с 1, и функцией fact, вызванной с 0. Каково значение (fact 1)? Ответ: 1 Каково значение (fact 0)? Ответ: 1 ПРИМЕРЫ fact (n) fact (п-1) A. (fact 1) = 1 (fact 0)=1 Рассмотрим другие конкретные примеры. Охарактеризуем рекур- сивное отношение между fact, вызванной с аргументом 3, и fact, вызванной с аргументом 2. Каково значение (fact 3)? Ответ: 6 42
Каково значение (fact 2)? Ответ: 2 ПРИМЕРЫ fact (n) fact (п-1) A. (fact 1) = 1 (fact 0) = 1 В. (fact 3)=6 (fact 2)=2 Поскольку имеется только один рекурсивный случай, охаракте- ризованный рассмотренными выше примерами, условие в этом случае может быть просто взято в виде Т. Охарактеризуем действие в этом случае. Что вы должны сделать в примерах А и В, чтобы получить результат для функции fact, вызванной с аргументом п? НАЖМИТЕ ЕСЛИ ВЫ ХОТИТЕ 1 Умножить п на п без единицы. 2 Умножить п на fact от п без единицы 3 Добавить п к результату, даваемому fact, вызванной от п без единицы. 4 Предоставить выбор учителю. Ваш выбор: 2 Мы проработали ряд примеров, которые иллюстрируют рекур- сивное соотношение. Теперь вернемся к задаче построения програм- мы на Лиспе, задающей такое рекурсивное соотношение. 4. (defun fact (n) (cond ((zerop n) 1) (t(fact))) В какой-то момент вам потребуется fact, но сейчас вы хотите умножать. 5. (defun fact (n) (cond ((zerop n) 1) (t(times<ЧИСЛО> <ЧИСЛО 2>)))) С чего вы хотите начать? НАЖМИТЕ ЕСЛИ ВЫ ХОТИТЕ 1 Написать программу для получения числового аргумен- та. 2 Написать программу для получения рекурсивной части. Ваш выбор: 1 6. (defun fact (n) (cond ((zerop n) 1) (t (times n(fact n))))) В этом месте вы не можете просто поместить п. Что вам нужно сделать, это отнять от п единицу. 7. (defun fact (n) (cond ((zerop n) 1) (t (times n (fact (difference)))))) Функция difference будет работать в этом случае, но более уместно воспользоваться функцией subl, когда вы вычитаете 1 из числа. 43
8. (defun fact (n) (cond ((zerop n) 1) (t (times n (fact (subl n)))))) Как правило, студенты не испытывают особых затрудне- ний с условиями окончания, но сталкиваются с большими трудностями при организации рекурсии. Диалог после строки 3 показывает, как учитель руководит студентом при постро- ении рекурсивной функции. Учитель подводит его к констру- ированию примеров отношений между fact(n) и fact(n—1), а затем просит студента выделить общее отношение. Перед строкой 4 в распечатке 2 на экране дисплея появляется следующая информация: Что вы должны сделать в примерах А и В, чтобы получить результат для функции fact, вызванной с аргументом п? НАЖМИТЕ ЕСЛИ ВЫ ХОТИТЕ 1 Умножить п на п без единицы. 2 Умножить п на fact от п без единицы. 3 Добавить п к результату, который дает fact, вызванная от п без единицы. 4 Предоставить выбор учителю. Ваш выбор: 2 ПРОГРАММА ДЛЯ (defun fact (n) (cond ((zerop n) 1) <РЕКУРСИВНЫЙ-СЛУЧАЙ>)) ПРИМЕРЫ fact (n) fact (n-1) A. (fact 1)=1 (fact 0)=l B. (fact 3)=6 (fact 2)=2 Диалог, идущий после этого, показывает две классические ошибки, которые допускают студенты при определении ре- курсивных функций. Первая ошибка (в строке 4) состоит в непосредственном обращении к функции, без объединения рекурсивного обращения с другими элементами. Вторая ошиб- ка (в строке 6)—рекурсивное обращение с тем же значением аргумента, а не с более простым. Закончив этап программирования функции, студент пере- ходит к окну Лиспа и экспериментирует с полученной функцией. Трассировка функции показывает вложенные ре- курсивные вызовы и их результаты. В конце диалога, изложенного в распечатке 2, на экране дисплея возникает 44
такая информация (вверху показана сама программа, внизу — результат ее трассировки). ...ЗАДАНИЕ ВЫПОЛНЕНО. НАПЕЧАТАЙТЕ NEXT, ЧТОБЫ ПРОДОЛЖИТЬ... ...ПРОВЕРКА ФУНКЦИЙ, КОТОРЫЕ ВЫ ОПРЕДЕЛИ- ЛИ... (defun fact (n) (cond ((zerop n) 1) (t (times n (fact (subl n)))))) ОКНО ЛИСПА = >(trace fact) (fact) =>(fact 3) 1 <Вход> fact (3) 12 <Вход> fact (2) I 3 <Вход> fact (1) I 4 <Вход> fact (0) I 4 <Выход> fact 1 I 3 <Выход> fact 1 12 <Выход> fact 2 1 <Выход> fact 6 6 Оценка работы учителя Лиспа Следует подчеркнуть, что в указанных примерах знания, проявленные учителем, не были специально вручную подобра- ны под примеры, иллюстрирующие наш общий подход. Именно в этом и заключается достоинство интеллектуальной системы машинного обучения. Когда мы располагаем систе- мой, способной обучать решению рекурсивных задач, не составляет труда рассмотреть, например, какие-то новые задачи на эту тему. Более того, хотя необходимы дополни- тельные проверки создаваемого нами каталога ошибок, возни- кающих у студентов, такой машинный учитель способен предложить студентам множество верных решений, реагируя при этом на большое число ошибок. Таким образом, деятель- ность машинного учителя носит «творческий» характер в том смысле, что каждый раз он как бы заново обменивается информацией со 'студентами, а не следует заранее запрограм- мированным последовательностям. Как правило, студенты бывают удовлетворены машинным обучением и. ценят этот способ обучения выше, чем обычное 45
прослушивание вводных курсов программирования. Главными недостатками такого метода они считают слишком частое использование меню и порой чрезмерную медлительность. Сейчас мы работаем над оптимизацией и усовершенствовани- ем системы, пытаясь освободиться от названных недостатков. Интересно отметить, что по мере усложнения уроков студен- ты начинают выше ценить машинного учителя и менее критически воспринимать его недостаточное быстродействие. Одну из оценок качества машинного учителя мы провели, сопоставив его работу с работой опытных индивидуальных педагогов и с «самоподготовкой». Оказалось, что преимуще- ства индивидуального обучения с помощью как машинного учителя, так и педагога-человека над самоподготовкой возра- стают с ростом сложности материала. Урок 1 студенты заканчивают примерно с одной и той же скоростью и одними и теми же результатами во всех трех случаях. Однако студенты, занимающиеся самоподготовкой, часто испытыва- ют большие трудности с усвоением материала по рекурсии. В самом деле, некоторые не успевают его усвоить в отведенное программой время, так что нам пришлось прибегать к экстраполяции, чтобы оценить, сколько времени им потребу- ется для завершения работы. Если усреднить действительное и экстраполированное время, то выясняется, что на прохож- дение шести уроков студентам, работающим с индивидуаль- ными педагогами, требуется 11,4 ч, с машинным учителем — 15 ч, а тем, кто занимается самоподготовкой,— 26,5 ч. Опрос студентов, обучающихся по традиционному аудиторному ме- тоду, показывает, что для усвоения такого материала им необходимо более 40 ч. Когда указанные три группы студентов мы подвергли экзамену перед тем, как им следовало переходить к упражне- ниям по рекурсии, обнаружилось, что, хотя их обучение и протекало в различном темпе, уровень их знаний примерно одинаков. В другом случае, однако, оказалось, что студенты, занимающиеся с машинным учителем, на девять уроков опередили своих однокашников, обучавшихся без такого учителя, и показали более прочные знания. Таким образом, очевидно, что занятия с индивидуальным педагогом- человеком наиболее эффективны; машинный учитель не очень сильно отстает от него, тогда как традиционные способы самообучения дают самые низкие результаты. Реальность и перспективы В настоящее время мы добились удовлетворительной работы машинного учителя на .компьютере VAX 725, в котором на одного студента выделено 3 мегабайта памяти. 46
Планируемая оптимизация работы системы должна обеспе- чить обслуживание сразу двух студентов на одном компьюте- ре. Затраты, связанные с реализацией такого рода системы, «по карману» лишь дорогим частным университетам или крупным промышленным предприятиям, но не обычным высшим учебным заведениям. Наша система требует доста- точно больших вычислительных ресурсов. Мы считаем, что даже в будущем, при более эффективной ее реализации, потребуется как минимум 1 мегабайт памяти, чтобы обеспе- чить преподавание одному студенту. К концу 80-х годов вычислительные ресурсы такого уровня станут более доступ- ными. Так, Университет Карнеги — Меллона в сотрудничестве с фирмой ИБМ планирует получить персональный компьютер с памятью в 1 мегабайт и быстродействием 1 млн. операций в секунду. Такой машины будет более чем достаточно для реализации нашей системы учителя Лиспа. Подобные тенденции в развитии вычислительной техники заставляют нас более оптимистично смотреть на будущее интеллектуальных систем преподавания, примером которых может служить описанный машинный учитель Лиспа. Мы рассчитываем, что продолжение исследований в области университетского преподавания таких дисциплин, как матема- тика и курс программирования, позволит в недалеком буду- щем заложить концептуальные основы для использования имеющихся вычислительных мощностей. Перспективы обес- печить каждому студенту преимущества индивидуального обучения выглядят весьма многообещающими, и это может совершить поистине революционный переворот в самой систе- ме образования. Об авторах: Джон Р. Андерсон — профессор психологии и вычислительных наук в - Университете Карнеги — Меллона. Брайен Дж. Рейзер — научный сотрудник того же университе- та. 1. Bloom В. S. The 2 Sigma Problem: The Search for Methods of Group Instruction as Effective as One-to-One Tutoring, Educational Resear- cher, 13, 1984, p. 3. 2. Sleeman D., Brown J. S. (eds.). Intelligent Tutoring Systems.— New York: Academic Press, 1982. 3. Anderson J. R., Farrell R., Sauers R. Learning to Program in LISP, Cognitive Science, 8, 1984, p. 87. 4. Sauers R., Farrell R. GRAPES User’s Manual. Technical Report ONR-82-3.— Pittsburg: Carnegie — Mellon University, 1982. 5. Carrol J. M. Minimalist Training, Datamation. Nov. 1984, 125. Благодарности. Финансовую поддержку данной работе оказал отдел морских исследований. Нам бы хотелось отметить также большой вклад в работу по созданию машинного учителя Лис- па Р. Фаррела, Э. Яффе, Б. Марвел и П. Пиролли.
PROUST (автоматический отладчик для программ на языке Паскаль) У. Льюис Джонсон, Эллиот Солоуэй PROUST1—система, позволяющая на основе заложенных в нее знаний обнаруживать несинтаксические ошибки в программах на языке Паскаль у начинающих программистов. После того как программа прокомпилирована, автоматически вызывается система PROUSfT, которая анализирует програм- му и сообщает студенту о всех найденных ошибках. PROUST — это не просто система, помогающая програм- мистам обнаружить ошибки, или система, ориентированная на узкий класс возможных ошибок, например неверного задания начальных значений переменных. Она задумана как система, автоматически находящая любую ошибку в большинстве программ, составленных новичками. В настоящее время она в состоянии правильно распознавать все ошибки в более чем 70% программ, написанных студентами при решении не слишком трудных задач по программированию. Обнаруживая ошибку, система PROUST не ограничивается указанием не- верных строк программы, а определяет, как можно эту ошибку скорректировать, и приводит соображения относи- тельно того, чем она вызвана. Наша цель состоит в том, чтобы на основе системы PROUST создать замкнутый учеб- ный комплекс, в котором система предлагает студентам упражнения по программированию, проверяет полученные результаты и дает полезные рекомендации. При разработке системы PROUST мы пришли к выводу о необходимости самого непосредственного учета широкого разнообразия ошибок, встречающихся у начинающих прог- раммистов. Если некая задача по программированию постав- лена перед аудиторией в 200 человек, то студенты напишут 1 Сокращение от Program Understander for Students—* система понимания программ, предназначенная для студентов.— Прим, перев. Перепечатано с разрешения журнала Byte, апрель ,1985 г. Copy- right © by McGraw-Hill, Inc., New York 10020. Все права сохраняют- ся, 48
200 различных программ (при условии, что они не будут списывать друг у друга). Программы различаются как по своему характеру, так и по допускаемым в них ошибкам. Некоторые ошибки (например, не заданы начальные значения переменных) могут появиться в результате случайных упуще- ний— такие ошибки можно легко найти и исправить. Другие ошибки порождаются тем, что программист не в состоянии учесть взаимодействие различных компонентов программы. По отдельности каждый отрезок программы может выглядеть вполне правильным, однако составленная из них программа не работает. Третий тип ошибок обусловлен неверными програм- мистскими представлениями, которые могли выработаться у составителя программы. В этом случае программа может казаться программисту абсолютно правильной, но не выпол- няющей то, что ему хотелось, по совершенно непонятным для него причинам. Ошибки, связанные с неверными представле- ниями, наиболее серьезны, и здесь лучше всего, если студен- ту кто-то укажет причины его затруднений. Если система отладки программы рассчитана на устране- ние ошибок самого различного типа, то она должна «пони- мать», что пытается сделать программист. Обычно в системах отладки не учитывается, что именно данная программа должна делать,— в них анализируется только то, что она делает на самом деле [1—3]. Выяснение того, что программа должна была бы делать,— задача не из легких. Для ее решения отладчику необходимы сведения о программируемой 'задаче и знание методов написания программ. Несмотря на эти сложности, усилия, затрачиваемые на понимание намере- ний программиста, оправданы, поскольку такая информация позволяет обнаруживать большее число ошибок, а кроме того, глубже понять причины их возникновения. Чтобы показать, как понимание намерений программиста может помочь отладке программы, приведем два примера «ошибочных» программ и обсудим, почему в других (отлич- ных от нашего) подходах к автоматической отладке подобные ошибки обнаружить не удается. Затем мы рассмотрим, как такие программы анализируются системой PROUST. В заклю- чение же приведем статистические данные, показывающие работу системы PROUST на многочисленных примерах вы- полнения студентами типичного задания, относящегося к начальному курсу программирования. Эта статистика позво- лит нам обосновать вывод о том, что подход, принятый в системе PROUST, пригоден для коррекции большинства прог- рамм, написанных новичками. 49
Примеры ошибок в программе Обратимся к простой задаче программирования, называ- емой задачей вычисления среднего: Составить программу чтения последовательности поло- жительных чисел, которая останавливается, если прочи- тано число 99999. Вычислить среднее арифметическое из этих чисел, не включая в вычисление среднего число 99999. Обеспечить отбрасывание любого входного зна- чения, не являющегося положительным числом. Программа, написанная студентами, должна вычислять среднее для последовательности положительных чисел. В ней необходимо обеспечить, чтобы входная величина при этом была положительной. Ввод данных прекращается, когда прочитано специально выделенное значение: 99999. Подобные величины, являющиеся сигналом конца ввода, называются сигнальными значениями. На рис. 1,а приведен пример решения задачи вычисления среднего. Программа работает, но дает следующую ошибку: если вы набрали на терминале 99999 сразу же после какого- либо неположительного числа, то программа будет запраши- вать новые данные, несмотря на то что прочитано число 99999. В результате после завершения работы программы вычисленное среднее будет неверным. Например, если вы ввели 5, —5, 99999, то вместо окончания работы программа выдает запрос на новые входные данные. Если затем ввести еще раз 99999, то программа напечатает не 5, а (5+99999)/2, или 50002. Когда поступает последовательность 5, -5, 99999, прог- рамма интерпретирует 99999 как данные, поскольку, когда программа читает -5, она входит в цикл проверки допустимо- сти входных величин, который начинается строкой 10, WHI- LE Val<=ODO. Этот цикл устроен так, что он повторяется до тех пор, пока не будет напечатана положительная величи- на. Так как число 99999 положительно, при его чтении работа цикла заканчивается и происходит передача управления. Однако программа написана в предположении, что, когда происходит выход из цикла проверки допустимости входной величины, текущее значение Vai обязательно является допу- стимым входным значением. В нашем случае Vai не является допустимым значением — это 99999, т. е. сигнальное значение. В цикле же эта величина обрабатывается, как если, бы она была допустимой. Чтобы предусмотреть возможность подоб- ной ошибки, .после цикла проверки допустимости входной величины необходимо ввести проверку на сигнальное значе- ние. 50
a 1 PROGRAM Среднее (Вход,Выход); 2 VAR Sum, Count,Vai, Avg: REAL; 3 BEGIN -4 Sum: = 0; 5 Count :=0; 6 Writein (Введите значение/); 7 Read (Vai), 8 WHILE Vai <>99999 DO 9 BEGIN 10 WHILE Vai <=0 DO 11 BEGIN 12 Writein ('Недопустимый вход, введите заново'); 13 Read (Vai); 14 END; 15 Sum : = Sum 4-Vai; 16 Count : = Count+1; 17 Writein ('Введите значение:') 18 Read (Vai); 19 END; 20 IF Count >0 THEN 21 Writein ('Данные не поступили') 22 ELSE BEGIN 25 Avg; =Sum/Count; 24 Writein ('Среднее значение равно, 'Avg); 25 END; 26 END. 6 Реакция системы PROUST: Вами пропущен тест на сигнальное значение. Если сигнальное значение подается на вход сразу же за неположительной величиной, то ваша программа примет его за допустимое значение. Чтобы в этом убедиться, подайте на Вашу программу такую последовательность данных: 5 -5 99999 Рис. 1. Пример одной из попыток новичка написать программу для вычисления среднего арифметического (а). Система PROUST объяс- няет ошибки, вкравшиеся в программу, и даже предлагает те данные, на которых эта ошибка проявляется (б). На рис. 1,6 показано сообщение системы PROUST, описывающей пропущенную проверку на сигнальное значе- ние. Эта ошибка представлена двояко. Во-первых, дается ее описание на естественном (в оригинале на английском.— Перев.) языке, а во-вторых, система PROUST строит пример сочетания данных, на котором программа срабатывает неверно. Теперь обратимся к программе, показанной на рис. 2. а. Это другое решение задачи вычисления среднего, в котором ошибка достаточно глубоко скрыта. Если на терминале 51
a 1 PROGRAM Среднее (Вход, Выход); 2 VAR Sum, Count, Vai, Avg: REAL; 3 BEGIN 4 Sum: = 0; 5 Count: =0; 6 Writein ('Введите значение:')} 7 Read (Vai); 8 WHILE Vai < >99999 DO 9 BEGIN 10 WHILE Vai < = 0 DO 11 BEGIN 12 Writein (' Недопустимый вход, введите заново'); 13 Read (Vai); 14 END; 15 WHILE Vai <>99999 DO 16 BEGIN 17 Sum:=Sum+Val; 18 Count :=Count+1; 19 Writein ('Введите значение:')} 20 Read (Vai); 21 END; 22 END; 23 IF Count =0THEN 24 Writein ('Данные не поступили')} 25 ELSE BEGIN 26 Avg: = Sum/Count; 27 Writein ('Среднее значение равно JAvg); 28 END; 29 END; 6 Реакция системы PROUST: В строке 15 вы используете оператор WHILE там,где должен быть оператор IF. Вероятно, вы хотели, чтобы часть программы, начиная со строки 15, выполнялась только один раз за время прохождения цикла, од- нако в вашей программе она будет выполняться многократно. Рис. 2. Другая попытка новичка составить программу вычисления среднего арифметического (а). Система PROUST вновь объясняет, в чем состоит затруднение с программой, а также показывает, что программист хотел сделать и что он сделал на самом деле (б). набрать положительное число, а за ним—отрицательное, то последнее будет учтено при вычислении среднего. Так, если вы напечатаете -2, 2, 99999, то среднее будет равно 2, но если вы напечатаете 2, -2, 99999, то среднее будет равно 0. В отличие от примера, приведенного на рис. 1,а, здесь программист не забыл о проверке, связанной с сигнальным значением, но записал ее с использованием команды WHILE вместо комайды IF. По-видимому, у студейта сложилось неправильное представление о том, чем различаются эти два 52
оператора, и он не понимает, как происходит передача управления в цикле, содержащем WHILE. Пока такой цикл остается прямолинейной цепочкой команд, студент не сталки- вается ни с какими трудностями. Однако если в цепочку вклиниваются другие проверки, то студент считает, что их также следует записывать с использованием оператора WHI- LE, видимо, чтобы гарантировать их повторение, когда происходит повторение всего цикла. Впредь мы будем назы- вать такого сорта недоразумение «путаницей WHILE с IF». На рис. 2,6 показана реакция системы PROUST, которая с учетом случившегося недоразумения дала студенту соответ- ствующее объяснение. Ошибки, приведенные на рис. 1,а и 2,а, иллюстрируют следующее. Во-первых, ошибки часто невозможно обнару- жить, если не знать заранее, что должна была бы делать рассматриваемая программа. Обе программы идут независимо от того, что поступает им на вход, и чтобы обнаружить ошибку, надо убедиться в том, что выдаваемые программами результаты отличаются от тех, которые должны быть на самом деле. Ошибки такого типа встречаются нередко: проверка на сигнальное значение оказывается пропущенной в 18% программ вычисления среднего, составленных начина- ющими программистами. Во-вторых, студенты не в состоянии обнаружить подоб- ные ошибки без подсказки, поскольку программа дает невер- ные результаты при необычных сочетаниях входных значе- ний, и маловероятно, чтобы начинающий программист дога- дался их попробовать. В случае же «путаницы WHILE с IF», даже если программист и попробует такие входные значения, он, по всей видимости, не сможет понять, почему программа сбивается,— ведь он ожидает от оператора WHILE не того действия, которое тот на самом деле производит. Варианты отладки без анализа намерений программиста Чтобы подкрепить наши утверждения о том, что для отладки необходимо знать намерения программиста, рассмот- рим основные альтернативы такого подхода к организации отладки и покажем, почему они не годятся. Мы рассмотрим такие методы, как анализ соотношения вход — выход, анализ потоков данных и распознавание типичных ошибочных отрез- ков программ. Отладка путем-анализа поведения программы в зависимо- сти от входа сводится к определению случаев, когда выход программы оказывается неправильным, и к выдвижению гипотез относительно ошибок, которые могли бы привести к 53
неправильному поведению программы [2]. При использовании этого метода отладки последняя напоминает постановку диаг- ноза в медицине [4]: неверное поведение программы можно считать симптомом, а сами ошибки — «заболеванием». Такой подход связан с двумя затруднениями: не всегда удается выделить симптомы, характеризующие плохую программу, и не всегда симптомы удается связать с ошибками. Ошибки, содержащиеся в программах, приведенных на рис. 1,а и 2,а, лишь иногда сказываются на выходе программы, а чтобы узнать, когда именно это происходит, необходимо представ- лять себе, каким в действительности должен быть выход.’ Поскольку в примере «путаница WHILE с IF» программе не удается заметить недопустимость отрицательного входного значения, после того как будет напечатано положительное число, то естественно возникает предположение, что в прог- рамме пропущена проверка на допустимость входных вели- чин. И только ознакомившись с текстом программы, можно понять, что ошибка не в отсутствии такой проверки, а в организации проверки на наличие сигнального значения. В качестве другого подхода к отладке программы можно было бы рассмотреть анализ потоков данных [1]. Он исполь- зуется во многих компиляторах, обнаруживающих ошибки в программе. В ходе анализа потоков данных ищутся явные аномалии в характере определения данных и их последующе- го использования в программе. При этом удается обнаружить, что какая-то переменная не определена или что переменная определена, но нигде не используется. Однако если в потоках данных нет отклонений от нормы, то такой анализ никаких ошибок не обнаружит. Ни в одном из примеров, приведенных в предыдущем разделе, нет нарушений в потоках данных; следовательно, при этом подходе найти ошибки не удастся. Можно также попытаться проанализировать структуру самой программы в надежде, что это наведет на мысль о наличии ошибок. Можно было бы создать библиотеку шабло- нов для наиболее распространенных ошибок типа пропуска проверки на сигнальные значения или использования операто- ров WHILE вместо IF, и затем в поиске ошибок сличить эти шаблоны с программой. При таком подходе, однако, невоз- можно узнать, с каким именно местом в программе следует сличать шаблоны ошибок. Так, в примере путаницы «WHILE с IF» имеются три различных цикла, содержащие WHILE. Как можно узнать, в каком из этих циклов вместо WHILE должно быть IF? А возможно, везде следует сохранить операторы WHILE? Можно было бы сделать шаблон более специализированным, договорившись, что он применяется лишь в случае, когда имеются два цикла, расположенных один в другом и обладающих общей выходной проверкой. Но 54
такой слишком специализированный шаблон был бы неприме- ним в других случаях, где WHILE появляется вместо IF. Во всех описанных подходах к отладке делается попытка выделить ошибки без понимания того, что ожидается от программы; вследствие этого не удается уйти далеко от просто догадок о возможном характере ошибок. Чтобы достигнуть большего, система отладки должна быть способ- ной выяснить намерения программиста и сопоставить их с текстом программы. Подход, использованный в системе PROUST PROUST написана на языке Т, диалекте языка программи- рования Лисп1. В целом система содержит примерно 15 тыс. строк программы на Лиспе и работает на ЭВМ VAX-11/750. Совместно с фирмой «Корсвеар» (г. Сан-Диего, шт. Калифор- ния) был создан упрощенный вариант системы — Micro- PROUST. (Относительно системы MICRO-PROUST, рассчи- танной на персональный компьютер IBM PC, см. дополни- тельную информацию, набранную петитом.) Система Micro- PROUST в состоянии распознать классы ошибок, обсужда- емые в настоящей статье; однако существует целый ряд более тонких ошибок, которые система PROUST обнаруживает, а система Micro-PROUST—нет. (Читателю, который заинтере- суется полным перечнем диагностических возможностей си- стемы PROUST, рекомендуем обратиться к статье [3].) Micro-PROUST для машины IBM PC Micro-PROUST представляет собой подмножество системы PRO- UST. Наша система способна работать с ограниченным числом программ, составленных новичками, и в настоящее время она может работать лишь с теми примерами решений задачи вычисления среднего и задачи об осадках, которые поставляются вместе с системой. Micro-PROUST работает на машине IBM PC, имеющей 512К байт памяти с использованием языка Лисп (Golden Common LISP), поставляемого корпорацией Gold Hill Computers. Исходная программа и примеры могут быть получены непосредственно по сети BYTE. Файл под названием PRSTREAD.ME содержит указания относительно запуска системы micro-PROUST. 1 Неспециалисту может показаться неожиданным переход к другому языку программирования. Дело в том, что Паскаль — язык, предназначенный для вычислений и малопригодный для представле- ния знаний и работы с ними. Поскольку система PROUST является системой, широко использующей знания, то применение языка Лисп, предназначенного прежде всего для манипулирования не числовой, а символьной информацией, здесь вполне оправдано.— Прим. ред. 55
Анализ программ системой PROUST основан на знании программируемой задачи. Студенты могут решать задачу многими способами, так что в их программах возможны самые разнообразные ошибки; однако дело в том, что все они пытаются решить одну и ту же задачу. Знание задачи открывает возможность в какой-то степени упорядочить разнообразие решений, даваемых новичками. Кроме того, такое знание дает важную информацию относительно намере- ний программиста. Для описания задач программирования в системе PROUST был разработан специальный язык описания задач. Каждая задача описана на этом языке, и в системе PROUST создана библиотека таких описаний. Описание задачи при этом пред- Распечатка1. Другой способ проверки допустимости входа для задачи вычис- ления среднего арифметического. Read (Vai); WHILE Val<=ODO BEGIN Writein ('Недопустимый вход, введите заново'); Read (Vai), END; WHILE Vai <>99999 DO BEGIN Sum := Sum + Vai; Count := Count +1; Writein ('Введите значение:') Read (Vai); WHILE Val< = ODO BEGIN Writein ('Недопустимый вход, введите заново'); Read (Vai); END; END; ставляет собой перефразированную формулировку задачи на естественном (английском) языке, в которой задача предлага- ется студенту. Чтобы понять студенческие программы, системе PROUST необходимо самой знать, как следует решать задачу. Решения для данной задачи программирования могут принимать самую разнообразную форму. Предположим, что допустимость входных данных в программе на языке Паскаль можно проверить только одним способом, а именно поместив цикл, 56
содержащий оператор WHILE, в начало основного цикла программы, как показано на рис. 1,а и 2,а. Если системе PROUST известно, что в какой-то программе необходимо проверять допустимость входных данных, то она будет ориентироваться на поиск такого рода цикла, а также теста на сигнальное значение, который должен идти за ним. Однако для оценки допустимости входных данных существуют нес- колько путей. Так, распечатка 1 дает пример цикла, в котором проверка входных данных производится особым образом. Вместо одного цикла проверки здесь используются два. Один из них размещается на выходе из основного цикла програм- мы, а другой предшествует основному циклу. При таком методе не требуется дополнительной проверки на сигнальное значение, поскольку, как только входная величина признана допустимой, управление переходит к выходу из основного цикла, где стоит оператор WHILE. Следовательно, не зная метода, которым пользуется программист для проверки допу- стимости входной величины, система PROUST не может решить, искать ли проверку на сигнальное значение внутри этого цикла. Отсутствие проверки на сигнальное значение на рис. 1,а является ошибкой, а в распечатке 1—нет. Чтобы понять, как студент задумал свое решение и как реализовал его, системе PROUST необходимы знания о программирова- нии. После того как намерения программиста поняты, можно воспользоваться знаниями о распространенных ошибках и разыскать их в написанной программе. Система PROUST анализирует программы методом синте- за. При обследовании какой-либо программы система прежде всего отыскивает в своей библиотеке соответствующее описа- ние задачи. Строятся гипотезы относительно методов, кото- рые использовал программист для удовлетворения каждого из требований, перечисленных в описании задачи. Всякая такая гипотеза представляет собой возможную правильную реализа- цию соответствующего требования. Если одна из гипотез укладывается в программу студента, то в системе PROUST делается вывод, что реализация отвечает данному требова- нию. Если же гипотеза, предложенная системой, не уклады- вается в написанную студентом программу, то PROUST обращается к базе данных распространенных ошибок — с целью найти объяснение обнаруженного расхождения. Описания задач Описания задач в системе PROUST состоят из указаний целей программирования и множества объектов данных. Цели программирования представляют собой те принципиальные требования, которые должны быть удовлетворены, а множе- 57
ства объектов данных — те данные, с которыми должна работать программа. В качестве первого шага при переводе формулировки задачи с естественного (английского) языка на язык описания задач системы PROUST производится выявление различных целей, которые упоминаются в исходной формулировке задачи. Решения задачи вычисления среднего (см. ее формулиров- ку на с. 50) применяются к некоторой последовательности входных данных. Очередной элемент этой последовательно- сти, поступающий на вход программы, будем называть именем Следующий. Тогда из формулировки задачи можно извлечь следующую совокупность целей: Прочесть последовательные значения переменной Следу- ющий и остановиться по прочтении сигнального значения, т. е. 99999. Убедиться, что не соблюдается условие Следующий <=о'. Вычислить среднее арифметическое из всех значений переменной Следующий. Выдать на печать среднее арифметическое. Теперь мы должны использовать эти цели при построении описания задачи для системы PROUST. Каждый объект данных, упоминаемый в целях, объявляется и получает имя. В рамках такого описания записывается каждая цель, извле- ченная из формулировки задачи. Результирующее описание задачи представлено в табл. 1. Таблица 1. Перевод задачи вычисления среднего арифметиче- ского на язык описания задач, используемый в системе PROUST ((Определить-Программу Среднее) (Определить-Объект ?Следующий) (Определить-Объект ?Сигнальный Значение 99999) (Определить-Цель (Сигнально-Контролируемый-Вход ?Следующий 9Сигнальный)) (Определить-Цель (Допустимость-Входа ?Следующий (< = ?Следующий 0))) (Определить-Цель (Выход(Среднее (?Следующий)))) Как и все структуры данных, обсуждаемые в настоящей работе, описания задач даются в форме списков, а каждое 1 В системе,PROUST комбинация <=воспринимается как матема- тический знак и как двуместный предикат «меньше'или равно».— Прим. ред. 58
утверждение и каждое выражение заключается в круглые скобки. Оператор Определить-Программу используется для задания имени программы, оператор Определить-Объект— для задания имени объекта, а оператор Определить-Цель задает цель. Перед именами объектов стоят вопросительные знаки. В описании задачи вычисления среднего даны определения для двух объектов, а именно: ?Следующий и ?Сигнальный. Такое применение вопросительного знака часто встречается в программах систем искусственного интеллекта; оно указывает на то, что данная переменная не является самостоятельной величиной, а служит лишь некоторым параметром, вместо которого делается подстановка в ходе использования структу- ры данных. Например, вместо объекта ?Следующий для входных данных будет подставляться имя той переменной на языке Паскаль, которую студент избрал для хранения вход- ного значения. Объект ?Сигнальный имеет значение 99999, поэтому всюду, где в описании задачи встречается ?Сигналь- ный, вместо него можно подставлять 99999. Объекты могут иметь как постоянное, так и переменное значение. В нашем случае объект ?Сигнальный является постоянной величиной, значение которой равно 99999, а объект ?Следующий — переменной. В универсальном языке описания задач системы PROUST объекты могут иметь самые разнообразные закрепляемые за ними свойства, которые в нашем простом примере не используются, и поэтому мы на них не останавливаемся. Целевые утверждения состоят из наименования типа цели и списка аргументов. Так, в записи (Среднее ?Следующий) Среднее представляет тип цели (т. е. вычисление среднего), а ?Следующий — аргумент. Это выражение означает, что прог- рамме предписывается вычислить среднее арифметическое величин ?Следующий. Аргументы в целевых выражениях могут встречаться в различной форме: объектов, предикатов и даже других целевых выражений. В выражении (Допустимость-Входа ?Следующий (<= ?Следующий 0)) первый аргумент является объектом (?Следующий), а второй —предикатом проверки выполнения неравенства ?Следующий < = 0. В языке Лисп имена функций и операторов помещаются перед их аргумента- ми, поэтому символ <= предшествует объекту ?Следующий и 0 в приведенном выражении. Если встречаются вложенные друг в друга цели, как в (Выход (Среднее ?Следующий)), то внешняя цель относится к результату достижения внутренней цели. Таким образом, приведенная цель требует, чтобы на выходе программы было среднее из величин объекта ?Следу- югций. 59
В рассматриваемом примере описания, которые дает си- стема PROUST на языке описания задач, довольно хорошо соответствуют исходным формулировкам на естественном (английском) языке. Полученные описания задач говорят о том, что программа должна делать, но не о том, как это будет достигаться. Поэтому система PROUST должна проанализи- ровать каждую индивидуальную программу и установить, как в ней планируется выполнить требования, поставленные в задаче. Знания из области программирования Знания из области программирования хранятся в системе PROUST в форме фреймов [5], каждый из которых соответ- ствует определенному конкретному понятию, которое «изве- стно» системе. Фреймы подобны записям в реляционных базах данных, хотя операции, которые могут над ними осуществляться, несколько иные. Знания во фреймах разме- щаются в слотах (ячейках), которые аналогичны именам полей записи, и в «заполнителях», представляющих собой те значения, которые закрепляются за каждым слотом. Здесь мы остановимся на знаниях двух типов из области программирования, а именно: знаниях о целях и знаниях о планах (другие типы знаний обсуждаются в работе [6]). Цели — это, требования, изложенные в описаниях задач, а планы — это стереотипные методы достижения целей. Основ- ная часть работы по написанию программ сводится к выделе- нию целей, которые необходимо достигнуть, и к выбору планов их достижения. Поэтому для каждой цели, указанной Таблица 2. Определение цели Сигнально-Контролируемый- Вход на языке описания задач в системе PROUST (Определение-Цели Сигнально-Контролируемый-Вход Частный-Случай Форма Чтение-и-Обработка (Сигнально-Контролируемый-Вход ?Вход ?Стоп) Основной-Сегмент Основная-Переменная Название Внешний-План-контроля Примеры Основной цикл ?Следующий «сигнально-контролируемый цикл» Т (Обработка-Чтение-WHILE Чтение-Обработка-WHILE Чтение-Обработка-Повторецие Обработка-Чтение-Повторение Цикл-с-Счетчиком)) 60
в описании задач, система PROUST извлекает из своей базы знаний необходимые планы. В поисках плана, наилучшим образом соответствующего цели, эти планы сопоставляются с рассматриваемой студенческой программой. В табл. 2 показано определение в системе PROUST цели Сигнально-Контролируемый-Вход. Это определение содержит ряд слотов, таких, как Частный-Случай, Форма, Основной- Сегмент и т. д., вместе с их заполнителями, т. е. Чтение-и- Обработка, Основной-Цикл:, ?Следующий. Эти слоты служат различным функциям, ряд из которых мы здесь обсудим. Наиболее важны слоты типа Частный-Случай и Примеры. В слоте Примеры перечисляются различные планы достиже- ния данной цели, имеющиеся в базе данных системы PRO- UST. Заполнителем этого слота служит список из пяти элементов — имен соответствующих планов. Слот Частный- Случай указывает на класс, которому принадлежит данная цель. В данном случае классом целей является Чтение-и- Обработка — это цели, связанные с прочтением последова- тельности величин и их обработкой. Таблица 3. План достижения цели Сигнально-Контро- лируемый-Вход (Определение-Плана Обработка-Чтение-While Константы Переменные Шаблон (?Стоп) (?Вход) ((ПОДЦЕЛЬ (Вход ?Вход)) (WHILE (О ?Вход ?Стоп) (BEGIN 7 * (ПОДЦЕЛЬ (Вход ’Вход)))))) В табл. 3 приведен план, названный Обработка-Чтение- While, это один из примеров планов достижения цели Сиг- нально-Контролируемый-Вход. Здесь этот план несколько упрощен по сравнению с тем планом, который на самом деле используется в системе PROUST. Планы также определяются на языке слотов и их заполнителей. Наиболее важным в данном случае является слот Шаблон, дающий описание программы на языке Паскаль, призванной реализовать дан- ный план. Шаблоны содержат относящиеся к языку Паскаль операторы, подцели и метки, но они записываются не в обычном для Паскаля -синтаксисе, а в списковых обозначени- ях. Например, форма (WHILE (<> ?Вход ?Стоп)...) на Паскале должна была бы иметь вид WHILE ?Вход <> ?Стоп DO ... . Символы, снабженные вопросительными знаками, 61
представляют собой образцы переменных, и в ходе выполне- ния плана в них будут делаться подстановки. Так, вместо ?Следующий подставляется переменная языка Паскаль, со- держащая входные данные, а вместо ?Стоп подставляется константа, а именно сигнальное значение. Оператор ?*—это образец типа «все, что угодно», вместо которого может быть подставлена произвольная последовательность операторов языка Паскаль. Для указания подцелей используются формы вида (ПОДЦЕЛЬ ...). Это те цели, которые в свою очередь должны быть достигнуты посредством других планов. Сопоставление планов с программой Теперь посмотрим, как планы и цели используются для понимания программы. План, рассматриваемый в программе, приведенной на рис. 1,а, был реализован без ошибок. Вы увидите, как в системе PROUST возникает предположение относительно плана, реализация которого, возможно, пресле- дуется данной программой, и как затем происходит сопостав- ление этого плана с программой. В нашем случае сопоставле- ние успешно, поскольку рассматриваемый план реализован безошибочно. В следующем разделе мы исследуем, что происходит, когда из-за ошибок в студенческой программе план в соответствие с ней не приводится. На первом шаге — еще до того, как производится анализ целей и планов,— делается синтаксический разбор студенче- ской программы, в результате чего строится дерево разбора. Весь последующий анализ программы производится на дереве разбора, а не на первоначальном тексте программы. При анализе программы система PROUST по очереди выбирает цели из описания задачи. Предположим, что первой выбрана цель (Сигнально-Контролируемый-Вход ?Следующий ?Сигнальный). В это целевое выражение система подставляет все объекты, значения которых уже известны. На рассматри- ваемом этапе единственная информация, известная об объек- тах ?Следующий и ?Сигнальный,— это те сведения, которые содержатся в описании программы. Там указано, что значени- ем ?Сигнальный является 99999, а значение объекта ?Следу- ющий не дано. Поэтому в целевое выражение вместо ?Сиг- нальный подставляется его значение,, а объект ?Следующий остается без изменения. В результате получаем: (Сигнально- Контролируемый-Вход ?Следующий 99999). Теперь системе PROUST необходимо извлечь из базы знаний о программировании те планы, которые можно было бы использовать для достижения цели Сигнально-Контроли- руемый-Вход. 'При этом извлекается заполнитель для слота Примеры в соответствии с определением для такой цели, 62
показанным в табл. 2. Этот заполнитель представляет собой список из пяти элементов: Обработка-Чтение-While, Чтение- Обработка-While, Чтение-Обработка-Повторение и Цикл-с- Счетчиком. Каждый из этих элементов является названием определенного плана. Система PROUST начинает с первого плана из этого списка, а именно с плана Обработка-Чтение- While, который, таким образом, служит начальной гипотезой относительно того, как в студенческой программе осуще- ствляется достижение цели Сигнально-Контролируемый- Вход. Поскольку в целевое выражение (Сигнально- Контролируемый-Вход ?Следующий ?Сигнальный) подставля- лись известные значения объектов, то теперь те же подста- новки необходимо сделать и в выбранном плане. Чтобы разобраться в характере подстановок, система изучает слот. Форма в определении цели Сигнально-Контролируемый-Вход, т. е. (Сигнально-Контролируемый-Вход ?Вход ?Стоп). Этот слот указывает, какие образцы переменных используются в планах, реализующих данную цель. Сравнивая слот Форма с анализируемой целью, система PROUST решает, что каждый раз объект ?Вход в выбранном плане должен быть заменен на значение объекта ?Следующий, а объект ?Стоп—на значе- ние объекта ?Сигнальный, т. е. 99999. Поскольку значение ?Следующий остается неизвестным, система просто заменяет объект ?Вход на имя переменной ?Следующий. При этом предполагается, что значение объекта ?Следующий опреде- лится потом, в ходе сопоставления плана с программой студента. На рис. 3 показано, как происходит сопоставление плана Обработка-Чтение-While, с примером программы, показанным на рис. 1,а. Сопоставление начинается с цикла, содержащего WHILE. Образец, который содержится в плане для цикла с WHILE, имеет вид (WHILE (<> ?Следующий 99999) ...), а в программе имеются два цикла, содержащие WHILE1: WHILE Vai <> 99999 DO ... и WHILE Vai <=0 DO ... . Система PROUST обычно пытается привести в соответствие каждый образец с каждым из этих мест в программе. (WHILE (<> ?Следующий 99999) ...) сопоставляется с WHILE Vai О 99999 DO... при условии, что Vai подставляется вместо ?Следующий. В то же время (WHILE (<> ?Следующий 99999) ...) не сопоставляется с WHILE Vai <=0 DO ..., так как здесь используется проверка вида <= вместо <> и сравнение производится с нулем, а не с 99999. Поэтому 1 Комбинация <> (как и комбинация < —) здесь используется как единый символ, эквивалентный математическому знаку («не равно»).— Прим. ред. 63
система PROUST в качестве сопоставимой пары для образца, содержащегося в плане, останавливается на WHILE Vai о 99999 DO .... Поскольку такое сопоставление достигается при подстановке Vai вместо объекта ?Следующий, делается за- пись, что значением ?Следующий является Vai. Впоследствии в любом компоненте этого плана, содержащем объект ?Сле- дующий, последний всегда будет заменяться на Vai. Студенческая программа ПЛАН ЧТЕНИЯ (Read Vai) / T ?Следующий = Vai Обработка -Чтение - While Writelnf'Введите значение:*) / Read (Vai); < / ((ПОДЦЕЛЬ (Вход ?Вход)) WHILE Vai < > 99999 DO ----------------(WHILE (о ?Вход 99999) BEGIN ----------------------------------------(BEGIN WHILE Vai < = 0 DO ?* BEGIN (ПОДЦЕЛЬ (Вход ?Вход))))) Writein ('Недопустимый вход, введите заново7) Read (Vai); END; Sum := Sum + Val; Count ; = Count +1; Writeln ('Введите значение:'); Read (Vai); ПЛАН ЧТЕНИЯ END ? Следующий = Vai (Read Vai) Рис. 3. Сопоставление плана Обработка-Чтение-While с программой, показанной на рис. 1,п. Следующим компонентом плана, который система PRO- UST сопоставляет с программой, является (BEGIN...). В программе имеется несколько утверждений с BEGIN, кото- рые могли бы быть сопоставлены с таким образцом. Однако в шаблоне, описывающем план, образец (BEGIN...) появляется внутри образца с WHILE, который перед этим был подверг^ нут сопоставлению с программой. Это значит, что оператор BEGIN должен быть расположен внутри компонента програм- мы WHILE Vai •<> 99999 DO... . Следовательно, остается лишь одно по-настоящему сопоставимое утверждение в прог- рамме, которое содержит оператор BEGIN. Когда система PROUST начинает сопоставлять компонен- ты вида (ПОДЦЕЛЬ (Вход ?Следующий)), возникает необхо- димость прибегнуть к рассуждениям иного рода; Такие компоненты плана представляют собой цели, и,'чтобы прове- сти йх сопоставление с данной программой, система PROUST 64
должна обратиться к тому же самому процессу выбора плана, который был использован при выборе плана Обработка- Чтение-While. Однако сначала подставляются все перемен- ные-образцы в целевом выражении, которые получили значе- ния. Поскольку объект ?Следующий имеет в качестве своего значения Vai, то под целевое выражение приобретает вид (Вход Vai). Затем система PROUST извлекает из базы данных планы, реализующие Вход. Одним из таких планов является план ЧТЕНИЕ, в котором для задания следующего значения используется оператор чтения (Read) языка Паскаль. Этот план успешно сопоставляется с элементами программы, со- держащими оператор Read. Приведенный пример показывает, что система PROUST анализирует программы путем предсказания, какие планы могли быть использованы в программе, и последующей проверки этих предсказаний. Осуществляя выбор из опреде- ленного набора планов и подпланов для каждой цели, система PROUST способна предложить разнообразные способы дости- жения каждой цели. Поскольку в системе сначала реализует- ся возможный вариант программы, который затем сопостав- ляется с действительной программой, можно сказать, что система PROUST осуществляет анализ путем синтеза. В общем случае выработка гипотез для планов и сопоставление их с программами—процесс значительно более сложный, чем рассмотренный здесь сценарий (подробную информацию мож- но найти в [3]). Распознавание ошибок При сопоставлении плана Обработка-Чтение-While с прог- раммой, представленной на рис. 1,а, соответствие оказалось абсолютным. А раз никаких трудностей при сопоставлении не возникло, следовательно, реализация этого конкретного плана была сделана без ошибок. Однако часто случается, что ни один из планов, предлагаемых системой PROUST, не сопо- ставляется с программой. Когда это происходит, система должна искать ошибки, приводящие к несоответствию для одного из планов. В этом разделе мы обсудим несоответ- ствия, обусловленные путаницей WHILE с IF, показанной на рис. 2, и объясним, как при этом найти ошибки. В примере путаницы WHILE с IF обнаружение ошибки происходит в процессе достижения цели Допустимость-Входа. Один из планов, предлагаемых системой PROUST для дости- жения этой цели, называется Проверка-Правильности-Входа. Он включает: оператор WHILE, проверяющий, не выходит ли данное входное значение за определенный предел; сообщение об ошибке внутри цикла WHILE; подцель Вход, позволяющую 3—2596 65
повторно прочесть входное значение, если оно лежит вне указанного диапазона значений, и проверку, позволяющую убедиться, что выходное условие для основного цикла удов- летворяется. Распечатка 2 дает пример безошибочной реализации этого плана. Распечатка 2. Безошибочная реализация плана Проверка - Правильности - Входа WHILE Vai < = О DO BEGIN Writein ('Недопустимый вход, введите заново') Read (Vai); END; IF Vai о 99999 THEN План Проверка-Правильности-Входа приводится в соот- ветствие с примером путаницы WHILE с IF (рис. 2,а) во всем, кроме одной детали, а именно: отсутствует проверка условия выхода из основного цикла вида IF Vai О 99999 THEN... . Там, где по плану ожидается появление оператора IF, стоит оператор WHILE. Таким образом, система PROUST сталкивается с различием в планах, т. е. различием между ожидаемым планом и реальным отрезком программы. Когда система обнаруживает различия в планах, рассматриваемый план не отбрасывается, а делается попытка найти ошибки, объясняющие эти различия1. В большинстве случаев подобное объяснение достигается путем применения правил ошибок. Каждое правило ошибки состоит из двух частей: проверочной, которая по различиям в планах позволяет установить, применимо ли данное правило, 1 Заметим, что несоответствие плана программе используется в системе PROUST и для перехода к рассмотрению другого плана. Авторы предлагают, таким образом, сначала проверить, нет ли в программе студента просто ошибок, объясняющих непригодность рассматриваемого плана. Такое решение отнюдь не безобидно: теоретически непригод- ность плана в некоторых случаях можно объяснять ошибками студента при его реализации, тогда как в действительности студент мог следовать совсем другому плану. В этом случае вмешательство системы PROUST будет лишь сбивать студента с толку. Дело осложняется еще и тем, что планы носят эвристический характер и нет гарантии, что среди них не пропущен именно тот, который имеет в виду студент (обратите внимание на 4% таких совершенно «ориги- нальных» программ в табл. 5). Заметим,.однако, что принятие решения такого рода при отсут- ствии полной надежности — одна из актуальных задач искусственного интеллекта.— Прим. ред. 66
и результативной, которая дает объяснение этим различиям т. е. показывает результат применения правила. Таблица 4. Правило ошибки для случая «путаницы WHILE с IF», вырабатываемое системой PROUST. Оно позволяет объяснить различие в планах между ошибочной частью программы (рис. 1) и правильной реализацией этой части (распечатка 1) (Определить-Правило Тип-Оператора Характер-Ошибки Ошибка WHILE-BMecTO-IF IF (IF . WHILE) (WHILE-BMecTO-IF Путаница) В табл. 4 показано правило ошибки, которое позволяет объяснить различия в планах в случае путаницы WHILE с IF. Это правило записано с применением слотов и заполнителей, причем одна группа слотов составляет его проверочную часть, а вторая—результативную. Проверочная часть состоит здесь из слота Тип-Оператора и слота Характер-Ошибки. Слот Тип-Оператора указывает, что элементом плана, кото- рый не сопоставляется с программой, должен быть оператор IF. Слот Характер-Ошибки имеет значение (IF. WHILE), указывающее, что там, где должен стоять оператор IF, находится оператор WHILE. Оба этих проверочных условия выполняются в нашем примере путаницы WHILE с IF, поэтому запускается та часть правила, которая обеспечивает его действие. Она состоит из слота Ошибка, заполнителем которого является описание ошибки, связанной с обнаружен- ным различием в планах. Ошибкой в данном случае является путаница WHILE с IF. Сообщая обнаруженные? факты сту- денту, система PROUST придает каждому описанию ошибки вид текста на естественном (английском) языке, и, если необходимо, вырабатывает данные, демонстрирующие при- сутствие этой ошибки в его (студента) программе. Результаты испытаний Системы Система PROUST была испытана на большом числе программ, написанных начинающими программистами. Учеб- ному классу начинающих программистов была дана задача об осадках (обобщение задачи вычисления среднего арифметиче- ского), показанная*в табл. 5. Компилятор для языка Паскаль, которым пользовались в этой работе, был модифицирован таким образом, чтобы сохранялись копии всех синтаксически верных программ, 3* 67
Таблица 5. Задача об осадках, предложенная классу начинающих программистов с целью проверки эффективности системы PROUST (а), и результаты использования этой системы (б) а Составить программу на языке Паскаль, которая будет просить пользователя вводить с терминала числа, каждое из которых соответ- ствует количеству осадков в шт. Нью-Хейвен за какой-либо из дней. Замечание: поскольку осадки не могут выражаться отрицательными числами, программа должна отказываться воспринимать отрицатель- ные величины. Из полученных таким образом данных программа должна вычислять следующие статистические характеристики: 1) среднее количество осадков в день; 2) число дождливых дней; 3) число допустимых входных данных (за вычетом любых недопустимых данных, которые могли бы быть прочитаны программой); 4) максимальное количество осадков в день. Программа должна читать данные до тех пор, пока пользователь не наберет на терминале число 99999, которое является сигнальным значением, указывающим на окончание ввода данных. Не включайте 99999 в вычисления. Предполагается, что если входное значение неотрицательно и не равно 99999, то оно допустимо. б Общее число программ 206 Число программ с ошибками 183 (89%) Число полностью проанализированных программ 161 (79%) Общее число ошибок 570 Верно узнанные ошибки 533 (94%) Пропущенные ошибки 29 (6%) Случаи ложной тревоги 55 Число программ, проанализированных частично 35 (17%) Общее число ошибок 191 Верно узнанные ошибки 71 (37%) Изъятые из анализа ошибки 70 (37%) Пропущенные ошибки 50 (26%) Случаи ложной тревоги 19 Число программ, которые система не анализировала 9 (4%) которые студенты отдавали на компиляцию. Это позволяло анализировать не только окончательное решение, полученное студентом, но и промежуточные варианты его программы. Поскольку первые варианты, как правило, наиболее ошибоч- ны, возникала возможность испытать систему PROUST в самых сложных условиях. Результаты использования системы PROUST в процессе решения задачи об осадках представлены в таблице. В ходе 68
проведенного испытания было рассмотрено 206 попыток решить эту задачу. В 79% случаев система достигла полного понимания студенческой программы, обнаружив 94% всех сделанных при этом ошибок, т. е. качество работы системы намного превосходило возможности преподавателей. Из при- веденной таблицы видно, что 6% ошибок остались неузнанны- ми, а 55% найденных ошибок оказались «ложной тревогой» При этом мы считали ошибку пропущенной, если она либо действительно была пропущена системой, либо опознана неправильно. К «ложной тревоге» относятся случаи, когда обнаруженная ошибка либо на самом деле отсутствует в программе, либо неверно указан тип ошибки. Таким образом, неверно диагностированные ошибки подсчитываются и как «ложная тревога», и как неузнанные, что приводит к некото- рому завышению общего числа ошибок в диагнозе. Когда системе PROUST не удается полностью разобрать- ся в программе студента, ее возможности по узнаванию ошибок резко падают. 17% всех программ были проанализи- рованы лишь частично. В этих случаях система PROUST вычеркивала из описаний анализ тех ошибок, которые были под вопросом вследствие неполного понимания программы. Оставшиеся (из этих 17%) описания ошибок часто оказыва- лись неверными, но при этом система PROUST могла предуп- редить студента, чтобы он относился к результатам анализа критически. Остальные 4% студенческих программ были столь далеки от того, что ожидала система PROUST, что она вообще оказалась не в состоянии их проанализировать (в таких случаях система не давала никаких сообщений об ошибках). Пока мы не настолько удовлетворены качеством работы системы PROUST, чтобы целиком отдать ее в пользование студентам: необходимо снизить долю ложных тревог, увели- чив при этом долю полностью проанализированных программ. Если система PROUST не в состоянии проанализировать часть какой-то программы, то она должна попытаться опреде- лить, почему ее невозможно проанализировать, и как-то прокомментировать эту часть программы. Если это удастся сделать, то можно ожидать, что система будет успешно справляться с 80—85% из общего числа анализируемых программ. После этого мы сможем передать систему PROUST для обучения студентов и начать ее систематическое исполь- зование. Заключение Система PROUST обеспечивает высококачественный ана- лиз ошибок,’ допускаемых начинающими программистами. 69
Она почти доведена до того уровня, когда ее можно будет всключить в курс обучения программированию, что принесет студентам большую пользу. (В настоящей статье мы дали лишь весьма упрощенное описание того, как в системе PROUST происходит обнаружение ошибок.) Следующим ша- гом, возможно, будет создание на основе этой системы курса автоматического обучения программированию. Такая система могла бы не только исправлять студенческие ошибки, но и предлагать студентам дополнительные задачи, на которых они при необходимости могли бы попрактиковаться. Об авторах: У. Льюис Джонсон — научный сотрудник Йельского университета; область его исследований включает искусственный интеллект, программное обеспечение и машин- ное обучение. Эллиот Солоуэй — ассистент профессора Йель- ского университета; руководит группой исследователей, зани- мающейся проблемами использования теории познания в программировании. 1. Fosdick L. D., Osterweil L. J. Data Flow Analysis in Software Reliability, Computing Surveys 8, vol. 3, 1976, p. 305-330. 2. Harandi M. T. Knowledge-Based Program Debugging. A Heuristic Model, Proceedings of the 1983 SOFFAIR. 3. Wertz H. Stereotyped Program Debugging: An Aid for Novice Programmers. International Journal of Man-Machine Studies 16, 1982, p. 379-392. 4. Shortliffe E. H. Computer-Based Medical Consultations: MYCIN.— N.Y. American Elsevier Publishing Co., 1976. 5. Minsky M. A Framework for Representing Knowledge. The Psycholo- gy of Computer Vision (P. Winston ed.).—N. Y.: McGraw-Hill, 1975. [Русский перевод: Минский M. Структура для представления знания.— В сб.: «Психология машинного зрения».— М.: Мир, 1987.] 6. Johnson W. L. Intention-Based Diagnosis of Programming Errors, Yale University Department of Computer Science, 1984. Эта работа финансировалась совместно исследовательскими груп- пами по персоналу и обучению Отделения научной психологии службы морских исследований и Военным' институтом социологиче- ских исследований по контракту № 0014-82-К-0714. Дополнительную литературу по классификации ошибок, автоматической отладке и когнитивной основе программирования можно запросить по адресу: Проект «Познание и программирование», вычислительный факультет Йельского университета, шт. Нью-Хейвен, США. Особую признатель- ность авторы выражают Г. Кирслею и Л. Издебски из корпорации «Корсвеар» и Б. Валлачу из отдела перспективной обработки за их работу по созданию системы Micro-PROUST.
Лисп совершает революцию Патрик Г. Уинстон Лет пять назад мой друг, работавший в крупной фирме по производству компьютеров, зашел ко мне поговорить о разработке пакетов программ из области искусственного интеллекта. «С чего следует начать?» — спросил он. Мой ответ был довольно мрачноватым: «Прежде всего следует раздобыть примерно миллион долларов для приобретения одной из больших машин фирмы DEC. Затем следует решить, какой из диалектов (MacLISP, InterLISP, Portable Standard LISP, Franz LISP и пр.) языка Лисп лучше всего выбрать. После этого надо достать магнитную ленту с Лиспом и найти человека, который установит ее в вашу систему. Весьма вероятно, что документация окажется неполной, а работа с математическим обеспечением будет непростым делом. Если же диалект Лиспа, на который вы ориентировались, окажется непригодным, то смена его будет сопряжена со значительны- ми трудностями». Сейчас картина радикально изменилась. Я работал над этой статьей, пользуясь написанной на Лиспе программой- редактором. Этот редактор является частью программной системы, предназначенной для недорогого персонального компьютера. С помощью этой системы можно писать и отлаживать программы, которые без всяких изменений можно выполнять также на сверхсложном и сверхмощном компьюте- ре Simbolics 3670. Это стало возможным благодаря двум обстоятельствам. Во-первых, в настоящее время широкое распространение получили персональные компьютеры, име- ющие оперативную память объемом 512 килобайт, которой вполне достаточно для того, чтобы освоить Лисп и заняться его приложениями в области искусственного интеллекта. Во-вторых, появился новый диалект Лиспа—CommonLISP, Перепечатано с разрешения журнала Byte, апрель 1985 г. Copy- right © by McGraw-Hill. Inc., New York 10020. Все права сохраняют- ся. 71
являющийся бесспорным «наследником» всех предыдущих версий языка Лисп. Программу, написанную на этом диалек- те, при необходимости можно без изменения перенести с персонального компьютера на более мощную машину. Такие компании, как Data General, DEC, Hewlett-Packard, LISP Mashine, Simbolics Inc., Texas Instruments и Xerox, поставляют версии диалекта CommonLISP для своих машин; подобные версии созданы и для персональных компьютеров. Все это позволяет утверждать, что серьезное программирова- ние на Лиспе перестало быть привилегией «избранных». Лисп—язык манипулирования символами В отличие от большинства языков программирования Лисп ориентирован на обработку символьных, а не числовых данных. Чтобы пояснить это, рассмотрим примеры манипули- рования символами, взятыми из программы Манипулятор, которая перемещает детские кубики, подобные изображен- ным на рис. 1. Специализированные процедуры решения задач, входящие в эту программу, позволяют ей устранять препятствия, возникающие в процессе перестановки кубиков в виде других кубиков. В этих процедурах хранится и использу- ется информация о том, что лежит на каждом объекте. Так, кубик ВЗ служит опорой для кубиков В1 и В4. Программа знает об этом, поскольку символы В1 и В4 содержатся в списке символов, получаемых применением к ВЗ команды get (получать) (get 'ВЗ 'поддерживаемые-предметы) -» (Bl В4) Теперь представим, что значением переменной «препят- ствия» является список предметов, лежащих на кубике ВЗ. Стандартные функции Лиспа, работающие с символами, поз- воляют быстро находить ответы на основные вопросы: Сколько всего препятствий, т. е. какова длина (length) этого списка? (length препятствия) —>2 Что является первым (first) объектом этого списка? (first препятствия)-»В1 Входит (member) ли элемент В1 в число препятствий? (member 'Bl препятствия)—>t Является ли В4 первым элементом спйска? (eq'В4 (first препятствия))-» nil Заметим, что символ t в Лиспе обозначает истину, а 1 В языке Лисп принято различать переменную и ее значение с помощью специального значка «цитирования». Так, если известно, что х=5, то употребление 'х означает «само х как таковое», а просто х означает 5.— Прим. ред. 72
МИР КУБИКОВ СЛАЙД 9 К В1 В4 ВЗ В5 ЦЕЛЬ - ПОЛОЖИТЬ КУБИК В6 НА КУБИК В 5 В СООТВЕТСТВИИ С КОМАНДОЙ: (PROGN (PUT-ON' В 6' ВЗ')' DONE). ----------------ПРОБЕЛ-ПЕРЕХОД К СЛЕДУЮЩЕМУ СЛАЙДУ Рис. 1. Так выглядит мир кубиков, в котором действует программа Манипулятор. символ nil—ложь. Другие элементарные функции, использу- емые при работе с символами, служат для внесения измене- ний в список и проверки того, является ли список пустым: Удалить (remove) В4 из списка (setf препятствия (remove 'В4 препятствия))—> (В 1) Добавить В7 к списку (setf препятствия (cons 'В7 препятствия))—> (В7 В1) Является ли список объектов пустым? (endp препятствия) -> nil Измененный список может быть снова связан с символом ВЗ: (setf (get 'ВЗ ' под держиваемые-пред меты) препятствия) Все эти вопросы и- изменения являются самыми элемен- тарными примерами возможностей работы Лиспа с символа- ми. Подобным образом манипулирование символами позволя- ет программе Манипулятор запоминать свои действия. Соот- ветствующая подпрограмма содержит команды, которые ис- следуют и видоизменяют символьные выражения, описыва- ющие сделанные перестановки. Эти выражения позволяют отвечать на вопросы типа следующих: Переставлял ли ты кубик В7? Каким образом ты переставил кубик В7? Зачем ты переставил кубик В7? Когда ты переставил кубик В7? Используя операции над символами, программа Манипуля- 73
тор может объяснять свои действия подобно тому, как это делает человек. Действия с символами имеют самое прямое отношение к искусственному интеллекту, и не удивительно, что Лисп стал основным языком для его приложений. Специалисты по вычислительной технике должны знать Лисп Специалисты, хорошо знакомые с Лиспом, высказывали немало соображений по поводу того, почему Лисп остается основным языком искусственного интеллекта и почему посте- пенно становится также языком самого широкого назначения. Некоторые полагают, что это объясняется удобным набором стандартных функций и возможностей языка Лисп. Другие утверждают, что причины кроются в традиции интерактивно- го программирования и наличии эффективных средств отлад- ки программ. Третьи отмечают простые способы определения новых процедур, образующих иерархическую структуру.1 В настоящее время область применения языка Лисп все более расширяется, не ограничиваясь одним лишь искусствен- ным интеллектом. Поскольку большинство систем искус- ственного интеллекта довольно велики по объему, Лисп получил известность как язык, удобный для создания боль- ших систем. На нем, к примеру, были успешно реализованы целые операционные системы Лисп-машин, которые произво- дят сейчас все больше крупных фирм. Благодаря успехам применения языка Лисп ныне многие преподаватели вычислительной техники пришли к выводу, что понимание Лиспа необходимо всем, работающим в этой области знаний. Другой причиной такого отношения к Лиспу является то, что он зарекомендовал себя как язык, прекрасно подходящий для иллюстрации многих основных концепций вычислительной техники. Например, в Массачусетском техно- логическом институте диалект Лиспа под названием Scheme многие годы используется как основной язык во вводном курсе по языкам программирования. Лисп—язык одновременно старый и новый Прежде чем приступить к изучению -языка программирова- ния, следует выяснить, каков он: слишком старый и, следова- тельно, несовременный или слишком молодой и потому недостаточно оформившийся. Что можно сказать в этой связи о Лиспе? Многие, вероятно, будут удивлены, узнав, что 1 Краткое введение в Лисп дано в статье: Bortz J.’, Diamant J. LISP for the IBM Personal Computer, Byte, June 1984, p. 281. 74
история Лиспа берет начало с конца 50-х годов, и, следова- тельно, Лисп почти такой же старый язык, как Фортран. Но в противоположность Фортрану современный Лисп серьезно отличается от Лиспа двадцатипятилетней и даже пятилетней давности. Почему получилось так, что Фортран «застыл», тогда как Лисп продолжал интенсивно равзиваться? Причина такого различия заключается в том, что коммерческое приме- нение Фортрана началось давно, а Лиспа—лишь в последние годы. Дело в том, что Лисп требует большого объема машинной памяти, и пока системы памяти были очень дороги, стандартизация Лиспа считалась экономически нецелесооб- разной. В результате диалекты Лиспа множились, в язык постоянно вносились изменения, а заимствования из одного диалекта в другой приводили к тому, что все диалекты оказались одинаково развитыми. В настоящее время сто- имость машинной памяти значительно снизилась, и Лисп стал использоваться для решения коммерческих задач, что приве- ло к необходимости его стандартизации. К счастью, многие особенности Лиспа, приобретенные за 25 лет его развития, вошли в диалект Common LISP. Назову некоторые из них, на мой взгляд, наиболее важные: 1) система автоматического создания структур, вырабаты- вающая процедуры доступа к отдельным полям записи; 2) обобщенный оператор присваивания, который может работать с переменными, свойствами, массивами и структура- ми; 3) гибкий механизм, позволяющий достаточно просто и наглядно строить сложные выражения по образцу; 4) использование макроопределений, дающих пользовате- лю возможность создавать свой синтаксис; 5) разнообразные способы задания значений аргументов, в том числе использование необязательных аргументов с указа- нием значений по умолчанию и аргументов, связываемых со значениями с помощью ключевых слов; 6) современная потоковая система ввода-вывода данных. Как изучать Лисп Я думаю, что лучше всего изучать Лисп в диалоге с компьютером. Можно привести ряд аргументов в пользу такого метода обучения. Во-первых, решение задач в диалоге с компьютером—весьма увлекательное занятие, тогда как выполнение упражнений по учебнику—дело довольно скуч- ное. Во-вторых, экспериментируя .с компьютером, можно немедленно разобраться в самых непонятных вопросах. И наконец, очень полезно наблюдать за ходом работы интерес- ных программ. 75
Как бы то ни было, бесспорно одно: программирование на Лиспе—дело чрезвычайно интересное. Рассмотрим для при- мера несколько фрагментов работы в режиме взаимодействия с вспомогательным пакетом программ, который называется San Marco LISP Explorer. Мы остановимся на программе Манипулятор, перемещающей кубики, программе поиска, экспертной системе, основанной на использовании правил, и системе общения на естественном языке. Планирование в мире кубиков Программы на языке Лисп обычно представляют собой пример применения эвристики редукции: чтобы решить слож- ную задачу, ее разбивают на несколько более простых. Этот метод можно продемонстрировать на примере простой прог- раммы Манипулятор. Распечатка 1 содержит входящую в программу Манипулятор процедуру1, которая разбивает зада- чу перестановки кубика с места на место на три подзадачи: ПОЛОЖИТЬ-НА-^ПОЛУЧИТЬ-МЕСТО / OCBOBOflHTb^MECTOJWITH-MECTO / ИЗБАВИТЬСЯ-ОТ--- Г v ПОМЕСТИТЬ-НА } ОСВОБОДИТЬ" ПОВЕРХНОСТЬ I \ взять^г^^ \\ ПЕРЕМЕСТИТЬ-РУКУ \ ПЕРЕМЕСТИТЬ-ОБЪЕКТ' ^ОТПУСТИТЬ Рис. 2. Схема взаимодействия процедур, вхо- дящих в программу Манипулятор. 1 Функции, используемые в Лиспе, как правило, являются слова- ми английского языка. Приведем их перевод, чтобы облегчить понимание этой и последующих распечаток: defun—определить функцию, list—список, if—если, null — принятое в Лиспе обозначе- ние пустого списка, first — первый, last — последний, rest — остаток, let — пусть, append—добавить, reverse—обратить, rem'ove-if— удалить-если, cons — сокращение от слова construct — строить, match — сопоставить, cond — имя условного выражения в Лиспе (con- ditional— условный), and — и, or — или, equal — равный, second — второй.— Прим. пер. 76
взять кубик, передвинуть его и опустить. Рис. 2 изображает схему взаимодействия процедур, входящих в Манипулятор. Лисп позволяет создавать многоуровневые программы, подоб- ные программе Манипулятор, в которых большие задачи постепенно разбиваются на все более мелкие подзадачи. Распечатка 1, Процедура, входящая в программу Манипулятор, иллюстрирующая метод редукции (defun положить-на (объект место) (взять объект) (переместить объект) (отпустить объект)) определение процедуры поло- ;жить-на ;для этого может потребоваться ;удалить препятствия ;это просто ;это тоже просто Поиск пути по сети дорог Метод поиска часто используется в искусственном интел- лекте при решении различных задач, например, таких, как: 1) нахождение пути по сложной сети дорог; 2) сборка двигателя; 3) понимание вопроса, адресованного базе данных; 4) обучение диагностике заболеваний растений. Рис. 3.' Пример сети, напоминающей карту дорог. Грубо говоря, задача поиска представляет собой задачу нахождения пути по сети, подобной схеме дорог. Пример 77
такой сети изображен на рис. 3. Цель (GOAL) находится близко от пункта Е, но прямого пути, соединяющего цель с пунктом Е, нет; вершина Е является тупиковой. Есть два способа добраться из точки В до цели: прямой путь и путь через вершину С. Распечатка 2 содержит фрагмент програм- мы на Лиспе, находящей пути в подобного рода сетях. Хотя для читателя, не знакомого с Лиспом, большая часть этой программы окажется непонятной, он не может не отметить ее ясность и простоту. Немного потрудившись, можно переде- лать процедуру поиска так, чтобы она находила кратчайший путь. Распечатка 2. Поисковая программа, находящая путь через сеть, подобную изображенной на рис. 3 (defun начало-поиска (исходная-точка цель) (поиск (list (list исходная-точка)) ;Создаем очередь из одного цель)) незавершенного пути ;и движемся к цели (defun поиск (очередь цель) ;;если не осталось незавершенных путей, закончить работу (if (null очередь) nil ;;иначе, если цель достигнута, закончить работу (if (equal цель (first (last (first очередь)))) (first очередь) ;;иначе продолжить первый незавершенный путь ;;и добавить его к началу очереди (поиск (append (продолжение (first очередь)) (rest очередь)) цель)))) (defun продолжение (путь) (let ((обращенный-путь (reverse путь))) ; Продолжаем путь на один шаг вправо дсеми возможными способами (mapcar ’reverse -отбрасываем замкнутые пути (remove-if ’(lambda (новый-путь) (member (first новый-путь) (rest новый-путь))) -создаем по новому пути для каждой соседней точки (mapcar ’(lambda (сосед) (cons сосед обращенный-путь)) -находим соседей (get (first обращенный-путь) ’соседи)))))) Анализ в мире животных Экспертные системы, использующие наборы правил, нахо- дятся сейчас на переднем крае исследований в области 78
Таблица 1. Правило, которое может быть использовано системой узнавания животных, написанной на Лиспе (создать-правило определение 16 если ((>животное) является (>вид)) ((>животное) является родителем (>детеныш)) то ((>детеныш) является (>вид))) искусственного интеллекта, имеющих практические примене- ния. В основе таких систем лежит идея сведения знания к системе простых правил. В табл. 1 изображено правило, которое может быть использовано системой узнавания живот- ных, написанной на Лиспе. Это правило выражает тот факт, что детеныш животного является животным того же вида. В Лиспе нет встроенных средств для обработки таких правил, но этот язык как нельзя лучше подходит для создания программ, использующих правила. Средства символьного ма- Таблица 2. Фрагмент распечатки, показывающей, как программа движется от исходных фактов к заключениям правило ОПРЕДЕЛЕНИЕ 1 утверждает: (РОББИ ЯВЛЯЕТСЯ МЛЕКОПИТАЮЩИМ) поскольку (РОББИ ИМЕЕТ ШЕРСТЬ) правило ОПРЕДЕЛЕНИЕ 5 утверждает: (РОББИ ЯВЛЯЕТСЯ ЖИЩНИКОМ) поскольку (РОББИ ЕСТ МЯСО) правило ОПРЕДЕЛЕНИЕ 9 утверждает: (РОББИ ЯВЛЯЕТСЯ ГЕПАРДОМ) поскольку (РОББИ ИМЕЕТ ТЕМНЫЕ ПЯТНА) (РОББИ ИМЕЕТ РЫЖИЙ ЦВЕТ) (РОББИ ЯВЛЯЕТСЯ ХИЩНИКОМ) (РОББИ ЯВЛЯЕТСЯ МЛЕКОПИТАЮЩИМ) правило ОПРЕДЕЛЕНИЕ 16 утверждает: (БОЗО ЯВЛЯЕТСЯ МЛЕКОПИТАЮЩИМ) поскольку (РОББИ ЯВЛЯЕТСЯ РОДИТЕЛЕМ БОЗО) (РОББИ ЯВЛЯЕТСЯ МЛЕКОПИТАЮЩИМ) правило ОПРЕДЕЛЕНИЕ 16 утверждает: (БОЗО ЯВЛЯЕТСЯ ХИЩНИКОМ) поскольку (РОББИ ЯВЛЯЕТСЯ РОДИТЕЛЕМ БОЗО) (РОББИ ЯВЛЯЕТСЯ ХИЩНИКОМ) правило ОПРЕДЕЛЕНИЕ 9 утверждает: (БОЗО ЯВЛЯЕТСЯ ГЕПАРДОМ) поскольку (РОББИ ЯВЛЯЕТСЯ РОДИТЕЛЕМ БОЗО) (РОББИ ЯВЛЯЕТСЯ ГЕПАРДОМ) 79
!ипулирования, которыми обладает Лисп, позволяют исследо- вать символы, из которых состоит правило, сравнить их с символами, составляющими известные факты, и поступить затем сообразно результатам этого сравнения. Одним из видов программ, работающих на основе правил, является интерпретатор правил, работающих в прямом направлении, который использует правила для перехода от исходных фактов к следствиям. В табл. 2 мы приводим фрагмент работы этой программы, показывающий, каким образом она использует знания о Робби, связи между Робби и Бозо и еще несколько правил. Любая основанная на использовании правил экспертная система должна содержать процедуру сопоставления выраже- ний. Экспертная система в целом слишком сложна для того, чтобы привести ее здесь, однако процедура сопоставления достаточно короткая и простая. Задачей этой процедуры является сравнение двух выражений и составление списка пар соответствующих друг другу символов, как это изображено на распечатке 3. Распечатка 4 содержит текст программы, осуществляющей такое сопоставление. Распечатка 3. Процедура сопоставления выражений, которая входит в экспертную систему, основанную на использовании правил, должна сравнивать выражения и создавать список пар соответствующих друг другу символов (match *((>животное)— (>вид ’(Робби—гепард) nil) ((животное Робби) (вид — гепард)) ;первый аргумент—образец. ;второй аргумент—выражение. ;третий аргумент—список пар, розданных предыдущими сопо- ставлениями. ;в данном примере он пуст. ;ответ—список пар соответ- ствующих элементов. Распечатка 4. Программа сопоставления для экспертной системы, использующей правила (defun match (р d список-соответствий) (cond ((and (endp p) (endp d)) (cond ((endp список-соответствий) t) (t список-соответствий))) ((or (endp p) (fcndp d)) nil) ((equal (first p) (first d)) ;Успех ;Неудача ;Первые элементы совпа- дают 80
(match (rest p) (rest d) ;Сопоставляем остатки список-соответствий) ;Первые элементы различны ((atom (first р)) nil) Сопоставление с >-переменными ((equal (first (first р)) ’>) (match (rest p) (rest d) добавить-значение (second (first p)) (first d) список- соответствий))) ((equal (first (first p)) *<) подстановка значения (match (cons (извлечь-значение (second (first p)) список-соответствий) (rest p)) d список-соответствий)))) здесь использованы следующие дополнительные процедуры: (defun извлечь-значение (переменная список-соответствий) (second (assoc переменная список-соответствий))) (defun добавить-значение (переменная значение список-соответствий) (append список-соответствий (list (list переменная значение)))) Разговор о слесарных инструментах Программа сопоставления с образцом, которую мы упомя- нули, не только является важной составной частью системы, использующей правила. Эта программа дает почти все необхо- димое для построения известной программы Доктор, которая ведет себя подобно врачу-психиатру, высказывающему сочув- ствие в ответ на ваши жалобы, касающиеся семейных неурядиц. Более существенно то, что программы сопоставле- ния с образцом тесно связаны с программами общения на естественном языке, основанными на так называемой семан- тической грамматике. В общих чертах семантическая грамма- тика представляет собой модель того, что можно сказать в рамках короткого разговора, используя базу данных ограни- ченного объема. Допустим, вас интересует цвет, вес, размер, количество и местонахождение определенных инструментов. Вы можете дать следующие команды: 1. Найди молоток. 2. Сосчитай красные отвертки. 3. Какого цвета гаечные ключи? 4. Сколько весит маленькая красная отвертка? 81
5. Каковы размер и вес большой пилы? 6. На каком расстоянии находится маленькая красная отвертка от большой голубой? КАКОВЫ > атрибуты > инструменты ------------> о-----------> о-----------> о НАЙДИ > инструменты ------------>о------------>о СОСЧИТАЙ > инструменты ------------>0------------>0 НА КАКОМ РАССТОЯНИИ НАХОДИТСЯ инструмент 1 ОТ инструмент 2 ----------------------------------> о---------> о —> о----------> о Рис. 4. Верхний уровень семантической грамматики, которая может быть использована для обработки вопросов о цвете, весе, размере и местоположении инструментов. На рис. 4 показано, каким образом можно обрабатывать такие вопросы, используя семантическую грамматику. Интер- претатор семантической грамматики находит путь по сети, подобной той, что изображена на рисунке, используя вход- ную последовательность предложений для выбора маршрута. Ветвь, помеченная знаком >, требует исследования некоторой подсети. Каждый законченный путь от входа к выходу связан со своей процедурой извлечения информации. Например, Каковы размер, вес и цвет пилы ? КАКОВЫ > атрибуты > инструменты Рис. 5. Пример вопроса, сопоставимого с верхней строкой семантиче- ской грамматики, изображенной на рис. 4. предложение, приведенное на рис. 5, соответствует верхней линии сети. Отметим еще раз, что возможности Лиспа рабо- тать с символами позволяют легко писать программы, кото- рые могут как сопоставлять предложения с образцом, пред- ставленным семантической грамматикой, ,так; и запускать соответствующие процедуры поиска. На распечатке 5 видно, как выглядит подобное представление в лисповской форме. 82
Распечатка 5. Фрагмент программы, осуществляющей сопоставление предложений с образцами, задаваемыми семантической грамматикой, и запускающей соответствующие процедуры поиска (записать вопрос ((ветвь (КАКОВЫ (разобрать атрибуты) (разобрать инструменты) (если-разбор-окончен (выдать-атрибуты атрибуты инструменты))) (НАЙДИ (разобрать инструменты) (если-разбор-окончен (найти инструменты))) (СОСЧИТАЙ (разобрать инструменты) (если-разбор-окончен (выд ать-количество инструментов))) (НА КАКОМ РАССТОЯНИИ НАХОДЯТСЯ (разобрать инструмент!) ОТ (разобрать инструмент?) (если-разбор-окончен (выдать-расстояние инструмент! инструмент?)))))) Заключение Вряд ли стоит еще приводить примеры, объясняющие, почему профессионалам необходимо знакомство с языком Лисп. Хотя все рассмотренные программы элементарны, они показывают, какого рода задачи могут решать их «старшие братья». Лисп служит основой для разнообразных экспертных систем, многие из которых далеко выходят за рамки простого использования правил. На Лиспе ведется большая часть исследований, связанных с естественным языком. В действительности язык Лисп вполне подходит для большинства специалистов, работающих в таких связанных с искусственным интеллектов областях, как машинное обуче- ние, преподавание, исследование речи, зрительного воспри- ятия, создания роботов и исследование всевозможных логиче- ских рассуждений. Об авторе: Патрик Генри Уинстон — выпускник Массачу- сетского технологического института. В настоящее время Уин- стон возглавляет лабораторию искусственного интеллекта в этом институте и занимается исследованиями по обучающим- ся программам. 83
1. Abelson H., Sussman G. J. Structure and Interpretation of Computer Programs.—Cambridge (Ma): MIT Press, 1984. 2. Winston P. H. Artifitial Intelligence (2nd ed.).— Reading (Ma): Addi- son-Wesley, 1984. 3. Winston P. H., Berthold К. P. H. LISP (2nd ed.).—Reading (Ma): Addison-Wesley, 1984. [Материал двух последних книг частично содержится в книге: Уинстон П. Искусственный интеллект.— М.: Мир, 1980.] 4. Winston Р. Н., Karen А. Р. The Al Business: The Commercial Uses of Artificial Intelligence.— Cambridge (Ma): MIT Press, 1984.
Открытые системы Карл Хьюитт Современные системы связанных друг с другом взаимоза- висимых компьютеров принципиально отличаются от одиноч- ных машин. Эти так называемые открытые системы выявили ограниченность современного подхода к созданию искусствен- ного интеллекта. Необходим новый подход, учитывающий задачи их организации и управления ими. В настоящей статье рассматриваются проблемы, возникающие при рассмотрении открытых систем. Открытая система всегда взаимодействует с внешним миром, что ограничивает ее возможности. Открытую систему характеризуют следующие особенности. 1. Непрерывное изменение и эволюция. В распределенные системы постоянно подключаются новые ЭВМ, новые пользо- ватели и аппаратура. Поэтому в системе должна быть заложена способность меняться в соответствии с меняющими- ся требованиями. Более того, она должна иметь возможность создавать новые внутренние компоненты, позволяющие при- спосабливаться к изменениям режима работы. Без этого любая система в конце концов достигает некой «предельной точки», далее которой уже невозможно увеличивать количество поль- зователей и число выполняемых операций. 2. Ограниченные связи и децентрализованное принятие решений. Вообще говоря, компьютеры, люди, ведомства, образующие открытые системы, не имеют прямого доступа к «внутреннему миру» друг друга. Локальность связей предпо- лагает, что архитектура системы должна быть рассчитана на большое число ЭВМ, расположенных в самых разнообразных местах и не имеющих доступа к внутренним компонентам друг друга. Отсюда возникает необходимость в децентрализо- ванном принятии решений. Перепечатано с разрешения журнала Byte, апрель 1985 г. Copy- right © by McGraw-Hill, Inc., Nev/ York 10020. Все права сохраняют- ся. 85
3. Принципиальная противоречивость баз знаний. Вслед- ствие независимости и приватности информации пользовате- лей разные базы знаний распределенной системы неизбежно содержат противоречащие друг другу положения, т. е если взять в целом все базы знаний, то они будут противоречивы. Децентрализация не позволяет обновлять все базы знаний одновременно. Из этого следует, что нет принципиальной возможности узнать, какая информация содержится в базах данных в каждый конкретный момент. Таким образом, система должна функционировать в условиях противоречиво- сти и неполноты базы знаний. 4. Необходимость соглашений между компонентами сис- темы. В системах с высоким уровнем распределенности ни один компонент системы не управляет ресурсами других компонентов. Отдельные компоненты системы должны «убеждать» друг друга делиться ресурсами, а архитектура систем искусственного интеллекта должна поддерживать ме- ханизм ведения переговоров между компонентами. 5. Неадекватность гипотезы замкнутого мира. Суть гипотезы замкнутого мира заключается в том, что модель внешнего мира считается информационно полной, т. е. из локальной информации, которой обладает система, можно вывести именно те связи, которые существуют между реаль- ными объектами. В системах, построенных согласно этой гипотезе, предполагается, что все проявления некоторого понятия могут быть найдены путем анализа локально доступ- ной информации. На первый взгляд кажется, что эта распро- страненная в литературе гипотеза хороша тем, что дает принципиальную возможность найти ответ на запрос пользо- вателя. К сожалению, чем больше открытая система, тем меньше информации доступно системе локально и тем труд- нее обеспечить такие заранее заготовленные ответы «на все случаи жизни». Постоянный рост и эволюция, узколокальные связи, противоречивость баз знаний, децентрализованное принятие решений, механизм «соглашений» между компонентами—вот необходимые и взаимодополняющие свойства открытых систем. Параллельные вычисления в открытых системах Теория рекурсивных функций (например, машин Тьюринга) основана на пакетной модели вычислений, при этом резуль- тат вычислений получается, когда рекурсивная функция прекращает работу. Для открытых систем необходима иная теория вычислений, при которой предполагается, что обра- 86
ботка данных никогда не прекращается, а результат работы может потребоваться в процессе вычислений, более того, входные данные могут поступать из источников, не предви- денных до начала вычислений. Асинхронные параллельные вычислительные системы ис- пользуют элемент с двумя входами и двумя выходами, имеющий название арбитр. Арбитр — это основной компонент аппаратуры, отличающий параллельные асинхронные вычис- ления от последовательных синхронных. Арбитры принимают решения, для которых нет логического обоснования (доказа- тельства), потому что решение невозможно вывести из знаний о структуре этой вычислительной системы и о ее входах. В самом глубоком смысле арбитры не эквивалентны машинам Тьюринга (см. [3]). На рис. 1 показан арбитр со входами х и у и выходами х' и у'. Рис. 1. Арбитр с входными данными х и у и выходными данными х' и у'. Рис. 2. Если входные данные поступа- ют в арбитр одновременно или почти одновременно, то на выходе получается один из показанных вариантов. Арбитр принимает решение о порядке поступления на него запросов. Если входы х и у поступили примерно в одно и то 87
же время, результатом в конечном счете может быть одна из возможностей, показанных на рис. 2. Выход арбитра не является простой логической функцией от входа, поскольку в арбитре существенно учитывается параметр времени. Однако допустимое множество выходов может быть описано логически с использованием отношения особого логического следования (см. [1]): (х — 1 и у = 1), следовательно (либо (х'=0 и у' = 1) (х' = 1 и у'=0)) Логика не позволяет определить, какая из возможностей осуществится. Системы с арбитрами не эквивалентны неде- терминированной машине Тьюринга, поскольку арбитр может потребовать для принятия, решения сколько угодно времени (скажем, пока выполняются другие вычисления). Если реше- ние принимается недетерминированной машиной Тьюринга, то время, в течение которого она должна принять решение, определено до начала ее работы. Каждый отдельный выбор недетерминированной машины Тьюринга делается за один шаг. На практике на входы арбитра поступают аналоговые сигналы, которые принимают непрерывные значения в интер- вале от 0 до 1. Например, если входы в арбитр равны 0,97 и 0,96, то выход может быть таким, как показано на рис. 3. Рис. 3. Входные данные арбитра, как правило, являются непрерывными сиг- налами в диапазоне от 1 до 0. Арбитр имеет только дискретные значения на выходе (0 или 1), несмотря на то что значения на входе непрерывны. Он дает определенное числовое решение исходя из непрерывного значения времени и двух входных значений. Вследствие непрерывности значений времени и входных сигналов арбитр невозможно строго смоделировать с помощью какой-либо машины с недетерминированными состояниями. При параллельном вычислении арбитры используются многократно, так что число возможных выходных результа- 88
тов растет в зависимости от времени экспоненциально. Поэто- му реальную работу параллельной системы ЭВМ невозможно логически определить на основании входов в систему. Неде- терминированность арбитров, используемых в открытой си- стеме, приводит к тому, что они принимают решение, которое не может быть строго обосновано знанием структуры вычис- лительной системы и ее входных данных. Решения, принятые по соглашению Хороший пример открытой системы представляет собой электронная банковская система. Она имеет автоматические кассовые аппараты, которые позволяют снимать деньги со счета за тысячи километров от банка, где открыт счет. Система постоянно пополняется новыми кассовыми аппарата- ми. Решения по поводу того, какая денежная операция допу- стима, а какая нет, принимаются на основе договора, подпи- санного между банком и вкладчиками. Очень часто договор не позволяет вкладчику брать сумму, превышающую его вклад, даже если гарантировано, что впоследствии на его счет поступят вклады, достаточные для компенсации. Решение о том, в каких случаях можно снять деньги со счета, а в каких нет, нельзя принять на основании полной информации о структуре банковских ЭВМ и входной инфор- мации с кассовых аппаратов. Поэтому такое решение не может быть логически обосновано. Предположим, например, что на счету 1 имеется 1000 долл., а на счету 2 — 2000 долл, и у них есть общий резерв кредита на 3000 долл. Если два запроса—на выдачу 4000 долл, каждый—придут практиче- ски одновременно от обоих вкладчиков, то на один из запросов последует отказ, а второй будет удовлетворен, хотя заранее предусмотреть, каким будет это решение, невозмож- но. Данный пример показывает, как принимает решение от- крытая система, хотя при этом невозможно провести и какое-либо доказательство., Решение принимается не путем логического обоснования, а на основании соглашения действо- вать определенным образом. Здесь обнаруживается расхож- дение между теорией, используемой при создании открытых систем, и их реальной работой. Обычно теория обосновывает практику: например, банковский механизм основывается на теории финансового механизма. Однако эта теория не опреде- ляет реального хода операций с банковскими счетами. Бан- ковские операции определяются очередностью, в которой происходят асинхронные события внутри системы. Каждая операция сложной открытой системы уникальна. 89
В этом примере проявляется разница между классической теорией рекурсивных функций и теориями, разработанными для моделирования открытых систем (подробнее о математи- ческих понятиях, используемых при моделировании поведе- ния открытых систем, см. [1] и [3]). Исследование, а не поиск Поиск в пространствах задач — традиционный прием в области искусственного интеллекта. Понятие пространства задач и самих задач определяется следующим образом [16]. Пространство задач—это набор символьных структур (состояний в этом пространстве) и набор операторов в этом пространстве. Входами и выходами операторов являются состояния. Операторы могут быть частичными, т. е. опреде- ленными не для всех состояний. Последовательность операто- ров составляет путь во множестве состояний. Задача. Постановка задачи в пространстве задач состоит из набора начальных состояний, набора целевых состояний и набора ограничений на траектории (фазовые ограничения). Задача сводится к тому, чтобы найти в пространстве путь, который начинается с любого исходного состояния, проходит одним из тех путей, которые удовлетворяют ограничениям на траекторию, и заканчивается в любом целевом состоянии. Приведем пример пространства задач для игры в шахматы. 1. Начальное состояние: фигуры расставлены в началь- ную позицию. 2. Процедуры: разрешенные ходы. 3. Целевое состояние: мат, вечный шах и пр. Я полагаю, что поиск в пространстве задач — весьма слабая основа для анализа и синтеза в интеллектуальных системах. Поиск в пространстве задач должен быть дополнен исследованием. Чтобы продемонстрировать, в чем состоит различие между поиском и исследованием, рассмотрим про- цесс освоения Северной Америки европейцами. 1. Начальное состояние. В середине XVII в. не существо- вало сколько-нибудь четкого представления об общем состо- янии Северной Америки. Христофор Колумб и Лиф Эриксон совершили пионерские исследования, но полученная информа- ция оказалась разрозненной, неполной и противоречивой. 2. Процедуры. Множество процедур, пригодных для ис- следования континентов, заранее продумано не было. Они импровизировались на ходу и при взаимодействии с внешним миром. Кроме того, различные исследования шли параллель- но; поэтому невозможно описать процесс исследования Север- ной Америки как путь в пространстве состояний континента. 90
Иначе говоря, при исследовании не было поиска единого пути освоения континента. Освоение Северной Америки лучше моделировать как частично упорядоченную цепь историче- ских событий, связанных друг с другом причинно- следственной связью, а не через пространство состояний. 3. Целевое состояние. У европейцев-первопроходцев, ра- зумеется, не было неизменного множества целевых состояний для этого континента, к реализации которого они бы стреми- лись. Их цели, как и методы исследований, скорее всего менялись в процессе освоения материка. Применимость поиска в проблемном пространстве ограни- чивается в основном такими искусственными сферами, как шахматы и автоматическое доказательство теорем. Метод поиска мало пригоден для решения задач, сложность которых обусловлена взаимодействием с реальным миром. Использова- ние проблемных пространств — слишком негибкая методика для задач, связанных с коллективной деятельностью людей, поскольку решение для одного действующего лица представ- лено в нем отдельным глобальным состоянием. Этот недоста- ток метода поиска в проблемном пространстве тесно связан с тем, что машина Тьюринга неприменима для моделирования асинхронных распределенных систем. Решение задач в откры- тых системах больше похоже на процесс освоения Америки, чем на игру в шахматы. Плэннер Плэннер был одним из первых языков программирова- ния для искусственного интеллекта, который обеспечил реше- ние задач поиска по цели, не требуя при этом отдельного описания пространства состояний. Этот язык основывался на следующих принципах [6]:* 1. Доступность информации. Плэннер создавался как максимально гибкая система, позволяющая при решении задач использовать любые имеющиеся знания, даже отрывоч- ные и эвристические. 2. Вызов процедур по образцу. Процедуры в Плэннере можно вызывать по образцу предполагаемого задания. Пред- положим, у вас засорилась раковина. Во-первых, вы можете решить эту проблему, зная имя сантехника, которого нужно вызвать. Другой способ (который больше похож на «вызов по образцу») заключается в том, чтобы «объявить» о том, что у вас засорена раковина и что нужен специалист, чтобы ее прочистить. В Плэннере это реализуется путем превращения такого «объявления» (т. е. обобщенной картины задания) в цель. 3. Процедурная интерпретация логических высказываний. 91
Одна из основных идей, реализуемых в Плэннере, состоит в использовании двойственной природы некоторых декларатив- ных и императивных предложений. Рассмотрим высказывание «из А следует В». Это явно декларативное высказывание. Но оно может использоваться в Плэннере и как императивное. Оно может означать, что мы должны вызвать процедуру, которая проверит, есть ли в базе знаний А, и если есть, выяснит, надо ли внести в нее В. Более того, в Плэннере можно задать процедуру, которая проследит, является ли нашей целью вывод В, и если так, то не следует ли сделать А подцелью. Такие же соображения можно высказать об утверждении, обратном утверждению «из А следует В». Высказывания с кванторами всеобщности, конъюнкциями, дизъюнкциями и т. д. тоже могут использоваться двояко. Теоремы Плэннера используются императивно—как процеду- ры и декларативно — как данные. Плэннер представлял собой шаг вперед по сравнению с универсальными процедурами доказательств, которые исполь- зовались в распространенных в то время системах доказатель- ства теорем методом резолюций. Плэннер, разработанный автором настоящей статьи, был реализован Сассманом, Ви- ноградом и Чарняком (см. [5] и [23]). Виноград использовал его для своей диалоговой программы понимания естественно- го языка SHRDLU в искусственном «мире кубиков» [27]. Чтобы понять, как работает процедурная интерпретация, рассмотрим некое логическое утверждение: (Для всех х ((х—человек) следует (х—смертен))). Это—импликация. Она имеет две части: антецедент, т. е. условие «х—человек», и следствие — «х смертен». Здесь говорится: для всех х, если х—человек, то х смертен. Логические правила позволяют сделать из этого высказыва- ния определенные выводы. Например, то, что Сократ смер- тен, можно вывести из предпосылки о том, что Сократ— человек: (Сократ человек) (Сократ смертен) Я предложил интерпретировать импликации типа «все люди смертны» как процедуры языка программирования. В Плэннере есть две интерпретации. В первой интерпретации, по фактам (она называется антецедентной), из факта «х— человек» следует «х смертен». Это можно выразить так: (когда (уверен (человек х),ж делай (уверен (смертен х))). 92
При другой интерпретации, от цели (в Плэннере она называлась «консеквентной»), из цели «х смертен» логически выводится подцель «х—человек»: (когда (цель (смертен х), делай (показатель (человек х))). Идеи Плэннера были обобщены и развиты в более поздних языках программирования для искусственного интеллекта. Однако они не предназначались специально для нужд открытых систем. Логическое программирование Логическое программирование было предложено как способ программирования в будущем [12]. Рассмотрим те проблемы, с которыми неизбежно придется столкнуться при попытке применить логику в качестве языка программирования, пред- назначенного для использования эмпирических знаний и взаимодействия с реальным миром. Соображения, высказан- ные в данной статье, продолжают споры, которые начались с момента создания ИИ. Читателям, которые заинтересуются этим вопросом, я рекомендую познакомиться с приложением к статьям Марвина Минского о фреймах [15] и с более поздним аналитическим обзором Дэвида Израэла [8]. Логическое программирование должно базироваться на логике. Но что такое логика? Большинство сторонников логического программирования предлагают в качестве основы для такого подхода логику первого порядка с ее четко определенной семантикой и синтаксисом. Такая точка зрения отчасти подкрепляется тем, что логика первого порядка, дополненная теорией множеств, явилась хорошей основой для математической семантики. Омега-логика представляет собой более общую форму логики первого порядка, допускающую применение кванторов над предикатами и функциями. Ее преимущество над логикой первого порядка состоит в том, что она включает полное ламбда-исчисление и располагает неограниченными средствами абстракции. Когда приходится работать с задачами, связанны- ми с парадоксами Рассела, в качестве логического языка наиболее предпочтительной является омега-логика [19]. Поэто- му именно она оказывается самой приемлемой для логического программирования. Однако многие специалисты считают, что возможности логик более высоких порядков имеются уже в логике первого порядка (см., например, [14] и [26]), поэтому в настоящей статье мы без ограничения общности проведем анализ на примере логики первого порядка. 93
Проблема противоречивости знаний Хочу начать с утверждения, которое я назвал «гипотезой противоречивости» и которое заключается в следующем: любая система аксиом, пытающаяся выразить знания челове- ка о мире, неизбежно оказывается противоречивой. Я употребил термин «гипотеза», поскольку это положение в принципе невозможно строго доказать, легко опровергнуть контрпримером, но тем не менее аргументов в его пользу гораздо больше, чем опровергающих его. Причины противо- речивости связаны с асинхронной и фрагментарной природой человеческого знания, обусловленной следующими фактора- ми. 1. Физический контекст. Физические системы, описыва- емые аксиоматически, связаны с многими другими физически- ми системами. Болезни почек, например, часто связаны с заболеваниями сердца. Знания о почках нельзя отделить от знаний о сердце. 2. Пространственно-временной контекст. Реальные си- стемы существуют во времени и пространстве. Знания о физических системах включают знания об их истории и происхождении. 3. Терминологический контекст. Предикаты, использу- емые для аксиоматического описания свойств физических объектов, всегда несколько спорны с практической точки зрения. Так, попытка точно описать, что означает утвержде- ние, что стол имеет плоскую поверхность, породила массу трудных вопросов. 4. Гносеологический контекст. Наши знания о физиче- ских объектах невозможно отделить от того, как мы пришли к этому знанию. Но если дополнительно аксиоматизировать методы, с помощью которых мы получили аксиоматизирован- ные знания, то это еще более усложнит результирующее аксиоматическое описание. Хорошую иллюстрацию противоречивости дает ЭВМ DEC-20. Во-первых, заметим, что ЭВМ DEC-20 исключитель- но проста по сравнению, скажем, с человеческой почкой. Далее, DEC-20—это искусственная система, специально соз- данная человеком в соответствии с определенными требова- ниями. Тем не менее, несмотря на огромные усилия разработ- чиков, формальное описание документации и системы команд остается несогласованным. Противоречивость обнаруживает- ся как в самой документации, так и между документацией и реальной системой команд. И хотя эту несогласованность постоянно корректируют, в системе немедленно выявляются новые противбречия. Предположим, мы тем не менее решили согласовать 94
описание ЭВМ DEC-20. В этом случае мы должны были бы управлять всем процессом создания и развития системы. В частности, нам пришлось бы управлять всеми изменениями в документации и программах с учетом следующих общих требований. 1. Все ошибки в программе и в документации должны быть обнаружены. 2. При изменении требований заказчика необходимо рас- ширять возможности системы. 3. Система должна реагировать на изменения во взаимо- действии с другими системами, такими, как изменение состава периферийного оборудования и сети ЭВМ. Нельзя доказать, что возникшие таким образом новые версии системы DEC-20 будут иметь полностью согласован- ное формальное описание. На практике аксиоматизация систе- мы команд и документации даже такой простой системы, как DEC-20, оказывается противоречивой, несмотря на колоссаль- ные усилия достичь согласованности. Теперь сделаем второе утверждение: аксиоматическое описание человеческих знаний о любой реальной системе всегда останется противоречивым. Я называю это «гипотезой вечной несогласованности». Как бы мы ни старались согласо- вать описание любой реальной системы, оно так и останется противоречивым. Семантика обмена сообщениями В свете высказанных выше гипотез следует проанализиро; вать, как в логике трактуется проблема противоречивости. Противоречивость серьезным образом влияет на использова- ние логического npoi раммирования в качестве инструмента интеллектуальных систем. Точка зрения логиков на противо- речивые теории ясна: эти теории бессмысленны, поскольку не соотносятся ни с одним из «возможных миров». Логическая трактовка смысла слишком узка для сложных реальных систем, так как противоречивые знания и описания не бессмысленны. Противоречивость неразрывно связана с по- пытками выявить знания людей о реальных системах. Теории, считающие противоречивые описания бессмысленными, не могут непосредственно использоваться в задачах, связанных со знаниями, полученными на опыте, т. е. с эмпирическими знаниями. В теории моделей смысл высказывания определяется теми моделями, в которых оно истинно [24]. Например, конъюн- кция двух высказываний истинна только тогда, когда каждое из этих высказываний истинно. Подход к семантике, основанный на приписывании значе- 95
ния истинности или ложности высказываниям, предполагает, что возможно выявить истину элемента вне контекста всего высказывания, и что на теории истинности можно построить теорию смысла. Семантика обмена высказываниями определяет значение высказывания иначе: значением высказывания считается то влияние, которое оно имеет на последующее поведение системы. Иначе говоря, значение высказывания определяется тем, как оно повлияло на поведение адресата. Каждое частичное значение высказывания определяется тем, как оно повлияло на поведение адресата. Каждое частичное значение высказывания создается адресатом в зависимости от характе- ра его обработки [12]. Глубинный уровень понимания всегда связан с выделением категорий, которые порождаются вза- имодействием, а не присущи явлениям внутренне, и зависят от сочетания различных точек зрения [13]. Поэтому значение высказывания принципиально связано с взаимодействием. Значение высказывания всегда открыто и может неограничен- но развертываться и развиваться по мере того, как адресат обрабатывает его. В семантике обмена высказываниями поня- тие значения основано не на логике, а на коммуникации. Необходимость процессуальных рассуждений При наличии конфликтной информации и противоречивых фактов логическое доказательство неприменимо в качестве метода рассуждений. Вместо него лучше использовать про- цессуальное рассуждение, в ходе которого рассматриваются различные аспекты знаний, целей и возникающих гипотез. Рассмотрим процессуальное рассуждение на примере гипо- тез, возникающих в связи со следующим утверждением: «Никсон был виновен в уничтожении свидетельств Уотергейт- ского дела, позволив стереть Часть записи с магнитофонной пленки». Следуя одному из возможных подходов логического программирования, мы должны собрать свидетельства в поль- зу выдвинутой гипотезы и попытаться получить на их основании логическое доказательство (возможно, дополнен- ное коэффициентами уверенности и предположениями «по умолчанию»). Другой подход состоит в использовании прави- ла, что гипотеза ложна, если ее нельзя доказать на основании имеющихся знаний. Оба подхода неприемлемы в нашем случае. Независимо от того, сколько свидетельств обнаруже- но и проанализировано, логическое доказательство (как вины Никсона, так и его невиновности) будет не сбалансировано, поскольку оно отражает лишь одну сторону дела. Не менее ограниченным' окажется и метод, в котором Отрицательный вывод делается из невозможности построить доказательство 96
какой-либо из вероятных гипотез («отрицание как неудача»). Для полного исследования необходимо сопоставление различ- ных точек зрения и оценка представленных доказательств. Связанное с этим обсуждение строится иначе, чем логическое доказательство. Процессуальное рассуждение состоит в сборе и анализе свидетельств и аргументов, представляемых всеми заинтере- сованными сторонами. Программные средства, которые называются адвоката- ми, собирают свидетельства и создают на их основе аргумен- тацию в пользу своих гипотез. Параллельно скептики соби- рают свидетельства и аргументацию против этих гипотез. Затем переходят к обсуждению вопроса в понятиях мотивов и наличия возможностей всех сторон. Вопрос о мотивах в нашем примере сведется к следующему: предполагал ли Никсон получить выгоду из того, что уничтожат запись. Учет возможности связан с тем, имелась ли физическая возможность ее стереть. Как адвокаты, так и скептики рекурсивно используют процессуальное рассуждение, иссле- дуя, организуя и представляя свои доводы. Адвокаты и скептики работают взаимосвязанно при сборе доказательств (в процессе «расследования» дела и раскрытия требований), а также взаимодействуют, опровергая чужие доводы в процессе принятия решений, который принципиально отличается от логического доказательства. Язык Пролог Сторонники логического программирования начали с того, что разработали язык программирования Пролог, основанный на процедурной интерпретации импликации (см. [11]), которая уже рассматривалась в настоящей статье в связи с Плэнне- ром. Пример, который мы приводили: «Для того чтобы доказать, что х смертен, сделай подцелью доказательство, что х—человек»,— на Прологе записывается следующим образом: смертен (х) :— человек (х). Вначале Пролог был намного проще, чем Плэннер, что обеспечивало ему значительное преимущество с точки зрения его изучения и реализации на ЭВМ. Однако к настоящему времени Пролог — как это было раньше с языками типа Плэннера — распался на ряд несовместимых диалектов, бази- рующихся на процедурной интерпретации логики, вызове процедур по образцу, теории обмена сообщениями и на системах описания (см. [4, 9, 12]). Помимо общих ограничений, присущих логическому прог- 4—2596 97
раммированию в целом, о которых говорилось выше, Пролог имеет собственные, присущие только ему недостатки. Пред- положение о замкнутости мира является гипотезой, утверж- дающей полноту локально доступного знания, иначе говоря, если высказывание не следует из локальной базы знаний, оно может считаться ложным [18]. В Плэннере также можно было воспользоваться предположением о замкнутости мира, переходя к рассмотрению плана (теоремы) при условии полной невозможности достичь какую-то цель. Эта возмож- ность, в частности, широко использовалась Виноградом в SHRDLU. В Пролог это предположение вошло в очень сильной форме — в виде принципа «отрицание как неудача», взятого в качестве основного постулата языка программирования. (Ре- ляционные базы данных построены на аналогичной строгой гипотезе: если в реляционной таблице не найден соответству- ющий элемент, то отношение считается ложным.) Столь сильное использование предположения о замкнутости мира в Прологе не соответствует требованию открытых систем о непрерывном пополнении базы знаний новыми фактами и объектами. Принципы обработки информации для будущих систем Термин рефлексия в последнее время широко обсуждается в литературе по искусственному интеллекту (см.. [2, 4, 7, 22 и 26]). Весьма распространено мнение, что использование средств рефлексии при решении задач позволило бы суще- ственно увеличить вычислительную мощность. Однако при этом возрастает опасность, что важные проблемы останутся без внимания до тех пор, пока метод решения задач с использованием рефлексии не будет располагать минимальны- ми возможностями для ответа на следующие вопросы. 1. История собственного поведения: что ты делал в таком-то случае? 2. Представление о своих собственных процедурах обра- ботки информации: как ты принял это решение? 3. Знания о связи прежнего поведения и текущих проце- дур: что бы ты сделал теперь иначе и почему? 4. Представление о процедурах для взаимодействия с внешним миром: как ты управляешь этим? Современный уровень реализации рефлективных систем исключительно примитивен. Большинство из1 вышеперечис- ленных вопросов в них по-настоящему не решено. Кроме рефлективного решения задач для создания надеж- 98
ных открытых систем необходимо обеспечить еще целый ряд требований: 1. «Любознательность»: не важно, знает ли система некоторый факт до того, как он может быть использован в решаемой задаче, или уже после того, как работа над задачей закончена. 2. Децентрализованное управление: в системе нет главно- го арбитра истинности. 3. Доступность знаний: все знания системы (включая ее собственные процедуры) должны быть доступны для любой задачи. 4. Параллельность вычислений: система должна быть способна мобилизовать все свои ресурсы для параллельной работы над отдельными аспектами задач большой размерно- сти. 5. Процессуальный вывод: система собирает и сопоставля- ет между собой альтернативные факты и цели. 6. Практическая рефлексия: знания (в том числе знания о себе) должны питать практику, а практика должна вносить изменения в гипотезы, факты и цели. 7. «Здравый смысл»: при наличии несогласованной инфор- мации и противоречивых фактов система тем не менее должна работать эффективно. Заключение На практике знания людей о реальных системах всегда таковы, что их невозможно записать в виде непротиворечивой системы аксиом. Все реальные системы открытые в том смысле, что они являются частью какой-либо среды, с которой они асинхронно взаимодействуют. В целом открытые системы не полностью «властны над своей судьбой». В противоположность им замкнутые системы (такие, как ариф- метика Пеано и топология множества точек) точно определе- ны правилами и законами. Сторонники логического программирования считают его хорошей основой для любых программ и прочат ему большое будущее. Однако принципиальные ограничения, присущие этому методу, делают его неприемлемым для программирова- ния. Он не соответствует требованиям открытых систем, поскольку основывается на логических операциях и на логи- ческом выводе, а не на взаимодействиях и процессуальном рассуждении. Решения в открытых системах принимаются по соглашению действовать определенным образом. Обоснование решений по соглашению противопоставляется обоснованию логическим доказательством, так как при взаимодействии с реальным миром приходится сталкиваться с обработкой про- 4* 99
тиворечивой и несогласованной информации методами, выхо- дящими за рамки применимости логических доказательств. Недостатки Пролога также связаны с принципом «отрицание как неудача», т. е. с принятием предположения о замкнутом мире, несовместимого с открытыми системами. В основе интеллектуальных систем должны лежать прин- ципы любознательности, децентрализации, доступности зна- ний, практической рефлексии, процессуального рассуждения. Логический вывод должен остаться в прежнем арсенале средств интеллектуальных систем, но всего лишь как один из модулей системы наряду со многими другими средствами. Об авторе: Карл Хьюитт—профессор Массачусетского технологического института; занимается фундаментальными проблемами искусственного интеллекта. 1. Agha Gul. Semantic Considerations in the Actor Paradigm of Concurent Computation, Proceedings of the NSF/SERC Seminar on Concurency.— New York: Springer-Verlag, 1984. 2. Batali J. Computational Introspection, Al Memo 701.— Cambridge, (Ma): MIT Artificial Intelligence Laboratory, February 1983. 3. Clinger W. D., Foundations of Actor Semantics, AI-TR-633.— Cambridge (Ma): MIT Artificial Intelligence Laboratory, May 1981. 4. Doyle J. A Model for Deliberation, Action and Introspection, AI-TR-581.— Cambridge (Ma): MIT Artificial Intelligence Laboratory, 1980. 5. Hewitt C. PLANNER: A Language for Proving Theorems in Robots, Proceedings of IJCAI-69.— Washington (DC): IJCAI, May 1969. 6. Hewitt C. Description and Theoretical Analysis (Using Schemata) of PLANNER: A Language for Proving Theorems and Manipulating Models in a Robot, ALTR-258.— Cambridge (Ma): MIT Artificial Intelligence Laboratory, April 1972. 7. Hewitt C., de Jong P. Analysing the Roles of Descriptions and Actions in Open Systems, Proceedings of the National Conference on Artificial Intelligence, AAAI, August 1983. 8, Israel D. A Short Companion to the Naive Physics Manifesto. In: Formal Theories of the Common Sense World (J. Hobbs, ed.).— Abelex, 1984. 9. Kahn K. How to Implement Prolog on a LISP Mashine. In: Implementations of Prolog. (Campbell J. A., ed.).—New York: John Wiley & Sons, 1984, pp. 117-134. 10. Kornfeld W. A., Hewitt C. The Scientific Community Metafor, IEEE Transactions on Systems, Man, and Cybernetics, SMC-11, January 1981. 11. Kovalski R. A. Predicate Logic as Programming Language, Pro- ceedings of IFIP-74, IFIP, 1974. 12. Kovalski R. A. In: The SIGART Special Issue on Knowledge Representation. (R. Brachman and B. Smith, eds.), SIGART, 1978. 100
13. Lacoff G., Johnson M. Metaphors We Live By.—Chicago: University of Chicago Press, 1980. 14. McCarthy J. First Order Theories of Individual Concepts and Propositions.— Stanford (Ca): Stanford University Press, July 1977. 15. Minsky M. A Framework for Representing Knowledge. In: The Psychology of Computer Vision (Winston P., ed.).—New York: McGraw-Hill, 1975. [Русский перевод: Минский M. Структура для представления знания, в книге: Психология машинного зрения.— М.: Мир, 1978.] 16. Newell A. Reasoning, Problem Solving and Decision Process: The Problem Space as a Fundamental Category, Technical Report CMU-CS-79-133, CMU, June 1979. 17. Reddy M. The Conduit Metaphor. In: Metaphor and Thought. (Ortony ed.).—Cambridge: Cambridge University Press, 1979. 18. Reiter R. On Closed World Data Bases, Logic and Data Bases.— New York: Plenum Publishing Corp., 1981. 19. Rudin L. Lambd a-Logic, Technical Report 4521.— Pasadena (CA): California Institute of Technology, May 1981. 20. Selfridge O. Pandemonium: A Paradigm for Learning, Technical Report J A-1140.— Cambridge: MIT, 1958. 21. Shapiro E. A Subset of Concurrent Prolog and Its Interpreter, Technical Report TR-003, ICOT, January 1983. 22. Smith B. Reflection and Semantics in a Procedural Language, LCS-TR-272.— Cambridge (Ma): MIT Laboratory for Computer Science, 1982. 23. Sussman G. J., Winograd T., Charniak E. MICRO PLANNER Reference Manual, Al Memo 203.— Cambridge (Ma): MIT Artificial Intelligence Laboratory, 1970. 24. Tarski A. The Semantic Conception of Truth, Philosophy and Phenomenological Research, 4 (1944), pp. 341-375. 25. van Emden M., Kovalski R. The Semantics of Predicate Logic as a Programming Language, JACM 23. No 4 (1976), pp. 733-742. 26. Weyhrauch R. Prolegomena to a Theory of Mechanized Formal Reasoning, Artificial Intelligence 13, 1, 2 (April 1980), pp. 133-172. 27. Winograd T. Procedures a$ Representation for Data in a Computer Program for Undestanding Natural Language.—Cambridge (Ma): MIT Project MAC, MAC TR 83, 1971. Благодарности. Многие идеи, изложенные в настоящей статье, разрабатывались с сотрудниками группы по семантике передачи сообщений Массачусетского технологического института (МТИ) и Исследовательского института Тремента. Особую признательность я хочу выразить Галу Ага, Джералду Барберу, Петеру де Йонгу, Эмилю М. Джерсону и Сусанне Ли Стар за помощь и фундаменталь- ные исследования, которые легли в основу данной статьи. Джонатан Амстердам, Майк Брейди, Майк Брукс, Тони Коэн, Петер де Йонг, Джон Кэм, Генри Либермэн, Джон Маллери, Фаня Монтальво, Карен Прендергаст, Клаудиа Смит и Джон Титер высказали ценные суждения и замечания, которые очень помогли мне в работе над статьей. Огромную пользу принесли мне многолетние творческие 101
контакты с Ричардом Вейхраухом, который глубоко разбирается в проблемах, поднятых в статье. Настоящая статья возникла в результате обсуждений, которые проводились в Станфордском университете в июне 1983 г., на конференции Международной федерации по обработке информации (IFIP), состоявшейся в том же году в Париже. Созданию статьи способствовали также дискуссии, проводившиеся в Лаборатории искусственного интеллекта МТИ в ноябре 1983 г., в фирме «Болт Баранек энд Ньюмен», в школе-семинаре МТИ в Слоанеи на конференции AAAS, проходившей в июне 1984 г. в Нью-Йорке. Комментарии, оценки и критические замечания, высказанные на этих встречах, очень помогли мне в работе над статьей. Особо хочу поблагодарить Боба Моара, Нильса Нильссона, Стива Гарди, Ричарда Уолдинджера и других за ценные замечания, сделанные во время станфордских семинаров; Боба Ковальски, выступившего на семина- ре в МТИ; Дэвида Израэла из фирмы «Болт Баранек энд Ньюмен», Тома Мэлоуна и Джералда Барбера, выступивших на школе-семинаре в Слоане, а также Виктора Лессера, Джерри Хобса и Люси Сакмэн, принявших участие в обсуждениях проблемы на заседании A A AS. Аллен Ньюмен любезно познакомил меня с некоторыми аспектами своей научной работы, проведенной в 1984 г. В настоящей статье описываются результаты исследования, проводимые в Лаборатории искусственного интеллекта МТИ. Эти исследования в основном субсидируются организацией System Deve- lopment Foundation и Wang Laboratories. Другие, смежные, разработ- ки по искусственному интеллекту получают основную долю субсидий от Агентства по перспективным исследованиям и разработкам мини- стерства обороны при отделении исследований ВМС США. Хочу также поблагодарить Чарлза Смита и Патрика Г. Уинстона за помощь и поддержку.
Зрение: биология бросает вызов технике Дана X. Баллард, Кристофер М. Браун Способность к зрительному восприятию и целенаправлен- ному перемещению столь характерна для животного мира, что мы обычно не связываем ее с проявлением интеллекта. Однако зрение, в силу своей загадочной сложности, было и остается центральной проблемой искусственного интеллекта. Надежные, легко приспосабливающиеся к условиям окружа- ющей среды зрительные системы животных, работающие в режиме реального времени,— это вызов, который биология бросает технике, и техника пытается ответить на него; однако все созданные до сего времени промышленные системы зрения способны работать лишь в особых условиях. Эти системы обычно используются для контроля интегральных схем и деталей, но неприменимы для более широких целей. Так, на вход этих систем подается двоичное изображение (состоящее из черных и белых элементов), а не полутоновое, создаваемое таким устройством, как телекамера. Получение изображения в технических системах зрения требует тщатель- ного подбора освещения и условий наблюдения. Кроме того, для достижения необходимой скорости работы в этих систе- мах используются простые алгоритмы, которые не учитыва- ют того, что одни детали могут загораживаться другими или могут быть видны под углом, не удобным для наблюдения. Примером задачи, на первый взгляд простой, которая легко решается человеком, но непосильна для современных техни- ческих систем зрения, может служить задача разбора дета- лей, лежащих «навалом». При этом требуется лишь захватить и перенести детали, сваленные в кучу, а не разложенные по ровной поверхности. Таким образом, создание быстродействующей и надежной системы машинного зрения оказалось столь сложной задачей, Перепечатано с разрешения журнала Byte, апрель 1985 г. Copy- right ©by McGraw-Hill, Inc., New York 10020. Все права сохраняют- ся. 103
что на сегодняшний день мы смогли решить ее только для крайне простых и ограниченных условий. И это еще более заставляет нас удивляться и восхищаться зрительными систе- мами живых существ. Так, человек способен распознавать предметы, манипулировать ими, а также перемещаться в мире объектов со сложной поверхностью (она может иметь тексту- ру, блики, быть прозрачной и т. д.) и не обязательно постоянной формы; причем все это происходит при самых разнообразных условиях освещения. Системы машинного зрения, которые могли бы строить описания окружающего мира в произвольных условиях, все еще остаются предметом исследований. По мнению специали- стов, в основу таких систем должны быть положены две главные идеи, берущие свое начало в биологии и теперь взятые на вооружение техникой. Реализации этих идей в искусственных системах зрения уделяется сегодня особое внимание, причем интенсивные исследования ведутся как в технике, так и в биологии. Первая идея связана с тем, что в зрительной системе используется некая иерархия представлений, в результате чего зрительная информация распределяется по множеству промежуточных уровней, нижний из которых—входной сиг- нал, а верхний — понятия. Разработчики систем машинного зрения обнаружили, что такая иерархия позволяет разрешить многие проблемы, связанные с эффективностью вычислений и хранением информации. В настоящее время специалисты по нейрофизиологии пытаются исследовать, в какой мере подоб- ная функциональная и физиологическая иерархия свойственна биологическим системам. Многие результаты свидетельству- ют о существовании биологических аналогов таких иерархиче- ских систем машинного зрения. Вторая идея касается параллельных вычислений. Ученым давно известно, что нервная система производит «вычисле- ния» параллельным способом, предпринимались многочислен- ные попытки моделировать такие вычисления. Благодаря некоторым недавним исследованиям (см., в частности, статьи Дж. Е. Хинтона и Дж. А. Фелдмана в настоящем сборнике) сегодня вполне осуществимы мощные устройства для парал- лельных вычислений. В нашей статье мы рассмотрим две темы: иерархия представлений и параллелизм вычислений в машинном и естественном зрении. Исторический обзор: исходные представления Исследования по цифровому анализу изображений нача- лись с конца 50-х годов, когда вычислительные машины 104
обрели достаточно емкую память. Сегодня, спустя четверть века, машинное зрение превратилось в обширный раздел искусственного интеллекта. Как и в системах управления роботами или машинного распознавания речи, в системах машинного зрения в качестве входного сигнала часто исполь- зуются «реальные» данные, т. е. необработанные выходные сигналы чувствительных датчиков — сенсоров. Но кроме того, в машинном зрении используются данные, в значительной степени подвергшиеся обработке. Например, в одной програм- ме в качестве входных данных используется массив отсчетов яркости точек черно-белого телевизионного изображения, а в другой программе входом служит символическое описание рисунка, состоящего из линий. Задачи, которые решает система машинного зрения, так- же весьма разнообразны, однако все их можно свести к поиску ответов на вопросы: «что?», «где?» и «почему?». Вопрос «что?» касается идентификации объектов в наблюда- емой сцене, вопрос «где?» подразумевает восприятие окружа- ющего мира в пространственно-временной протяженности, вопрос «почему?» относится к причинно-следственным связям между объектами. Первая попытка создать систему машинного зрения, пред- назначенную для интерпретации изображений сложных трех- мерных сцен, была предпринята в начале 60-х годов Ларри Робертсом из Массачусетского технологического института [1]. Задача системы состояла в «понимании» сцены, состав- ленной из многогранников; «понять» означало быть в состо- янии построить графический рисунок сцены под любым углом зрения. В системе Робертса впервые нашли применение многие фундаментальные методы, используемые и сегодня, причем не только в системах машинного зрения, но и в машинной графике. Например, при анализе уже оцифрован- ных входных изображений проводился поиск «элементов края», которые могли бы лежать на ребрах многогранников (см. фото III, б, где этот метод проиллюстрирован примени- тельно к другой задаче). На следующем этапе система соединяла найденные элементы края, получая более длинные линии, соответствовавшие ребрам многогранников (ср. с фото IV, а), и сопоставляла полученную линию и многоугольную фигуру с имевшимися в системе трехмерными моделями элементарных «строительных блоков». При этом модели подвергались растяжениям, вращениям и переносам, что было необходимо для t интерпретации исходного изображения и позволяло системе получить окончательный графический ри- сунок. Прц этом применялись простейшие методы машинной графики (также впервые предложенные Робертсом), скажем, такие, как удаление «невидимых» линий. 105
Создатель этой системы поставил перед собой слишком грандиозную задачу—даже по современным меркам. Ведь и сегодня ни одна система машинного зрения не способна решить задачу надежной идентификации кубиков на столе, если они хотя бы частично загораживают друг друга и в системе имеется шум. Однако уже в столь ранней работе вскрылась невероятная сложность вычислений, необходимых для осуществления зрительного процесса, а также ненадеж- ность и неадекватность применения последовательных управ- ляющих структур в этих вычислениях. Для решения рассматриваемой задачи требуется чрезвы- чайно большой объем вычислений, в том числе извлечение из изображения физической информации о распределении осве- щенности, выделение в изображении частей, которые соответ- ствуют интересующим нас объектам, п символическое описа- ние объектов, находящихся на изображении. Как видим, машинное зрение —весьма широкое поле исследований. Оно включает как уже упомянутые системы технического контроля на производстве, так и научные разработки, в которых принципиальные моменты (т. е. то, что мы должны знать для решения задачи) зачастую интереснее, чем характеристики опытных образцов (т. е. то, как на самом деле решается задача в режиме реального времени). Читате- лю, интересующемуся данным вопросом более детально, мы рекомендуем обратиться к литературе, указанной в конце статьи. В 70-х годах в машинном зрении получил развитие так называемый «когнитивный подход», который сводил к воз- можному минимуму вычисления, непосредственно связанные с изображением, уделяя основное внимание манипуляции символами, с чем компьютеры прекрасно справляются. При таком зрительном анализе, «ориентированном на знания», в процессе обработки используются данные о таких факторах, как наличие силы тяжести, опора одного объекта на другой, загораживание одного объекта другим, учитываются также возможные пространственные отношения между объектами сцены. Основной задачей исследований теперь стало изучение того, как представлять и обрабатывать факты о конкретной обстановке, или «проблемной области» (скажем, о размеще- нии многогранников или расположении предметов в помеще- нии), и как использовать конкретные знания в системах зрения. Вопрос о представлении и использовании знаний является, однако, весьма сложной проблемой искусственного интеллек- та, и имевшиеся методы не давали возможности преодолеть весь путь от исходного изображения до искомых символиче- ских описаний этого изображения. Поэтому начиная с 1974 г. 106
исследования были направлены на поиск определенного набо- ра промежуточных представлений — так называемых внутрен- них изображений, которые могли бы заполнить промежуток от изображения до представления. Пионерами этих исследо- ваний были Д. Марр из Массачусетского технологического института, а также Г. Барроу и Дж. Тененбаум из Станфорд- ского научно-исследовательского института. Ныне среди специалистов, занимающихся машинным зре- нием, принято считать, что упомянутый пробел в представле- ниях (между исходным изображением и его искомым симво- лическим описанием) заполняется некоторым набором пред- ставлений зрительной информации, причем эти представления выстроены в иерархию по признаку увеличения степени их абстрактности. Зрение и иерархия абстракций Зрение человека передает информацию очень достоверно: воспринимаемые нами образы точно соответствуют предме- там реального мира. Если бы этого не было, то человек как биологический вид не смог бы выжить. Но каким образом нам удается пропускать мимо внимания изменения зрительного образа, которые не несут в себе полезной информации, и сосредоточиваться на тех, в которых такая информация заключена? Какими средствами наша зрительная система добивается свойств константности, благодаря чему мы можем узнавать предметы и при измененном освещении, а лицо одного и того же человека—в разном возрасте? И каким образом нам удается решать эти задачи со столь высокими скоростью и надежностью? Частичный ответ на эти вопросы помогают дать представления об иерархии абстракций. В современных системах машинного зрения расстояние от входного образа до результирующего восприятия объекта заполнено целой иерархией представлений (уже упоминавших- ся «внутренних изображений»), которые обрабатываются в ходе мощных вычислительных процессов (рис. 1). В этих процессах формируется серия представлений, диапазон кото- рых простирается от представления физических параметров изображения (они имеют структуру исходного изображения) до символических описаний этого изображения. Создание таких промежуточных описаний вполне осуществимо и, по- видимому, действительно необходимо, однако в случае зри- тельных систем общего назначения (а не специализирован- ных— типа промышленных систем) для осуществления этого процесса требуются сложные вычисления. На самом раннем этапе обработки изображения (на уровне входа) зрительная система общего назначения создает пред- 107
Рис. 1. Процессы (в овальных рамках) и представления данных (в прямоугольных рамках) в системе машинного зрения общего назначения. Обработка Может идти от входных данных к символическим описаниям (по обычной схеме, когда поиском управляют данные) или в обратном направлении (тогда процесс направляется прогнозами). Как правило, предполагается., что управление происходит в обоих направлениях. На каждом этапе обработки принимаются определенные предположения относительно того, как соотносятся визуальная информация и интересующие нас явления в окружающем мире. В зрительных системах живых существ такие «гипотезы о внешнем мире» могут* быть как врожденными, так и приобретенными.
ставление перепадов яркости на изображении. Эти данные используются для вычисления стереоскопической диспаратно- сти (т. е. различий в изображении одной и той же сцены, просматриваемой под разными углами зрения), для нахожде- ния изменений в составе, ориентации, удаленности, отража- тельной способности поверхностей и для решения ряда других подобных задач. Различные особенности зрительного воспри- ятия человека (например, восприятие субъективных контуров, способность выделять сходные черты в форме различных тел) дают материал для конструирования первичных представ- лений изображения (их компонентами могут быть, в частно- сти, данные о местоположении, ориентации и концевых точках различных характерных элементов изображения). Благодаря такому анализу специалисты могут сконструиро- вать детекторы характерных признаков для выработки компо- нентов первичных представлений. Значительная часть современных исследований связана с проблемой получения изображений физических свойств. Для системы они служат промежуточными представлениями, ко- торые формируются на этапе, предшествующем распознава- нию объектов. Эти представления, по своей структуре сход- ные с изображением, регистрируются одновременно с вход- ным изображением и содержат информацию о физических параметрах сцены: расстоянии от воспринимающего сенсора до различных точек, альбедо (отражательной способности) поверхностей, направлении движения объектов, местоположе- нии теней и источников света и т. д. По мнению большинства специалистов, процессы, ответственные за создание изобра- жений физических свойств, включены в систему «первичного зрения». Это значит, что их работа не зависит от содержания рассматриваемой сцены и уж тем более от результатов логического анализа увиденного. Эти процессы общего харак- тера обеспечивают надежные выходные данные в широком диапазоне естественных условий. Однако они не могут быть абсолютно надежными и носить действительно общий харак- тер, поскольку двумерное входное изображение не содержит в непосредственном виде всей информации, заключенной в трехмерном изображении. Тем не менее надежность, харак- терная для зрения животных, свидетельствует о том, что для обеспечения однозначности выходных данных в этих процес- сах используются некоторые естественные ограничения или предположения об устройстве окружающего мира. Выяснение существа этих ограничивающих правил и использование пос- ледних—важная задача современной теории машинного зре- ния. Ее решение в свою очередь предполагает определение свойств физического мира, учитываемых зрительным процес- сом, а также разработку и машинную реализацию математи- 109
ческой модели использования этих свойств. Примером вычис- лений, производимых на этом уровне, может служить вычис- ление относительной удаленности объектов на основе входно- го оптического массива (фото I, II). После создания внутренних изображений предстоит сде- лать существенный шаг, поскольку хотя в этих изображениях и содержится физическая информация, они все-таки имеют форму, подобную изображению, и еще не дают описаний содержащихся в сцене объектов. Две наиболее важные для зрения характеристики — текстура и движение—несут суще- ственную информацию о поверхностях и объектах, составля- ющих сцену. Получение информации о сцене из информации о движении, т. е. из оптического потока, падающего на сетчатку глаза при относительном перемещении объекта и наблюдателя,— одно из наиболее интенсивно развивающихся направлений исследования в машинном зрении. Эта область представляет собой прекрасный пример возможного симбиоза между психологией и машинным зрением. Большинство исследователей полагают, что в системе машинного зрения обшего назначения на высоких уровнях абстракции должны содержаться структуры данных, предназ- наченные для различных аспектов той предметной области, с которой связана рассматриваемая сцена. Проблемы представ- ления знаний, возникающие в этой задаче, весьма интересны для разнообразных приложений ИИ. Например, никоим обра- зом нельзя считать решенной задачу моделирования в машине трехмерных твердых тел (если не принимать в расчет модели- рования некоторых специально подобранных объектов). От- крытым остается также вопрос о представлении естественных поверхностей и объемов, которое позволяло бы сопоставлять те и другие с их геометрическими аналогами во внутренних изображениях. На верхних уровнях абстракции мы сталкиваемся и с другими трудностями. Восприятие—процесс, развернутый во времени, а методы представления таких процессов пока остаются лишь темой перспективных исследований в искус- ственном интеллекте. По-прежнему остается непонятным, какую роль играют в процессе зрения знания высокого уровня и процедуры логиче- ского вывода. По-видимому, с достаточной уверенностью можно считать, что информация в зрительной системе не идет просто «снизу вверх» (т. е. последовательно от нижних уровней абстракции к верхним), как это было в * первой системе Робертса. Но вместе с тем зрение не является «управляемой Галлюцинацией», когда абстрактные представ- ления навязывают нам наши восприятия (как это происходит во сне), на которые поступающие данные оказывают слабое 110
корректирующее воздействие. Самые верхние уровни иерар- хии абстракций должны поддерживать поток информации в обоих направлениях, тогда как обеспечение плодотворного взаимодействия между представлениями нижних, близких к изображению, уровней и верхних, символических, остается «узким местом» в сегодняшних системах машинного зрения. Примеры работы действующих систем Проиллюстрируем на двух примерах работу системы машин- ного зрения с иерархией абстракций, подобной той, что рассмотрена выше. Система MOSAIC, созданная в Универси- тете Карнеги — Меллона М. Херманом и Т. Канаде, восстанав- ливает трехмерную форму зданий, исходя либо из двух аэрофотоснимков (при этом для определения дальности ис- пользуется стереоскопическая информация), либо только из одного снимка—в таком случае для определения дальности используется обширная совокупность знаний о свойствах наблюдаемой сцены. На фото III, IV представлены результа- ты работы монокулярного варианта алгоритма. Для выявления резких перепадов интенсивности, что дает значительную долю информации, заключенной в одиночном изображении, система MOSAIC применяет к нему оператор поиска края. Поскольку на изображении имеется огромное число таких «краевых элементов», система посылает выход- ные данные, полученные на этом этапе, на дополнительную обработку, позволяющую отобрать те элементы, которые могут входить в интересующие нас структуры изображения (фото III,б). После нескольких этапов обработки эти элемен- ты объединяются в двумерные структуры; при этом применя- ется стандартная методика объединения элементов края, а для получения вершин в сценах, состоящих из многогранни- ков, используется информация о пересечении прямых. Затем с помощью данных о направлении силы тяжести, наличии опор, о перспективных искажениях изображения, а также других фактах, относящихся к самой сцене и к оптическим средствам получения изображения, из элементов края фор- мируются трехмерные структуры. На фото IV,а показан результат такой обработки — перспективное изображение многогранников, имеющихся в сцене, в виде «проволочной модели». На следующем этапе обработки полученные проволочные модели сопоставляются с имеющимися в памяти системы представлениями моделей трехмерных объектов. В некотором смысле эти модели являются окончательным результатом программы, хотя с двумя существенными оговорками. Во- первых, система может вносить любую информацию о новых 111
изображениях в имеющиеся у нее структуры данных для моделей, которые таким образом уточняются по мере поступ- ления новых изображений. Во-вторых, используя обычные методы машинной графики, система может наложить плоское изображение на поверхности имеющихся у нее трехмерных моделей. В результате система может показывать «раскра- шенные» трехмерные модели под разными углами зрения, как показано на фото IV, б. Продолжается работа по выделению и идентификации содержательных частей изображения. Этот процесс, называ- емый сегментацией, реализован в системе VISIONS (Visual Integration by Semantic Interpretation of Natural Scenes — зрительная интеграция путем семантической интерпретации естественных сцен), созданной в Университете шт. Массачу- сетс. В чрезвычайно сложных программах, работающих в этой системе, применяются модели, относящиеся к какой-то конкретной области (в данном случае это пейзажи, сцены, содержащие изображения домов, деревьев и т. д.), а также используются определенные знания, относящиеся к этой области. Задача системы VISIONS заключается в выделении в цветном изображении (типа того, что представлено на фото V, а) областей (сегментов), соответствующих реальным объ- ектам. Для этого производится выделение прямых линий (фото V, б) и областей со сходными цветовыми характеристи- ками (фото V, в). В системе VISIONS используются правила интерпретации изображения, включающие знания о предмет- ной области, к которой относится сцена (такие, например, как «шоссе не может вырисовываться на фоне неба» или «крыша дома находится над его стенами»), применяются также процессы сегментации, использующие содержание самого изображения. Такие правила интерпретации повышают надеж- ность процесса распознавания, поскольку они позволяют, например, установить, когда отдельные области нужно слить воедино, а когда—разделить на части. К примерена фото VJ б система окрасила те области, которые она, основываясь на правилах интерпретации, считает оконными ставнями. В сценах такого рода листва деревьев является важным компо- нентом изображения, поэтому система VISIONS снабжена набором подсистем выделения признаков и распознавания, которые позволяют надежно идентифицировать листву, нес- мотря на широкое разнообразие ее формы. На фото VI показана окончательная разметка .другой сцены; различные области изображения идентифицированы с небом, листвой дерева, травой, стеной, ставнями, крышей. Некоторые области окрашены черным: они не интерпретиро- ваны либо потому, что у данной системы нет соответству- 112
ющей символической модели, либо потому, что вид некото- рых элементов сцены существенно отличается от того, что ожидает увидеть система в соответствии с имеющимися у нее моделями. В настоящее время система VISIONS может моделировать 20 основных объектов и их совокупностей (таких, как «дом» или «сцена с домами») и гораздо большее число частей объектов (таких, как «крыша» или «ставни»). Приведенные примеры — свидетельство того, что мы начи- наем понимать, как устроена и как работает зрительная система. Теперь по крайней мере понятно, что именно нужно вычислять. Однако каждый из рассмотренных здесь процес- сов идентификации требует огромного объема машинного времени. Большинство исследователей убеждены в том, что путь к усовершенствованию технических характеристик си- стем зрения следует искать только в параллельных вычисле- ниях. Зрение животных — интригующая проблема Одно из самых многообещающих направлений изучения вопросов параллельной обработки зрительной информации связано с анализом зрения человека и животных. В отличие от зрения робота, для которого многие проблемы восприятия окружающей среды можно решить путем ее упрощения и использования различных специальных приемов создания изображения, зрение животного призвано решать задачу анализа непрерывно меняющегося потока оптической инфор- мации во всей его полноте, причем этот анализ должен проводиться в режиме реального времени (т. е. по мере поступления информации). Более того, элементной базой биологических систем являются нейроны, которые действуют на шесть порядков (т. *е. в миллион раз) медленнее, чем кремниевые микросхемы. Несмотря на эти явные трудности, зрение животных работает превосходно. Исследования показывают, что для осуществления разнообразных поведенческих актов человека на зрительную реакцию требуется лишь несколько сот милли- секунд. Каким-то непонятным образом зрительные системы животных довольно легко справляются с решением тех задач, которые все еще неподвластны разработчикам систем машин- ного зрения. Это побудило исследователей заняться модели- рованием человеческого зрения, чтобы попытаться проник- нуть в его тайны. Ученых, работающих над этой проблемой, которая лежит на стыке психологии, нейрофизиологии и информатики, обычно отличает широта научного кругозора. Приведем некоторые наиболее интересные результаты, полу- ченные в этих областях науки. ИЗ
Человек очень хорошо решает зрительные задачи, поэто- му исследователи были немало удивлены, когда выяснилось, что в ряде задач, где обработка информации в принципе может производиться параллельно, при небольшом усложне- нии задачи она принимает последовательный характер [2]. В экспериментах, описанных Трисманом, испытуемым предлага- ли изображения букв, задавая при этом вопросы типа: «Есть ли на изображении буква Т?» (рис. 2). Большинству испыту- емых для ответа на подобный вопрос требовалось несколько десятых долей секунды, причем вне зависимости от числа показанных одновременно букв (см. нижние пунктирные линии на рис. 2). Но если задавать испытуемому другой вопрос, а именно: «Есть ли на изображении красная буква Т?», то время, затрачиваемое на ответ, начинает линейно расти с увеличением числа букв в изображении. Отсюда, по-видимому, следует, что некоторые простейшие признаки мозг обрабатывает параллельным образом, однако конъюн- кции (сочетания) этих признаков обрабатываются в последо- вательном режиме. До сих пор не удалось найти исчерпывающего объяснения этого результата, однако одна из возможных гипотез такова. Зрительной системе может стать невыгодным сопоставлять имеющиеся в ее распоряжении прототипы объектов с их пространственными образами. Может оказаться, что дело пойдет быстрее, если сформировать некоторое абстрактное представление, не зависящее от конкретной точки в том пространстве, где этот признак выделяется. Таким образом, предполагается, что если в зрительном поле есть одна или несколько букв Т, то мозг формирует некоторое представле- ние буквы Т. Аналогичным образом мозг формирует и представления воспринимаемых им цветов, скажем красного. В результате мозг может давать ответы на вопросы, каса- ющиеся этих признаков, непосредственным образом. Однако таким путем нельзя решать вопросы, касающиеся конъюн- кций признаков, поскольку в построенных абстрактных пред- ставлениях отсутствует информация о пространственных ко- ординатах признаков носителей. Идея, получившая название прожекторной гипотезы [3], состоит в том, что мозг последовательно фокусируется на тех участках зрительного поля, откуда были получены указанные признаки. При этом ответ на поставленный испытуемому вопрос будет положи- тельным, если признаки «Т» и «красный» появились в одном и том же месте. По-видимому, разнесение данных на два различных уровня абстракции (привязанный к пространству и не зависящий от него) представляет собой фундаментальный принцип организации мозга, обеспечивающий высокую ско- рость обработки информации. 114
Число предъявляемых букв Рис. 2. Результаты измерения времени реакции. При распознавании отдельного признака (например, такого, как «есть красный цвет» или «есть буква Т») время реакции испытуемого почти не зависит от числа предъявленных символов, если только искомый признак при- сутствует на изображении (линии, помеченные словом «Есть»). Если же признак отсутствует на изображении (метка «Нет») или—что еще важнее—представляет собой конъюнкцию условий (например, «есть красная буква Т»; сплошные линии), то время реакции испытуемого меняется пропорционально числу предъявленных символов. (Рисунок заимствован из работы Трисмана [2].) 115
О наличии такого рода структурной организации свиде- тельствуют, в частности, результаты экспериментального исследования, проведенного Мишкином с сотрудниками [4]. В различных зонах коры головного мозга обезьян выборочно создавались очаги поражения. Обезьяны с поражением какой- то одной зоны успешно справлялись, например, с определени- ем пространственной локализации объектов, однако при рас- познавании признаков положительный и отрицательный ре- зультаты чередовались случайным образом (в вероятностном смысле). При поражении другой зоны, наоборот, успешно решались задачи по распознаванию признаков, тогда как определение пространственной локализации носило случай- ный характер. Эти результаты говорят о том, что для любого важного психофизического свойства в мозге животных может быть отведено специальное место. Учет физики явлений на уровне аппаратных средств Пока проводились эти биологические и психофизиологиче- ские исследования, разработчики систем машинного зрения занимались созданием вычислительных моделей параллельно- го действия, которые обрабатывают признаки объектов при- мерно так же, как и биологические системы. Такие модели призваны, кроме того, разрешить многие трудности, связан- ные с шумами и потерей информации. Ведь такие данные, как, скажем, контур той или иной формы или прямая, представлены на изображении только частичной и даже противоречивой информацией, разобраться в которой мешает шум. Для преодоления этих трудностей обычно используется преобразование Хью [5]. Примененные в нем разнообразные приемы кластерного анализа гистограмм и методы оценки в конечном итоге так преобразуют исходные данные, что интересующие нас характеристики образуют кластеры (скоп- ления). Рассмотрим пример использования преобразования Хью в задаче обнаружения прямых линий на изображении. Для этого прежде всего надо найти резкие локальные перепады яркости изображения, или края. На фото VII,а показан результат применения преобразования Хью к изображению кубика Рубика. Здесь перепады яркости могут быть обуслов- лены как действительно краями (ребрами куба), так и тенью, надписью и другими причинами. Обозначим само изображение f(x, у), а распределение перепадов яркости по горизонтали и вертикали—соответственно h(x, у) и v(x, у). Вычислять эти 116
распределения можно по значениям смежных элементов изображения. Это осуществляется следующим образом: h(x, у) =/(х + 1, у-1) —2/(х —1, у) V (х, у) =/(х —1, у + 1) -2/(х, у-1) — /(х-1, у-1) + 2/(х + 1, у)- + /(х + 1, у + 1) - /(х-1, у + 1) - /(х-1, у-1) + 2/(х, у + 1)- + /(х + 1, у + 1) + /(х + 1, у-1) Такой оператор поиска края считает, что край найден, если величина перепада яркости m=\/h2+v2 больше некото- рого порогового значения. Ориентацию (угол наклона) края обозначим 0, где 0=arctg (h/v). Далее начнем собирать из локальных краев прямые линии. Эта сборка по сути представляет своего рода «голосование», когда каждый элемент края «голосует» за те прямые, на которых он мог бы лежать. Так, на фото VII,б элемент края с центром в точке (хо, Уо) и с ориентацией 9 должен «голосовать» за прямую, задаваемую параметрами (р, 0), где P=xcos0 + ysin9. После того как каждый элемент края «проголосует» за «свою» линию, выбирается линия, набравшая большинство «голосов». Она и принимается за истинную прямую, находя- щуюся на изображении. Чтобы сделать процесс накопления более наглядным, нанесем все величины (р, 0) на координатную плоскость (фото VII,в). Яркость каждой точки массива на фото VII,в пропорциональна количеству элементов края, «проголосовав- ших» за прямую с соответствующими значениями р и 0. Иными словами, чем ярче точка, тем больше вероятность наличия прямой с данными значениями (р, 0) на исходном изображении. В заключение предположим, что детектор признака, буду- чи приложен к произвольной точке (х, у) изображения, определяет ориентацию локального края 0 и степень контра- ста на этом крае. Тогда можно воспользоваться, например, следующим алгоритмом. Для каждой точки изображения (х, у) произвести следу- ющие действия: 1) применить детектор и получить значение 0 в точке (х, у); 2) если значение контраста превышает некоторый порог, то вычислить p=xcos0 + ysin0 и увеличить яркость клетки, соответствующей данному значению параметров р и 0. Возможно несколько реализаций преобразования Хью (см.[6]). Здесь описана непосредственная реализация для последовательной машины, в которой пространство парамет- ров представлено в виде массива. Такое представление непри- 117
емлемо для преобразования с большим числом параметров, поскольку объем памяти, необходимый для хранения послед- него, зависит от количества параметров экспоненциальным образом (хотя исследователи и добились немалых успехов в разработке методов хранения подобной информации: для этого используются хэш-таблицы и адресация памяти по содержимому, что экономит машинную память). Наконец, преобразование Хью можно реализовать с по- мощью больших сетей параллельной обработки; при этом благодаря схемному решению весь процесс «голосования» занимает один такт времени. Общая идея, согласно которой функциональные особенно- сти систем можно выражать через характеристики связей их элементов, получила название коннекционизма (от англ, connection — связь, соединение.— Ред.). Она привлекает при- стальное внимание ученых, работающих в различных обла- стях науки. Один из возникающих при этом вопросов — вопрос вычислений. Как выполнять вычисления в очень больших сетях со сложными структурами? В последнее время значительных успехов в этом направлении добились исследо- вательские группы, возглавляемые Киркпатриком, Хопфил- дом, Хинтоном, Сейновски, а также С. Джиманом и Д. Джи- маном (см. [7] — [10] и статью Дж. Е. Хинтона в настоящем сборнике). Основной результат их работ состоит в том, что ограничения, связанные с внешними условиями, можно пред- ставить в виде локальных изменений функции «энергии» сети, а вычислительные блоки можно включать и выключать так, чтобы минимизировать эту функцию. Рассмотрим на примере нейронной сети общий способ представления информации, называемый кодированием значе- ний. В вычислительной машине последовательного действия любая переменная может принимать в данный момент време- ни только одно значение, тогда как в параллельном компьюте- ре, напротив, может потребоваться присваивать переменным одновременно множество значений. При реализации метода кодирования значений мы представляем множество возмож- ных значений переменной в виде дискретных ячеек, или «интервалов», число которых и определяет точность представ- ления. Так, например, можно представить набор значений пара- метров элемента края (см. фото VII,б) в виде набора дискретных интервалов с центрами (xi, у,) и размером (Дх, Ду) (рис. 3,а). Аналогично параметры прямых на фото VII,в можно представить в виде набора интервалов с центрами (pi, 0i) и размеров (Др, Д0) (рис. 3,6). Эта мысль, высказанная X. Барлоу из Кембриджского университета, была далее раз- вита Д. X. Баллардом и Дж. Фелдманом из Рочестерского 118
Рис. 3. Процесс «голосования», показанный на фото VII, может быть закодирован прямо в техническом устройстве методом интервального кодирования. Координатная плоскость (х, у) разбивается на дискреты [интервалы шириной (Дх, Ду) с координатами центров (х,, у0]; каждой дискрете отводится отдельный процессор (а). Координатная плоскость (р, 0) разбивается на дискреты (Др, Д0), с которыми также связаны отдельные процессоры (б). Если «активируется» достаточное число элементов края, коллинеарных между собой, то «активируется» и прямая, которой сни принадлежат. Такая стратегия может оказать- ся неудобной для реализации на сверхбольших интегральных схемах, однако в мозге, содержащем около 1010 нейронов, каждый из которых связан примерно с 104 других, такая схема вполне осуще- ствима. 119
Рис. 4. Онтологическая иерархия, построенная Килем на основании психологических опытов с детьми. университета. Подобные рассмотрения позволяют реализо- вать процесс накопления («голосования»), представленный на фото VII, непосредственно на аппаратном уровне. Примерная схема такой реализации изображена на рис. 3. Каждой группе значений (х, у), попавших в интервал (Дх, Ду) и имеющих (с определенным разбросом) одинаковые значения параметра О, отводится отдельный процессор (рис. 3,а). Точно так же свой процессор предназначается каждой группе значений (р, 0), попавших в общий интервал (Др, Д0) (рис. 3,6). Каждый процессор может находиться в двух состояниях — включенном или выключенном,— что определяется следу- ющей модификацией описанного ранее алгоритма. Каждый процессор, закрепленный за элементами края, включается, когда величина сигнала на его входе превысит некоторое пороговое значение. Каждый процессор,' закреп- ленный за представлениями прямых параметрами (р, 0), также включается, когда величина входного сигнала превысит некоторое пороговое значение. Это значит, что если включи- лось достаточное количество коллинеарных блоков края 120
(рис. 39а), то «включится» и линия, на которой лежат все соответствующие элементы края (рис. 3,6), т. е. система нарисует прямую с полученными параметрами. Описанная реализация преобразования Хью показывает, каким образом электрическая схема сложной структуры, работающая по простым правилам, может осуществить слож- ную обработку потока информации при голосовании. Сети, которые состоят из самых простых вычислительных блоков, но обладают сложной структурой связей, несущих простые сигналы об уровнях возбуждения и торможения, могут явиться той однородной структурой, которая обеспечивает вычисления на различных уровнях абстракции—от первичной зрительной обработки вплоть до символических и когнитив- ных уровней. Мы попытались осветить лишь некоторые из многих вопросов, связанных с такого рода вычислительными моделя- ми. Однако у читателя, возможно, возникнет вопрос, как можно использовать подобные вычисления в универсальных системах машинного зрения. Прежде всего следует отметить, что универсальность достигается за счет использования иерархий. При этом система вычисления линии может стать частью гораздо большей сети, пронизывающей всю иерархию зрительных абстракций (см. рис. 1). Образование иерархий, по-видимому, широко используется живыми существами как стратегия организации информации. На рис. 4 представлена онтологическая иерархия1 предпочтений, выявленная Килем [11] в ходе психологических экспериментов с детьми. Суще- ствование такой иерархии обнаруживается и в экспериментах, проведенных со взрослыми людьми, в ходе которых по движениям глаз изучаются предпочтения при распределении внимания. Иерархическую организацию можно усмотреть и в анатомическом строении мозга (правда, надежные данные получены пока только для зрительных полей коры; см. [12]). Вполне возможно, что иерархичность свойственна всей струк- турной организации коры головного мозга. Заключение В последнее десятилетие основные достижения в области создания систем машинного зрения были связаны с глубоким пониманием вычислительных процессов, протекающих в зри- тельных системах, и принципов их организации. Сегодняшние исследования в значительной мере определяются осознанием того факта, что зрительные примитивы (промежуточные 1 То есть иерархия, описывающая отношения происхождения и существования.— Прим, перев. 121
изображения) образуют некую естественную иерархию, для построения которой требуются огромные объемы вычисле- ний. Теперь, когда мы понимаем, что именно надо вычислять, главная проблема заключается в проведении этих вычислений в режиме реального времени. На протяжении последнего десятилетия разработки «чисто» машинного зрения, не учиты- вающие специфики действия биологических систем, и иссле- дования зрительных систем животных развивались в тесном взаимодействии. В нашей статье мы стремились показать, что идеи, идущие из биологии (вопреки высказываемым поначалу сомнениям), играют все более существенную роль в выработ- ке направления исследований, касающихся систем машинного зрения. Концепция иерархии представлений была развита вне прямой связи с биологическими исследованиями, однако, как выяснилось потом, в мозге животных иерархические пред- ставления играют роль фундаментального принципа организа- ции. Более того, в живых системах, по-видимому, решена и задача реализации параллельных вычислений, которая пока остается камнем преткновения для создателей машинного зрения. Есть все основания надеяться, что ближайшее десяти- летие ознаменуется расширением междисциплинарных иссле- дований, направленных на создание систем зрительного вос- приятия, работающих в режиме реального времени и пригод- ных для практического применения. Об авторах: Дана X. Баллард— професссор, а Кристофер М. Браун—декан факультета вычислительных наук в Роче- стерском университете. 1. Roberts L. G. In: Optical and Electro-Optical Interaction Processing (J. P. Tippett et al., eds.).—Cambridge (Ma): Mit Press, 1965. 2. Triesman A. M. The Role of Attention in Object Perception, In: Braddick O. J., Sleigh A. C. Physical and Biological Prosessing of Images.—Berlin: Springer-Verlag, 1983. 3. Crick F. The Function of the Thalamic Reticular Complex: The Searchlight Hypothesis. Proceedings of the National Academy of Sciences, 1984. 4. Mishkin M., Ungerlieder L. G., Macko K. A. Object Vision and Spatial Vision: Two Cortical Pathways.. Trends in Neurosciences, October, 1983. 5. Duda R. O., Hart P. E. The Use of Hough Transform to Detect Lines and Curves in Pictures. Communications of the ACM, 15, vol. 1, January, 1972, pp. 11-15. 6. Ballard D. H., Parameter Networks: Towards a Theory of Low-Level Vision, Proceedings, 7th IJCAI, Vancouver (B.C.), August 1981; опубликовано также в: Parameter Networks. Artificial Intelligence, 22, 1984, pp. 235-267. 122
7. Kirkpatrick S., Gellatt C. D., Vecchi M. D. Optimization by Simulated Annealing. Science, 1983, vol. 220, pp. 671-680. 8. Hopfield J. J., Neural Networks and Physical Systems with Emergent Collection Computational Abilities. Proceedings of the National Academy of Sciences, 1982, vol. 79, pp. 2554-2558. 9. Hinton G. E., Sejnowski T. J. Optimal Perceptual Inference. Proceedings, IEEE Computer Vision and Pattern Recognition Confe- rence, Washington (DC), June, 1983, pp. 448-453. 10. Geman S., Geman D. Stochastic Relaxation, Gibbs Distributions, and the Bayesian Restoration of Images. TR, Brown University, Septem- ber 1983. 11. Kiel F. C. Sematic and Conceptual Development: An Ontological Perspective.— Cambridge (Ma): Harvard University Press, 1979. 12. Van Essen D. C., Maunsell J. H. R. Hierarchical Organisation and Functional Streams in the Visual Cortex. Trends in Neurosciences, September 1983. Рекомендуемая литература Ballard D. H., Brown С. M. Computer Vision.— New York: Prentice- Hall, 1982. Barrow H. G., Tenenbaum J. M. Proceedings IEEE, 69, 1981, pp. 572- 595. Brady M. Computing Surveys, 14, 1982, pp. 3-72. Hanson A. R., Riesman E. M. (eds.). Computer Vision Systems.—New York: Academic Press, 1977. Marr D. Vision.—San Francisco: W. H. Freeman and Co., 1982. Nevatia R. Machine Perception.—New York: Prentice-Hall, 1982. Благодарности. При подготовке этой статьи мы пользовались поддержкой Агентства перспективных исследований министерства обороны.
Обучение в параллельных сетях Джефри Е. Хинтон Мозг представляет собой чрезвычайно мощное вычисли- тельное устройство. Только в коре головного мозга содержит- ся более 10 млрд, нейронов, каждый из которых соединен с тысячами других. Возможно, все наши знания определяются силой этих связей, благодаря которым мы обретаем способ- ность без труда понимать родной язык, разумно планировать свое поведение, по отдельным признакам восстанавливать важные для нас факты; эти связи дают мозгу возможность по распределению световых пятен на сетчатке глаза восстанавли- вать объемные изображения предметов и определять их положение в пространстве. Для сравнения укажем, что современные компьютеры — если они и в состоянии решать подобные задачи—делают это крайне медленно. ЭВМ могут очень быстро перемножать многозначные числа или запоми- нать миллионы разных фактов, но плохо справляются с тем, что по силам пятилетнему ребенку. Возможно, мы как-то не так программируем компьютеры. Поскольку мы просто не знаем, как воспринимаем язык или интерпретируем зрительные образы, у нас нет соответству- ющих структур данных и процедур, которые можно было бы вложить в компьютер. Именно в глубоком изучении этих вопросов видят путь к успеху большинство исследователей, работающих в области искусственного интеллекта (ИИ), и в последние 20 лет здесь был достигнут немалый прогресс. Не исключено и другое объяснение: дело в том, что мозг и компьютер работают совершенно по-разному. При этом мозг хорошо справляется с вычислениями особого типа, которые необходимы для решения задач повседневной жизни, но с трудом поддаются программированию на обычном компьютере. То обстоятельство, что информация отражается Перепечатано с разрешения журнала Byte, апрель 1985 г. Copy- right © by McGraw-Hill, Inc., New York. 10020. Все права сохраняют- ся 124
в мозге в распределении весов связей, по-видимому, и позволяет ему быстро оценивать множество положительных и отрицательных факторов, принимая в результате разумное решение или давая осмысленную интерпретацию. На цифро- вом компьютере можно, конечно, смоделировать любой вычислительный процесс. Однако, когда одно устройство моделирует другое, сильно от него отличающееся, процесс моделирования обычно протекает очень медленно. Для моде- лирования всех нейронов человеческого мозга в режиме реального времени, должно быть, потребуется не одна тысяча больших компьютеров. В то же время для моделирования всех арифметических операций, производимых в большом современном компьютере, потребовались бы миллиарды людей. Легко рассуждать о том, что мозг в своей работе использует совсем иные вычислительные принципы. Много труднее понять, каковы эти принципы. Экспериментальное исследование поведения отдельных нейронов и типов связи между ними открыло немало интересного, однако лежащие в основе их действия вычислительные принципы все еще остаются невыясненными. Мы, к примеру, не знаем, как представляются в мозге сложные идеи, как мозг подыскивает соответствие между запасенными в нем моделями объектов и информацией, поступающей извне, и как он обучается. Касаясь этого вопроса, Дж. А. Фелдман (см. его статью в настоящем сборнике) описывает некоторые современные представления о возможной роли параллельных сетей в распознавании объектов. Мы же рассмотрим, каким образом в этих сетях, чем-то напоминающих мозг, может осуще- ствляться процесс обучения, и изложим кратко две теории этого процесса, старую и новую. Следует, однако, помнить, что эти теории описывают все процессы крайне упрощенно: реальный мозг намного сложнее. Ассоциирование входов с выходами Представим себе «черньщ ящик», обладающий набором входных и выходных окончаний. Каждое такое окончание может находиться в одном из двух состояний: активном или пассивном (которые обозначаются соответственно 1 и 0). Мы можем показать этому «черному ящику», что от него требует- ся, многократно подавая на его входы определенную комбина- цию из нулей и единиц и подавая другую комбинацию из нулей и единиц на его выходные окончания (каждую такую комбинацию называют вектором). Проведя подобную проце- дуру с большим числом пар «вход-выход», мы вправе ожи- дать, что при подаче на входные окончания некоторого 125
вектора выходные окончания автоматически придут в требу- емое состояние. В идеале — если в отображении, связыва- ющем входные векторы с выходными, присутствует некая простая закономерность—было бы желательно, чтобы «чер- ный ящик» выявил эту закономерность и закрепил ее в распределении весов внутренних связей, так что при подаче на входные окончания ранее не встречавшегося вектора он создал бы в некотором смысле правильный выход. Такого рода «черный ящик» мог бы оказаться очень полезным в качестве модуля, входящего в состав интеллектуальной системы. Если в «черном ящике» между входными и выходными окончаниями существуют только прямые связи, то процедура обучения может быть весьма простой: веса этих связей подстраиваются до тех пор, пока не установится требуемое соответствие между входными и выходными векторами. Эта процедура состоит из двух чередующихся одна за другой фаз. В фазе 1 на входных окончаниях задается входной вектор, а на выходных — выходной вектор. Затем веса1 всех связей, соединяющих активные входные и выходные окончания, увеличиваются на некоторую малую величину 8. В фазе 2 на входе фиксируется тот же самый вектор, однако теперь самому «черному ящику» предоставлено право решать, какой вектор сформировать на выходе. При этом должно соблюдаться следующее правило: выходное оконча- ние активируется только тогда, когда сумма весов его связей с активными входными окончаниями положительна. После этого веса всех связей, соединяющих активные входные и выходные окончания, уменьшаются на величину 8. Если сеть выработала правильный выходной вектор, то эти уменьшения весов в точности компенсируют их увеличения, произведен- ные в фазе 1, поскольку в обеих фазах активны одни и те же пары окончаний. Если же сеть в фазе 2 выработала не тот вектор, который нужен, то изменения не компенсируют друг друга, и в результате некоторые веса изменятся. Описанная процедура представляет собой вариант сходя- щейся процедуры восприятия Уидроу — Хоффа. Она обладает одним замечательным свойством: если долго продолжать применение описанной двухфазной процедуры, многократно пропуская через ящик все пары входных и выходных векто- ров, то придем к такому распределению весов, которое для каждого входного вектора обеспечивает выработку правиль- ного выходного вектора, однако при условии, что хотя бы одно такое распределение существует. Существенным недо- 1 В дальнейшем будет видно, что .«вес связи» может принимать как положительные, так и отрицательные значения.— Прим. ред. 126
статком таких процедур, из-за которого в системах искус- ственного интеллекта от них отказались, является то, что в самых интересных задачах требуемого распределения весов не существует. Соотношение между входными и выходными векторами оказывается слишком сложным для того, чтобы система, у которой вход и выход непосредственно связаны, могла бы их усвоить. Необходимо, чтобы в структуре Рис. 1. Пример сети с 16 входными окончаниями, 12 промежуточны- ми блоками и 2 выходными окончаниями. Окончания, выделенные жирными линиями, указывают разряды входного и выходного векто- ров, равные единице. Второй снизу 8-разрядный вектор получается из самого нижнего вектора сдвигом на одну позицию влево (с цикличе- ским переносом). При этих двух взятых в качестве входа векторах активным будет левый разряд выходного вектора (изображенного в верхней части рисунка), что говорит о сдвиге влево. Каждый из 12 промежуточных блоков соединен со всеми входными и выходными окончаниями, но на рисунке изображен набор связей только одного блока. У промежуточных блоков имеется также некоторый фиксиро- ванный порог, который вычитается из их суммарного входа до того, как формируется решение об их включении или выключении. 127
Рис. 2. Веса, сформированные 12 промежуточными блоками. Черные и белые прямоугольники в двух нижних строках каждого блока изображают веса его связей с входными окончаниями. Размеры прямоугольников соответствуют абсолютным значениям весов. Чер- ным отмечены веса отрицательного знака. Веса, изображенные в верхней части каждого блока, определяют его влияние на выходные окончания сети. Начальные значения всех весов равны нулю, и изменяются они очень малыми шагами. Отметим, что все 12 блоков выявляют различные комбинации активности входных окончаний; эти комбинации, вообще говоря, являются чувствительными детекторами того типа общего сдвига, за который будет «голосовать» данный блок. «черного ящика» имелись некие промежуточные слои, а лежащие в этих слоях блоки должны учиться выделять из входного вектора иерархию тех его «признаков», которые в конечном счете и определяют выбор выходного вектора. Приведем пример сравнительно простой задачи, для реше- ния которой требуется введение таких промежуточных бло- ков. Пусть вход системы состоит ' из двух 8-разрядных векторов, один из которых является результатом сдвига второго на одну позицию вправо или влево. Пусть на выходе имеется два окончания, соответствующие двум возможным направлениям сдвига. «Черный ящик» должен активировать то или иное выходное окончание в зависимости от направле- ния сдвига в векторах, поданных на вход. Эта задача не так проста, как может показаться на первый взгляд: ведь каждый 128


Фото I. Изображения оптиче- ского потока (скоростей сдви- га образа на сетчатке глаза, вызванного движением сце- ны), создаваемого вращением сферы и цилиндра.


Фото II Форма тел, восста- новленная по изображениям с помощью вычислений. При таких вычислениях для полу- чения на основе изображения информации о физической сцене используются матема- тические модели физических законов и некоторые предпо- ложения об окружающем ми- ре. (По материалам Дж Алоймониса, Рочестер- ский университет.)
б Фото III. Аэрофотоснимок городского парка и строений, кото- рый подается на вход системы MOSAIC как одно (монокуляр- ное) изображение (а) То же изображение, обработанное с использованием алгоритма поиска краев (б)
Фото IV. К изображению на фото III, б применены различные процедуры обработки, полученные отрезки трехмерных линий объединены в «проволочную модель». Применение методов машинной графики к исходному фотоснимку совместно с трехмерными моделями, выделенными при дальнейшей обра- ботке «проволочной модели», позволило вполне достоверно восстановить первоначальную сцену. (По материалам М. Хер- мана и Т Канаде из университета Карнеги — Меллона )

в Фо го V Уличная сцена, предложенная для анализа системы машинного зрения VISIONS (а) Отрезки прямых, выделенные на предыдущем изображении (б) Области, выделенные на исходном изображении (в)

Фото VI. Области, выделен- ные и размеченные системой VISIONS в сцене, включа- ющей изображение дома. (Фо- то V, VI любезно предостав- лены А. Хэнсоном, Э. Райс- маном и группой, рабо- тающей над программой VISIONS в Массачусетском университете.)
a в Фото VII Результат применения оператора выделения контура к изображению кубика Рубика (а). Геометрическое соотношение, связывающее локальный эле- мент края (х0, у0, 0), изобра- женный кружком, с прямой, за- данной величинами р и 0 (б). Для каждого элемента края на изоб- ражении такую прямую можно определить единственным обра- зом. Каждый элемент края «го- лосует» за те прямые, которые могли его породить; это изобра- жено на графике в координатах р и 0 (в). Самые яркие скопления возможных величин р и 0 соот- ветствуют наиболее вероятным параметрам прямых на исходном изображении.
Фото VIII. Фотография, сделанная сканирующим электронным микро- скопом с клеток мозга, выращенных непосредственно на микросхеме процессора 68 000. Скопление шариков в центре снимка — это тела клеток, а тонкие линии, радиально расходящиеся от скопления,— отростки нейронов. Дорожки на микросхеме имеют ширину 2—5 мкм, тогда как поперечные сечения отростков местами становятся меньше 0,2 мкм.
Фото IX. Электронная микрофотография сечения сетчатки толщиной 0,1 мкм и размером 200x500 мкм. Свет действует на рецепторы (в нижней части фотогра- фии), и результирующий выходной сигнал формируется в ганглиозных клетках (наверху). Большие круглые объекты — сомы (тела нервных клеток), а очень тонкие слои между клетками — нервные отростки, которые образуют друг с другом синаптические контакты. С помощью серии таких микрофотографий получают восстановленные изображения нервных клеток, подобные тому, что показано на фото XI.
Фото X. Структура аксона— восстановленное (М. Гридбер- гом, Playfair) изображение, полученное методом послой- ной электронной микроско- пии. Подобную внутреннюю структуру имеет дендрит. Длинные трубочки (микротру- бочки) и круглые зеленые об- разования (органеллы) опре- деляют локальную геометрию этого отростка нервной клет- ки. Диаметр отростка около 1 мкм. (Перепечатано из жур- нала Advances in Cellular Ne- urology [3] с разрешения изд-ва «Академик пресс».) 1—аксолемма; 2 — органелла; 3 — микротрубочки.
Фото XI. Изображение нервной клетки, восстановлен- ное с помощью компьютера по серийным электронным микрографиям, подобным тем, что представлены на фото IX. Диаметр сомы около 10 мкм. (Это восстанов- ленное изображение амакринной клетки из сетчатки было получено Р. Джекобсом с помощью коллекции микрофотографий, составленной Б. Мак-Гуиром )
Фото XII. Электрическая мо- дель клетки, изображенной на фото XI. Часть программного обеспечения, использованного для расчета приведенных кри- вых, была разработана С. Элайсом (Общественный госпиталь шт. Массачусетс, при медицинской школе Гар- вардского университета).
разряд входного вектора сам по себе не несет никакой информации о том, каким должен быть выходной вектор. Более того, не поможет и простое объединение информации о состоянии входных разрядов. Эта задача может быть решена только совокупным рассмотрением разрядов обоих входных векторов во всех возможных их комбинациях. Для этого необходимы промежуточные блоки сети, выделяющие инфор- мативные комбинации. Набор таких промежуточных детекто- ров признаков, совместно решающих сформулированную за- дачу ,ч изображен на рис. 1 и 2. Если попытаться распространить описанную выше про- стую процедуру обучения на сеть с промежуточными блока- ми, то возникнут сложности, связанные с тем, что заранее не ясно, какого поведения следует потребовать от этих блоков. Поэтому алгоритм обучения должен не только жестко фикси- ровать веса связей, обеспечивающие требуемые реакции выходных окончаний, но и решить, при каких условиях должен активироваться каждый из промежуточных блоков. Для этого требуется создание промежуточных представле- ний. В последнее время разработан ряд процедур такого типа. Далее мы рассмотрим одну из них, созданную Терри Сейнов- ски и автором настоящей статьи. Она может работать только с сетями особого типа, которые мы и опишем. Сети, минимизирующие свою энергию До сих пор мы рассматривали сеть, состоящую из слоев блоков, причем блоки, лежащие в одном слое, были связаны с блоками только из соседних слоев. Более сложные сети обладают перекрестными связями внутри слоя и обратной связью от более высоких слоев к более низким. В общем виде анализ таких сетей крайне затруднителен, однако Джон Хопфилд [1] из Калифорнийского технологического института показал, что существует частный вариант такой сети, поведе- ние которого оказывается весьма интересным. В сети Хоп- филда блоки принимают решения асинхронно, связь между блоками осуществляется мгновенно и все соединения симмет- ричны, т. е. воздействие блока i на блок j в точности равно воздействию блока j на блок I. При этих ограничениях все возможные состояния сети образуют некое подобие холми- стой поверхности, а текущее состояние сети аналогично поведению тяжелого шарика, пущенного на эту поверхность: он движется вниз по склону в ближайший локальный мини- мум. Каждая точка поверхности соответствует некоторому сочетанию активностей блоков в сети, а высота подъема поверхности в данной точке характеризует «энергию» этого сочетания. Энергия данного сочетания активностей определя- 6—2596 129
Рис. 3. Простая сеть с тремя входными (внизу), двумя промежуточ- ными (в середине) и двумя выходными (вверху) блоками. Все связи симметричны. ется как сумма всех весов связей между парами активных блоков, взятая со знаком минус. Таким образом, если связь между двумя какими-то блоками имеет большой положитель- ный вес, то сочетания, в которых эти блоки активны, характеризуются низким уровнем энергии — именно к таким сочетаниям и будет стремиться вся сеть. И наоборот, блоки с отрицательной связью при активации добавляют к энергии сети большую величину, так что сеть стремится избегать подобных состояний. На рис. 3 изображена небольшая сеть с минимальным уровнем энергии -8. Можете ли вы указать, какие блоки активны, а какие неактивны в этом состоянии с минимальной энергией? С какого бы состояния вы ни начали, вы всегда придете к некоторому энергетическому минимуму, если пос- ледовательно применять ко всем блокам (в произвольном порядке) следующее правило: при положительной сумме весов связей данного блока со всеми активными (в данный момент) блоками активируйте этот блок; при неположитель- ной связи отключите его. Применив эту процедуру несколько раз, вы обйаружите, что в сети имеется еще один минимум энергии, равный -3, и что сеть; придя в это состояние, в нем и останется. 130
Такие сети можно использовать для задач ассоциирования входных векторов с выходными. Чтобы создать входной вектор, зафиксируем некоторое подмножество блоков в ак- тивных и неактивных состояниях и предоставим сеть самой себе. Когда незафиксированная часть сети придет к энергети- ческому минимуму, состояния какого-то другого подмноже- ства этой сети примем за выходной вектор. Так, на рис. 3 можно зафиксировать в активном состоянии три нижних блока, смоделировав тем самым входной вектор (1, 1, 1); дождавшись, когда сеть придет к равновесию, взять состо- яния двух верхних блоков в качестве выходного вектора (1, 0). Чтобы обучить сеть конкретному набору входо- выходных соотношений, необходимо сформировать соответ- ствующий профиль энергетической поверхности, т. е. вы- брать веса таким образом, чтобы при фиксировании каждого входного вектора сеть приходила к энергетическому миниму- му, соответствующему нужному выходному вектору. Выбор таких весов — задача непростая, к этой трудности добавляет- ся еще то, что может получиться энергетическая поверхность с большим числом различных локальных минимумов для каждого фиксированного входного вектора. В этом случае каждый входной вектор может привести к многим различным выходным векторам; конкретный выходной вектор определя- ется тем, в какой энергетический минимум придет система. Например, на рис. 3 входной вектор (0, 0, 0) в зависимости от начальных состояний средних блоков и от того порядка, в котором принимаются решения об активации, может привести к двум разным выходным векторам. Вероятностная сеть Коль скоро при одном и том же входном векторе в разных случаях могут возникать разные выходные векторы, то желательно хотя бы иметь возможность контролировать вероятности таких событий. Хотелось бы, например, добиться того, чтобы система находила глубокие минимумы чаще, чем мелкие. Еще лучше, если бы относительная вероятность перехода системы в один из двух различных минимумов зависела только от соотношения их глубин. Это позволило бы управлять вероятностями получения конкретных выход- ных векторов, меняя профиль энергетической поверхности системы путем изменения весов связей. Здесь вновь удобно воспользоваггься физической анало- гией. Если тяжелый шарик положить на неровную повер- хность и начать ее встряхивать, то шарик (точнее, точка его касания с поверхностью) вполне может перескакивать через 131
преграды, отделяющие менее глубокие минимумы от более глубоких. При этом большую часть времени шарик будете находиться в глубоких энергетических минимумах, хотя ино^ гда может оказываться и в состояниях с более высоким? уровнем энергии. Если достаточно долго трясти таким обра^ зом поверхность с шариком, то ситуация упростится — будет достигнуто состояние, называемое тепловым равновесием. В этом состоянии, хотя шарик и движется с места на место, вероятность нахождения его в той или иной точке поверхно- сти оказывается величиной постоянной, зависящей только от высоты поверхности в данной точке; место, откуда шарик начал движение, и профиль энергетической поверхности теперь не имеют значения. Математически это можно сфор- мулировать так: логарифм отношения вероятностей нахожде- ния шарика в двух разных состояниях пропорционален разно- сти энергий этих состояний. Мысль об использовании «тепло- вого шума» для выхода из локальных минимумов и для повышения вероятности попадания в более глубокие миниму- мы принадлежит Скотту Киркпатрику из фирмы ИБМ [2]. Он показал, что при решении сложных задач, когда финансовые затраты на решения аналогичны энергии шарика, поиск более дешевых решений разумно начинать в ситуации с высоким уровнем теплового шума, в дальнейшем постепенно уменьшая его; этот процесс Киркпатрик назвал «имитацией теплового отпуска» !. Аналог теплового шума нетрудно ввести и в рассмотрен- ные нами параллельные сети. Для этого необходимо только модифицировать правило, которым блоки сети «руководству- ются» при принятии решения. Пусть по-прежнему вычисляет- ся сумма весов связей, идущих к активным блокам. Но если прежде блоки включались и выключались соответственно при положительном и отрицательном знаке суммы (что всегда приводило к уменьшению энергии сети), то теперь пусть они ведут себя вероятностным образом—в соответствии с кри- вой, представленной на рис. 4. Основываясь на таком вероятностном правиле, можно управлять сетью следующим образом. Зафиксируем входной вектор, а остальным блокам предоставим возможность акти- вироваться случайным образом; подождав, пока сеть придет к тепловому равновесию, считаем значение выходного векто- ра. В тепловом равновесии выходные блоки продолжают изменять свои состояния, однако вероятность появления 1 По аналогии с тепловой процедурой отпуска, используемой при закалке металлических изделий. Такой постёпенный отпуск придает изделию внутреннюю пластичность, делая его менее хрупким.— Прим. ред. 132
Рис. 4. Вероятность р^ активности к-го блока. Величина ДЕ пред- ставляет собой сумму весов связей к-го блока со всеми активными в данный момент блоками. Кривая определяется уравнением: =_______1______ к 1+ехр(-ДЕк/Т)’ где Т— уровень теплового шума в сети. Сплошная линия соответству- ет Т=1, пунктирная—Т=0,25. При уменьшении Т блок становится менее стохастичным, при Т-0 кривая становится ступенчатой. каждого выходного вектора становится величиной постоян- ной, которая не меняется со временем. Сегодня изучением такого рода сетей занимаются иссле- дователи, работающие в таких совершенно разных областях науки, как статистика (С. Джиман и Д. Джиман), нейрофизи- ология (Т. Сейновски), психология (П. Смоленски) и искус- ственный интеллект. Специалисты по статистике называют такие сети случайными марковскими полями. Частный вари- ант этих сетей, разработанный нами в университете Карне- ги— Меллона, мы назвали машиной Больцмана—в честь австрийского физика Людвига Больцмана, одного из создате- лей статистической механики. Еще раз об обучении Вернемся теперь к вопросу об обучении. Прежде всего сформулируем задачу обучения в вероятностных терминах: для каждого набора возможных входных векторов требуется получить с определенной вероятностью все допустимые вы- ходные векторы. (Вообще говоря, в большинстве случаев эта вероятность близка к 0 и лишь в некоторых случаях близка к 1.) Затем приступим к обучению сети: для этого снова будем 133
чередовать две фазы обучения, подобные тем, что использо- вались в старом правиле обучения. В фазе 1 мы с соответствующей частотой фиксируем пары, состоящие из одного входного и одного выходного вектора, и тем самым задаем требуемые вроятности. Всякий раз, когда зафиксирована одна такая пара, мы предоставляем сеть самой себе и ждем, пока она не приблизится к состоянию теплового равновесия. Затем даем сети возмож- ность поработать еще некоторое время, изменяя при этом на каждом временном такте ее веса в соответствии со следу- ющим правилом: если два блока активны, то вес связи между ними увеличивается на величину 8. В фазе 2 фиксируем входные векторы и предоставляем системе возможность самой решать вопрос о том, какой ей построить выходной вектор. Когда сеть придет в состояние теплового равновесия, мы, как и прежде, даем ей возмож- ность поработать еще немного, но теперь веса связей между активными блоками уменьшаются на величину 8. Если попеременно работать в фазах 1 и 2, предъявляя сети всевозможные пары входных и выходных векторов, то результирующее изменение веса связи между двумя произ- вольно взятыми блоками будет пропорционально разности между вероятностью того, что оба блока одновременно активны в фазе 1, и вероятностью того, что они одновременно активны в фазе 2 (при подсчете вероятностей происходит усреднение по всем парам входного и выходного векторов). Следует отметить одно важное обстоятельство: если назван- ные вероятности измерены в состоянии теплового равновесия, то разность между ними точно равна той величине, на которую надо изменить значения весов связей, чтобы поведе- ние сети в фазе 2 (когда она предоставлена самой себе) повторяло ее поведение в фазе 1 (когда желаемое поведение сети достигается внешним воздействием). Чтобы доказать это, нужно определить меру различия между распределением вероятностей, «навязанным» сети в фазе 1, и распределением вероятностей, которое сеть сама создает в фазе 2. При соответствующем определении меры различия можно пока- зать, что изменение весов связей в соответствии с вышеопи- санной процедурой приводит к уменьшению значения этой меры (доказательство см. в работе [3]). На рис. 1 и 2 показано, как происходит процедура обучения, если поставлена задача «распознать» направление сдвига, посредством которого один 8-разрядный вектор пере- водится в другой 8-разрядный вектор. Эта задача не так проста, как можно подумать: ведь в начале своей работы сеть не располагает никакой информацией. В нее не вложены представления о том, что соседние разряды входного вектора 134
как-то взаимодействуют между собой, и вообще эта задача для сети не отличается особенно от любой другой. Если той же самой сети предъявить совершенно иную комбинацию входного и выходного векторов, то она создаст другой набор детекторов признаков, соответствующий новой задаче. Ускорение процесса В первом из описанных алгоритмов обучения для того, чтобы заставить блоки сети вести себя соответствующим образом, только изменялись веса связей. В нем не содержа- лось каких-либо указаний относительно того, что надо делать с промежуточными блоками, поведение которых не регламен- тировалось внешними инструкциями. Второй алгоритм обуче- ния располагает более широкими возможностями, поскольку он может по-разному использовать промежуточные блоки, и это способствует достижению требуемого соответствия меж- ду входными и выходными векторами. Таким образом, второй алгоритм фактически создает некие простые внутренние представления. К сожалению, за эти дополнительные воз- можности приходится дорого платить. В настоящее время алгоритм работает крайне медленно: так, просчет примера, изображенного на рис. 1 и 2, требует нескольких часов машинного времени. Для ускорения этого процесса студент Университета Карнеги — Меллона Б. Уорд разработал параллельную систе- му, состоящую из шести плат с микропроцессорами Omnibyte 68000. Каждая плата содержала копию всей сети и работала со своим входным вектором, а затем все платы принимали совместное решение относительно того, как изменить веса связей. Такой подход позволяет ускорить вычисления, однако в конечном итоге желательно было бы реализовать такие вероятностные сети непосредственно на кремниевом кристал- ле. В отличие от существующих ныне компьютеров разрабо- танные нами сети довольно устойчивы к локализованным поломкам и ошибкам в схеме, допущенным при ее изготовле- нии. По мнению К. Мида, при аналоговой реализации элемен- тов в качестве необходимого теплового шума можно исполь- зовать шум, присущий транзисторам, работающим на малой мощности. Не исключено, что это позволит создавать микро- схемы гораздо больших размеров, чем это осуществимо сегодня. Однако подобные идеи еще очень далеки от реализа- ции, и чтобы приблизить их осуществление, потребуется глубокое теоретическое изучение проблемы. Модели, описан- ные в настоящей статье, работают медленно по трем основ- ным причинам. Во-первых, моделирование параллельных се- тей на устройствах последовательного действия неэффектив- 135
но. Во-вторых, чтобы большая сеть пришла в состояние равновесия, каждый из ее блоков должен многократно прини- мать решение. В-третьих, чтобы сеть вычислила то представ- ление, которое будут реализовывать ее промежуточные бло- ки, требуется предъявить ей громадное число обучающих пар «вход-выход». Первая из названных проблем может быть решена путем совершенствования технических средств, одна- ко для решения второй и третьей необходимо дальнейшее развитие теоретических представлений. Только при этом условии обучающиеся сети описанного вида смогут найти применение в решении задач, более приближенных к реально- сти. Об авторе: Джефри Е. Хинтон — ассистент профессора факультета вычислительных методов и программирования в университете Карнеги — Меллона. 1. Hopfield J. J. Neural Networks and Physical Systems with Emergent Collection Computational Abilities. Proceedings of the National Acade- my of Sciences, 1982, vol. 79, pp. 2554-2558. 2. Kirkpatrick S., Gellatt C. D., Vecchi M. D. Optimization by Simulated Annealing. Science, 1983, vol. 220, pp. 671-680. 3. Ackley D. H., Hinton G. E., Sejnovski T. J. A Learning Algorithm for Boltzmann Machines. Cognitive Science, 1985, vol. 9, pp. 147-169. Благодарности. Описанные исследования были проведены Т. Сейновски и автором статьи при поддержке System Development Foundation. Я выражаю признательность сотрудникам Больцманов- ской группы при университете Карнеги—Меллона за ценные замеча- ния.
Сетевые модели Джером А. Фелдман Одна из основных предпосылок создания искусственного интеллекта (ИИ) заключается в том, что интеллектуальное поведение можно имитировать на цифровых ЭВМ. За послед- ние годы в области ИИ были получены важные результаты, имеющие как практическую, так и теоретическую ценность. Однако, несмотря на успехи в решении узких классов задач, многие ученые считают, что общие вопросы интеллекта до сих пор не получили своего развития. До сих пор не удалось имитировать ни естественный интеллект ребенка, ни даже разум простейшего животного, хотя быстродействие совре- менной ЭВМ примерно в миллион раз выше, чем у нейрона, который срабатывает не чаще одного раза в миллисекунду. Еще более удивительный результат мы получим, сравнив скорости действия систем ИИ и реакции людей на простые задания. Человек способен решать задачи самого различного типа — от придумывания названия картине до определения, является ли какое-то слово существительным,— менее чем за полсекунды. Это значит, что мозг—устройство, состоящее из нейронных элементов, имеющих скорость действия поряд- ка нескольких миллисекунд,— может решать трудные зри- тельные и лингвистические задачи за какие-то сотни миллисе- кунд (примерно за 0,5 с, т. е. 500 мс), или приблизительно за 100 шагов. Самые совершенные программы ИИ для решения подобных задач требуют миллионы шагов вычислений, не обеспечивая уровня общности, свойственного человеку. Ко- нечно, мозг работает как параллельное устройство, а практи- чески все существующие машины — последовательные, вы- полняющие одну команду за другой. Возникает вопрос, каковы же алгоритмы, используемые таким высокопараллель- ным естественным «компьютером», как человеческий мозг? Перепечатано с разрешения журнала Byte, апрель 1985 г. Copy- right © by McGraw-Hill, Inc., New York 10020. Все права сохраняют- ся. 137
Разработка возможных алгоритмов для ЭВМ такой совер- шенно новой архитектуры является отправной точкой нового перспективного направления в искусственном интеллекте. Работы в этом направлении опираются на понятие «абстракт- ного компьютера», максимально приближенного по своей структуре и принципам работы к мозгу. Указанный подход позволяет исследователям в области ИИ сотрудничать с коллегами-биологами, изучающими мозг и поведение: хоро- ший алгоритм для выполнения определенной задачи на вычис- лительной модели может служить гипотезой о механизмах, которые использует мозг для выполнения той же задачи. Некоторые психологи считают, что высокопараллельные мо- дели лучше объясняют результаты их исследований, чем модели, построенные на последовательных машинах. Со своей стороны, специалисты в области ИИ используют эксперимен- тальные результаты психологов при создании параллельных алгоритмов для решения различных задач. Помимо ограничения, связанного с решением задачи за 100 шагов, имитация работы мозга привносит и другие особенности в способы вычислений. Главная из них заключа- ется в том, что ограничения по времени лимитируют объем информации, передаваемой от одного нейрона к другому, всего несколькими битами. Это означает, что нейроны не могут обмениваться сложными сочетаниями символов, кото- рые так распространены в ИИ, а сложные вычисления удается выполнять только благодаря учету связей между элементами. Модели такого типа называются сетевыми. Использование мозга как прототипа требует рассмотрения большого числа связей между элементами — около 10 000 на один нейрон. Общее число нейронов (около 100 млрд.) кажет- ся очень большим, но на самом деле оно и является основным ограничением. Поскольку зрительное восприятие осуществля- ется действием миллиона параллельных входов, любой алго- ритм, требующий п2 элементов, здесь не подойдет. Кроме того, в мозге не возникает новых нейронов и почти не создаются новые связи, что тоже накладывает свои условия на возможные модели обучения. Но даже при всех этих ограничениях сетевые модели завоевывают все большую популярность в ИИ. Модель зрения Продемонстрируем особенности вычисления по связям на простом примере. Куб, изображенный на рис. 1, иллюстриру- ет оптическую иллюзию, описанную швейцарским натурали- стом Л. А. Некером в 1832 г. Большинство людей сначала видят куб так, будто вершина G находится к ним ближе 138
всего; сцнако его можно увидеть иначе — так, что к зрителю обращена вершина А. Для этого сфокусируйте взгляд на вершине А и представьте себе, что она выступает с бумаги,— тогда картинка «перевернется» так, что вершина А станет самой близкой к вам, причем изменение произойдет менее чем за секунду. Куб Некера интересен для психологов и тем, что изменения его ориентации происходят спонтанно, если вы просто продолжаете смотреть на него. Для исследователя в области ИИ это важно с той точки зрения, что помогает разобраться в процессе параллельных вычислений. Итак, вы заметили, как быстро «обращается» куб Некера, и знаете, как медленно работают отдельные вычислительные элементы мозга человека. Последовательная программа на таком медленном устройстве вообще не справится с работой. Однако ситуация здесь гораздо сложнее. И у человека, и у машины зрение требует нескольких уровней обработки ин- формации1. Как правило, эти уровни связаны с выделением краев ребер, линий, вершин, поверхностей и описаний объек- Рис. 1. Оптическая иллюзия куба Не- кера. Какая из вершин находится бли- же к вам — А или 6? тов. Ограничивающие ,линии и ребра для куба, где А обращена к зрителю, и для куба, где G обращена к зрителю, одни и те же, но многие другие характеристики видятся по-разному. Частично эти различия показаны на рис. 2. Интересно, как наша зрительная система одновременно перек- лючается с одного множества взаимосогласованных воспри- ятий элементов куба на другое. Это явление хорошо демон- 1 См. статью Д. X. Балларда и К. М. Брауна «Зрение» в настоящем сборнике. 139
Рис. 2. Сетевая модель, иллюстрирующая процесс восприятия куба Некера, изображенного на рис. 1. стрирует основное, кооперативное, свойство параллельных вычислений и их принципиальное отличие от вычислений на обычных машинах. Куб Некера может дать информацию и о некоторых деталях, свойственных сетевой модели (рис. 2). Каждый существенный элемент модели у нас представлен как отдель- ный вычислительный элемент, связанный со многими другими элементами. Каждый элемент имеет уровень активности (скажем, от -10 до +10) и автоматически посылает значение своего уровня активности по всем выходящим из него соединениям. На сети (рис. 2) согласующиеся друг с другом элементы (например, «Н ближе к зрителю, чем G, и G заслонена») связаны дугами. Взаимоисключающие элементы, например «G заслонена» и «G не заслонена», связаны дугами с кружочками на концах, обозначающими отрицание. Для завершения построения модели необходимо задать прави- ло, по которому элемент вычисляет свою новую величину активности по входным данным и старому значению активно- сти. Можно предположить, например, что элементы вычисля- ют среднее значение положительных и отрицательных вход- ных активностей. Сети вроде тех, что показаны на рис. 2, не очень чувствительны к точному выбору правил вычисления — это одна из причин их привлекательности. Элементы, вза- имосвязанные отрицательными связями, порождают сеть типа «победитель получает все». Такие сети представляют собой один из основных механизмов выбора решения в сетевых моделях и имеют известные нейрофизиологические аналоги. Значительная часть работ этого направления в искусствен- ном интеллекте, в котором исследуются высокопараллельные методы, посвящена использованию конструкций, подобных изображенной на рис. 2, для создания моделей интеллекту- 140
альной деятельности. Преимущества таких подходов — тесная связь с естественным интеллектом, большая устойчивость к помехам, легкость реализации на параллельных устройствах. Но основное преимущество сетевых моделей состоит в том, что они позволяют лучше описывать постановку некоторых вычислительных задач. Я не знаю другого способа описать феномен куба Некера, который был бы столь же экономен и прозрачен, как модель, показанная на рис. 2. Сетевые модели в естественном языке Сетевые модели успешно применяются в разных областях искусственного интеллекта и смежных науках. Машинное зрение — самая естественная область применения параллель- ных вычислений. В статье Балларда и Брауна отражены результаты, достигнутые при решении задач машинного зрения. Однако эта же методика весьма эффективна и для исследования естественного языка, где также получены не- плохие результаты. Методы параллельной обработки данных особенно хорошо подходят для решения проблемы лингвисти- ческой многозначности. Задумайтесь, что происходит, кдгда вам, например, говорят такую фразу: «Боб бросил шар». Вы автоматически приписываете значение каждому слову: «бро- сил»— скорее всего понимаете как «метнул», а «шар» сразу же представляете себе как сферу, несмотря на то что большинство слов в языке имеет по нескольку значений. Например, в предложении «Боб бросил шар в его пользу» слова «бросил шар» имеют совсем другое значение. (Здесь скорее всего нет никакого шара, т. к. речь идет о голосовании в чью-то пользу.) Задача состоит в том, чтобы разработать алгоритм, который имитировал бы речевое поведение челове- ка и мог бы его объяснить. В лингвистике и теории познания на основании длительного изучения этих вопросов были созданы весьма сложные теории. Вклад ИИ в решение данной задачи состоит в разработке программ, воплощающих эти теории, которые легко проверить и использовать на практике. Как и для куба Некера, параллельные вычисления дают здесь наилучшие результаты. Как в языке, так и в зрении теория предполагает наличие нескольких уровней представления и обработки информации. На рис. 3 показаны 3 из них. После того как отдельные буквы или звуки объединены в слова, идет лексический уровень, представляющий слова так, как мы их видим в словаре. Семантический уровень дает нам перечень всех смысловых значений слов, и трудность здесь заключается, конечно, в том, чтобы найти нужное значение слова. Уровень так называемых глубинных падежей различает роли, которые 141
Рис. 3. Сетевая модель понимания предложения «Боб бросил шар (в его пользу)». Модель имеет три уровня представления и обработки информации. слова могут играть в предложении. В этом предложении употреблены следующие падежи: агент — человек или предмет, производящий действие1; объект—то, на что направлено действие; получатель — тот, для кого выполнялось действие. Основная лингвистическая идея понимания многозначных слов заключается в том, что падежные роли ограничивают разнообразие возможных значений слов, которые подходили бы в каждом конкретном предложении. Например, в сочета- нии «бросил шар» глагол не может иметь того значения, которое он имеет в предложении: «Боб бросил друга в беде». Кроме этого мы используем в модели еще и тот факт, что одни значения слова встречаются чаще, другие — реже. Теперь можно объяснить, как построена сетевая модель разрешения многозначности. Как и в случае куба Некера, сочетающиеся элементы имеют положительные связи, а несовместимые — отрицательные связи типа «победитель по- лучает все». Модель работает так, что как только слово попадает на лексический уровень, оно активизирует все значения, с которыми это слово связано. Более распростра- ненные значения будут иметь больший вес и оказывать 1 Иногда говорят даже «агентный падеж». Такие падежи, отда- ленно напоминающие именительный и другие падежи, изучаемые в школе, широко используются в современной лингвистике. Традицион- ные падежи связаны с поверхностно-синтаксической ролью существи- тельного в предложении, а новые — с более глубокими семантически- ми отношениями между существительным и совершаемым действи- ем.— Прим. ред. 142
большее влияние. Когда появляется следующее слово, акти- визируется еще больше значений и ролей. Простое предложе- ние «Боб бросил шар» активизирует только согласующиеся между собой элементы, и мы даже не заметим всех других возможностей. Но когда в сеть для анализа поступает оставшаяся часть предложения «в его пользу», она активизи- рует у слова «шар» только одно его значение — «голос при голосовании» — и уменьшает активность других значений это- го слова—«сфера» и «игрушка». Вслед за этим уменьшается активность всех значений глагола «бросить», кроме перенос- ного— «проголосовать», так как в предложении больше нет объекта, который можно бросать в прямом смысле этого слова. Таким образом, в ходе анализа развился новый вариант понимания данного предложения, вытеснив первоначальную интерпретацию. Два участка сети, представляющие два проч- тения этого предложения, напоминают два варианта ориента- ции куба Некера. Это не случайно: идея сетей коопериру- ющихся или конкурирующих элементов характерна для па- раллельных моделей. Разрешение многозначности и другие лингвистические задачи довольно хорошо разработаны для таких моделей и позволяют найти простые объяснения многим явлениям в языке. Например, легко показать на модели, как слушающий понимает по контексту, что «шар» значит «игрушка». В этом случае происходит конкуренция альтернативных вариантов, начиная с вершины «шар», что очень просто делается с помощью параллельных вычислений на сетях. Представление знаний Задачи типа ориентации куба и резрешения многозначно- сти относятся к традиционной для ИИ проблеме распознава- ния. Но в этом научном направлении немало и других проблем. Возникает вопрос: можно ли применять параллель- ные сетевые модели и для других проблем ИИ, таких, как представление знаний и автоматический логический вывод? Работы с такими моделями только начались, но есть уже пер- вые успехи. Пример работы такого рода иллюстрирует рис. 4. Обычно о представлении знаний и автоматическом логиче- ском выводе говорят в связи с программами, предназначенны- ми для ответов на вопросы пользователей. В ИИ имеется немало различных подходов к созданию вопросо-ответных систем (один из таких подходов рассматривают Р. Шенк и Л. Хантер в • статье «Познать механизмы мышления» в этом сборнике). Но все методы имеют одно обязательное условие: при построении такой системы необходимы средства для хранения информации, для понимания вопросов и для 143
формулирования ответов. В сетевых параллельных моделях такие задачи решаются методом распространения активности от одних вершин сети к другим, как это было показано в предыдущих примерах. Объяснение легче всего начать с формирования ответов на вопросы. На рис. 4 знания о некоторых продуктах питания и вкусе каждого из них объединены в сеть типа «победитель получает все». В такой сети активизировавшаяся вершина подавляет другие, приводя таким образом к единственно возможному ответу. Считается, что эта сеть ответов является частью управляющей программы, которая формирует запро- сы и работает с полученным ответом. Предполагается, что вершины, составляющие управляющую программу, активизи- руются слева направо, как в обычной программе. Эта прог- рамма посылает вопрос в сеть представления знаний, активи- зируя необходимые узлы. Например, на рис. 4 от вершины, обозначенной шестигранником со значением «из чего приго- товлено», активность передается к вершинам «иметь вкус» и «ветчина». Ключевыми в управлении сетью являются служеб- ные вершины, обозначенные треугольниками, такие, как треугольник «Ы». Служебные вершины активизируются толь- ко в том случае, когда в них одновременно поступают два входных сигнала активности. В нашем примере ему передает- 144
ся два значения активности от вершин «ветчина» и «иметь вкус», поэтому он возбуждается и активизирует вершину «соленый». После этого вершина «соленый» активизирует вершину ответа «ответ — соленая» в программе, и та уже дает ответ на вопрос. Эта же сеть может ответить на вопрос «Как называется соленое мясо?», если ее активизировать подходя- щим образом. Ответы, получаемые с помощью такой сети, зависят от контекста — так же, как и ответы людей. Контек- стная обусловленность и здесь тоже моделируется методом распространения активности. Примеры на восприятие куба, разрешение многозначности и поиск ответа на вопрос типичны для современных разрабо- ток по сетевым моделям. Приведенные нами примеры упро- щены, ибо в них опущены многие нюансы, но в целом они хорошо иллюстрируют современные достижения в этой обла- сти исследований. Программы, реализующие параллельные сетевые модели, по сложности решаемых задач пока не превосходят обычные методы ИИ. Это направление еще слишком молодо, чтобы можно было четко уяснить все его возможности и недостатки. Одно не вызывает сомнения: создание высокопараллельных компьютеров будет иметь важ- ное значение для развития сетевого подхода к ИИ. Однако если даже мы найдем параллельные алгоритмы для моделей зрительного восприятия и языка и сможем эффективно применять их на параллельных машинах, то упустим самое главное в интеллекте — способность к обуче- нию. Система, не способная пополнять свои знания и изме- нять поведение, не может называться интеллектуальной. Эта проблема важна для создания искусственного интеллекта в целом, но первостепенное значение она имеет для сетевых моделей. Если моделировать систему как некое множество правил, то принципиальных трудностей при внесении в нее новых правил не возникает, хотя при этом остается неясным, какие правила стоит вносить. Основная интеллектуальная нагрузка сетевых моделей приходится на связи, однако известно, что в мозге число связей со временем не увеличивается. Каким же образом такая система может — хотя бы в принципе — обогащаться новыми знаниями? Роль нейронов в механизмах памяти и обучении остается одним из серьезных нерешенных вопросов. Но сетевые модели обучения вполне вписываются в современные исследо- вания мозга, имея при этом вполне реалистическую вычисли- тельную основу. Основная идея здесь заключается в том, что, хотя новые связи устанавливаются редко, изменение весов связей происходит достаточно часто. Кроме того, каждая нейронная единица имеет тысячи входящих и исходящих дуг 145
связи. Наша гипотеза заключается в том, что большинство этих связей являются лишь потенциальными, а обучение усиливает и закрепляет необходимые связи1. Предположим, например, что сеть, изображенная на рис. 4, должна «вы- учить», что «шпинат— это соленый овощ». В нашей модели для этого имеются незаполненные треугольники из вершин и дуг, соединенные слабыми связями со многими комбинациями объектов, свойств и значений. В идеальном случае один из таких треугольников усилит свои связи с вершинами «шпи- нат», «имеет вкус» и «соленый» по сравнению с прочими имеющимися у него связями. Возникший активный треуголь- ник будет иметь очень высокое значение активности, получен- ное от этих трех активизировавшихся соседей, и, усиливая свои связи с ними, будет закреплен за этими вершинами. Этот пример не затрагивает многих важных теоретических вопро- сов, ибо теория обучения находится пока на примитивном уровне. В статье Дж. Хинтона «Обучение в параллельных сетях» (с. 124) описана несколько отличная от нашей схема пополнения знаний. Она основывается на допущении, что понятия представлены на сети размыто, как результат актив- ности состояний многих вершин. Однако в общем соотноси- тельные модели в искусственном интеллекте пока не получи- ли достаточной теоретической и экспериментальной разработ- ки, чем объясняется наш больший интерес к параллельным компьютерам. Параллельные компьютеры Для моделей ИИ с преимущественно параллельными вы- числениями, разумеется, наиболее подходят параллельные ЭВМ. В настоящее время главным препятствием для модели- рования параллельных процессов на последовательных маши- нах является их крайне низкое результирующее быстродей- ствие. Хотя большинство реализуемых на последователь- ных машинах программ плохо переносятся на параллельные машины, для соотносительных моделей этот переход осуще- ствляется естественно и легко. Например, мы — при наличии 100 процессоров и сети, содержащей 20 000 элементов,— можем отвести каждый процессор под 200 элементов. Остает- ся чисто техническая проблема — как разбить сеть на уча- стки, но основная идея довольно проста. Пока, правда, не совсем ясно, как управлять системой и влиять на ее поведе- ние, а это главный теоретический вопрос и в области 1 Возможность такого рода обучения в мозге человека довольно подробно рассмотрена в книге: Эндрю А. Искусственный интел- лект.— М.: Мир, 1985.— Прим. ред. 146
параллельных машин. В настоящее время во многих лаборато- риях создаются компьютеры, содержащие сотни отдельных процессоров. Наша исследовательская группа университета в Рочестере сотрудничает с фирмой «Баттерфлай мультипро- цессор» компании «Болт, Беранек и Ньюмен». Мы предпола- гаем, что летом 1985 г. у нас будет рабочая система со 128 процессорами. Параллельная версия имитатора, построенного на сетевых принципах, является основной разработкой фирмы «Баттерфлай». По-видимому, представление в виде параллельной сети — наилучший метод программирования большинства задач на многопроцессорной системе. Конечно, искусственно разби- вать задачу на 256 равных частей было бы трудно, но возможен другой подход — используя естественный паралле- лизм задачи, выразить его в явном виде, а затем с помощью компилятора перевести на любое имеющееся оборудование. Именно такой подход выработала исследовательская группа Калтеха1 для решения физических задач, и его можно, видимо, применить и для многих задач ИИ. Не исключено, что полезность такого подхода объясняется случайными обстоятельствами, но, возможно, этот успех как-то связан с тем фактом, что естественный интеллект, безусловно, разви- вался в «параллельной среде». Об авторе: Джером А. Фелдман — профессор вычислитель- ной науки университета г. Рочестера (шт. Нью-Йорк). Об- ласть его научных интересов включает языки программирова- ния, системы программирования, искусственный интеллект, алгоритмы параллельных вычислений и вычисления в биосистемах. 1 Калтех — Калифорнийский технологический институт, получив- ший широкую известность благодаря работам по экспериментальной и теоретической физике.— Прим. ред.
Перспективы нейроинженерии Джон К. Стивенс Сможем ли мы создавать эффективные интеллектуальные компьютеры «шестого поколения», используя схемы, непос- редственно копирующие структуру мозга, разрабатывая, воз- можно, радикально новую архитектуру ЭВМ, новые типы схем и программного обеспечения и совершенно новую логику? В течение последних 20 лет этот вопрос возникает по крайней мере раз в год. Ответ остается стереотипным: «Возможно, хотя это и не просто». Но по мере того, как развивается наше понимание принципов переработки инфор- мации нейронами мозга, возможность этого кажется все более реальной. Более того, некоторые новые цифровые схемы, например, такие, как «машина Больцмана» (см. статью Дж. Е. Хинтона «Обучение в параллельных сетях» в насто- ящем сборнике), по своей архитектуре в общих чертах весьма напоминают мозг. В нашей статье мы сначала кратко остановимся на том, что можно назвать физикой функциональных элементов мозга, уделяя особое внимание физическим и электрическим принципам обработки информации зрительными нервными клетками. Далее мы обсудим, как следует модифицировать кремниевые полупроводниковые приборы, чтобы для их разработки можно было использовать «нейроинженерный подход», и какое применение они могут найти в некоторых высокоскоростных системах обработки информации. Несмотря на внушительные успехи в разработке современ- ных аппаратных средств вычислительной техники, скорость, с которой функционирует сетчатка человеческого глаза, остает- ся для них недостижимой (табл. 1). В самом деле, для имитации 10 мс работы одной-единственной нервной клетки сетчатки нужно 100-кратное решение системы примерно из 500 нелинейных дифференциальных уравнений, что требует по меньшей мере нескольких минут процессорного времени Copyright © John К. Stevens 148
Таблица 1. Сравнение характеристик гипотетической видеопроцессор- ной системы на современных интегральных схемах (ИС) и характери- стик сетчатки человеческого глаза Характеристика Типичная ИС Сетчатка Компоновка схемы Толщина проводников в ИС и 2-мерная 3-мерная нейронов в сетчатке 1 — 3 мкм 0,1 —1,0 мкм Число логических ключей Разрешающая способность ~106 ~2,5 1010 (число пикселей) Толщина соединительных 2048x2048 10 000x10 000 проводников (на печатной схеме) 250 мкм 0,2—3,0 мкм Потребляемая мощность 200—300 Вт 0,001 Вт Объе*м системы ~105 см2 0,003 см3 Общий вес 20—50 кг <1 г суперкомпьютера фирмы «Крей». Если учесть, что таких клеток около 10 млн. и они сложным образом взаимодейству- ют между собой, то нетрудно видеть, что потребуется не менее 100 лет работы компьютера «Крей» для моделирования процесса, который многократно осуществляется в глазу чело- века на протяжении секунды. На каких же принципах строится работа столь впечатляющего «биотехнического устройства»? Нервные клетки Нервные клетки сетчатки работают, как сложные аналого- вые процессоры. Связи .между клетками, специфика этих связей и сама форма нервных клеток—все играет важную роль в определении основных параметров такой «программы» аналоговой обработки данных. Все разнообразие нервных клеток в зависимости от их формы и размеров можно разделить на две большие катего- рии—локальные процессоры («интернейроны») и выходные клетки. Все входы и выходы клеток локальных процессоров расположены в пределах области очень небольшого размера (обычно несколько сотен микрон), тогда как выходные клетки обеспечивают связь одной части мозга с другой, мозга с мышцами и сенсорных органов с мозгом. Нервную клетку, или нейрон, можно рассматривать как самостоятельную аналоговую процессорную ячейку. Внутрик- леточное пространство каждой клетки отделено от внешней среды плазматической мембраной. Концентрации заряженных 149
частиц (ионов) внутри клетки и во внеклеточном пространстве различны, что создает разность потенциалов на мембране. Концентрация ионов в клетке регулируется множеством «ионных насосов», находящихся в самой мембране. Ионный состав жидкости, окружающей клетку и по существу пред- ставляющей собой отфильтрованную кровь, регулируется специальными ионными насосами, обнаруженными в почках. Это различие в концентрациях ионов обеспечивает электриче- ской энергией все нервные клетки — в точной аналогии с аккумуляторной батареей. Однако для полноты эквивален- тной схемы требуется последовательно с батареей включить резистор, что позволяет учесть утечку ионов через плазмати- ческую мембрану. Активные насосы в клеточной мембране и почках аналогичны зарядному устройству для аккумуляторов, но исходным источником энергии является не напряженке 220 В бытовой электрической сети, а глюкоза и другие питательные вещества. Сома Каждая клетка наделена большим центральным телом, называемым сомой (фото VIII и IX, рис. 1), в котором действуют генетический и метаболический механизмы, необ- ходимые для поддержания жизнедеятельности клетки. Погло- щая глюкозу из окружающей клетку жидкости, сома превра- Рис. 1. Общая функциональная схема нервной клетки. щает ее в более удобный переносчик энергии — АТФ (адено- зинтрифосфат); АТФ непосредственно питает «ионные насо- сы». Сома также синтезирует липиды и белки, которые 150
используются для поддержания нормального состояния кле- точной мембраны, синапсов, вентилей, и скелета отростков нервных клеток (цитоскелета). Пассивные дендриты От сомы отходят длинные неправильной формы разветвля- ющиеся волоскообразные отростки, называемые дендритами. Диаметр дендритов обычно менее 1 мкм, и они отличаются весьма сложным характером ветвления. Дендриты в основном электрически пассивны, их можно представить как последова- тельную цепь конденсаторов и резисторов. Основная функция дендритов состоит в передаче нервных импульсов от других нервных клеток, полученных через специализированные кон- такты, называемые синапсами. Весьма существенным обсто- ятельством, которое ниже обсуждается подробнее, является то, что форма дендрита может оказывать решающее влияние на временной ход и амплитуду любого синаптиче- ского входного воздействия. Таким образом, один и тот же синаптический входной сигнал в дендритах разной формы может приводить к совершенно разным эффектам. Синапти- ческие входные сигналы, поступающие на дендрит, либо суммируются и пассивно проводятся к локальным синаптиче- ским выходам, расположенным на том же дендрите (в интернейронах), либо пассивно проводятся в сому, где у выходных нейронов может генерироваться потенциал дей- ствия. Активный аксон Исходящие из сомьГ нервные отростки другого типа называются аксонами. Аксон отличается от дендрита тем, что он электрически активен и может служить выходным каналом клетки. Аксоны всегда имеются у выходных клеток, но их часто нет у интернейронов, особенно у тех, входы и выходы которых расположены на дендритах. Аксон представ- ляет собой нелинейное пороговое устройство, генерирующее быстрый импульс повышения и уменьшения потенциала дли- тельностью примерно 1 мс. Этот импульс потенциала, называ- емый потенциалом действия, имеет фиксированную амплиту- ду и возникает, когда потенциал покоя в соме превысит критический порог. Быстрые изменения потенциала, связан- ные с потенциалом действия, обязаны своим происхождением специализированным белкам в мембране аксона, которые избирательно регулируют прохождение ионов калия и натрия через мембрану. Вентили, связанные с потенциалами дей- 151
ствия, можно представить цепочкой связанных одновибрато- ров. Анатомически вентили начинаются в соме вблизи того участка тела клетки, откуда отходит аксон. При активации синаптических входов, расположенных на дендрите клетки, потенциал может пассивно проводиться к участку сомы, лежащему вблизи аксона. Если общая сумма всех входных сигналов, поступающих в сому или аксон, превышает допу- стимый порог вентилей, то последние активируются, генери- руя потенциал действия. После того как первая группа вентилей активируется, они еще сильней изменяют внутриак- сонный потенциал, активируя таким образом следующую группу вентилей, расположенных дальше вдоль аксона. Эти вентили в свою очередь повышают потенциал аксона, активи- руя еще более удаленные вентили,— и так по всей длине аксона, составляющей более метра. Синаптические входы и выходы Аксоны заканчиваются на других нервных клетках специ- ализированными контактами, называемыми синапсами. Си- напсы обеспечивают контакты с дендритами других клеток и могут изменять локальный потенциал дендритов, повышая или понижая его. Когда потенциал на стороне аксона (преси- наптической стороне) повышен, выделяются особые химиче- ские агенты, называемые медиаторами. Объем их выделе- ния зависит от формы («волны») пресинаптического потенци- ала. Нейромедиаторы способны открывать белковые вентили, подобные тем, которые упоминались в связи с потенциалом действия; отличие состоит лишь в том, что вновь названные вентили расположены на мембране дендритов и активируются химически. Когда синаптический вентиль открыт, он избира- тельно позволяет ионам проходить через мембрану в обоих направлениях. А это в свою очередь изменяет знутридендрит- ный потенциал. Число открытых вентилей зависит от общего числа выделившихся молекул медиатора. Тот или иной конкретный синапс может вызвать возбуждение или торможе- ние клетки. Каждая нервная клетка имеет много синаптиче- ских входов на дендритах и может иметь много синаптических выходов на различные клетки на своих аксонах или дендри- тах. Выходные синапсы выходных клеток всегда находятся на конце аксона. Однако выходные синапсы интернейронов расположены на пассивных дендритах вблизи входных синап- сов. Поскольку форма потенциалов действия фиксирована, синаптические выходы аксона выходной клетки также имеют фиксированную форму. Напротив, поскольку потенциалы 152
внутри дендрита являются градуальными аналоговыми сигна- лами (из-за аналогового суммирования воздействий многих различных входов), синаптические потенциалы интернейронов также могут быть градуальными. Таким образом, выходные клетки обладают градуальным аналоговым входом с цифро- вым (по типу «все или ничего») конечным выходом; интерней- роны имеют градуальные аналоговые входы и градуальные аналоговые выходы. Методы регистрации Совершенные методы регистрации нервных импульсов с использованием особо тонких микроэлектродов, вводимых в живой мозг вблизи отдельных клеток или в культуру ткани, позволили много узнать о функциях нервных клеток, т. е. о том, что можно было бы назвать программным и аппаратным обеспечением клеток мозга. Такие микроэлектроды позволя- ют регистрировать потенциалы действия, а при проникнове- нии внутрь клетки — внутриклеточные потенциалы, возника- ющие от синапсов, активированных на периферических ден- дритах. Другие методы дали возможность измерить физиче- ские характеристики и свойства нервных клеток, отдельных частей клеток и даже свойства мембран и белков, содержа- щихся в мембранах. До недавнего времени не удавалось объединить эти физические характеристики в единую модель некоего субмикронного физического устройства или, иначе говоря, разработать принципы конструирования мозга. Как уже говорилось, форма отростков нервных клеток оказывает существенное влияние на их функции. К сожале- нию, диаметр этих отростков обычно значительно меньше 1 мкм. Основная трудность заключалась в том, что создание точной электрической или физической модели нервной клетки требует детального знания площади поверхности и длины последней, а также характера ветвления всех отростков и расположения синаптических входов. Из-за малого размера нервных клеток и их исключительно сложной пространствен- ной структуры эти параметры невозможно точно измерить с помощью оптического микроскопа, разрешающая способ- ность которого не превышает 1 мкм. Сканирующий электрон- ный микроскоп обеспечивает более высокое разрешение, но при его использовании клетки должны быть отделены от сетей, в которые они связаны в мозге, и помещены на специальную плоскую подложку или должны быть выращены в культуре прямо на такой подложке. Таким образом, сканирующий микроскоп не пригоден для анализа интактных трехмерных структур мозга. Просвечива- ющий электронный микроскоп имеет вполне достаточную для 153
этой цели разрешающую способность. Однако, чтобы рас- смотреть клетки при большом разрешении, необходимо выре- зать из клетки слой очень малой толщины — обычно меньше 0,1 мкм (фото IX). Следовательно, в то время как этот метод дает возможность различить субмикронные детали, он не позволяет исследовать пространственную структуру клетки. Выход состоит в том, чтобы рассечь препарат мозга на тонкие слои и затем с помощью специальной компьютерной системы «собрать» получаемые микроскопом отдельные сече- ния, восстановив таким образом полную трехмерную структу- ру исходного объекта (см. фото X). Успехи техники, достиг- нутые за последние годы, сделали эту задачу вполне разре- шимой, и теперь можно исследовать внутреннюю структуру клетки, определяющую ее форму и, следовательно, функции. Эквивалентные схемы Для каждого из описанных выше клеточных компонентов можно построить эквивалентную электрическую схему. Со- единив эти эквивалентные схемы с учетом субмикронной пространственной геометрии клетки, можно создать достаточ- но точную модель «процессора» нервной клетки. Ниже мы проиллюстрируем принципы, используемые нервными клетка- ми для переработки сигналов, описав электрические эквива- ленты дендритов, источников питания клетки и синаптических контактов. Мы покажем также, как форма клеточных отро- стков может изменять их входные и выходные характеристи- ки и как клеточный скелет может влиять на форму отростков. Для простоты мы ограничимся пассивными частями нервной клетки и не будем касаться электрических свойств аксона, хотя и для аксона можно построить эквивалентную электри- ческую схему. Электрические модели пассивного дендрита Дендриты клеток мозга имеют цитоскелет, который управ- ляет формой и в определенной степени характером ветвления дендритов. Ниже мы приведем данные, свидетельствующие о том, что цитоскелет существенно влияет на то, как клетка обрабатывает информацию. Дендриты обладают внешней обо- лочкой, или мембраной, состоящей из очень тонкого слоя жировых веществ, называемых фосфолипидами. Фосфолипи- ды имеют высокие удельные сопротивление и емкость, поэтому их можно рассматривать как изоляторы.' Внутри отростки нервных клеток наполнены хорошо проводящим гелем, или аксоплазмой, которую для наших целей можно 154
считать проводником. Таким образом, самая простая электри- ческая модель дендрита сводится к отрезку проводника (аксоплазмы), покрытого непроводящей оболочкой — мембраной. Нервные отростки можно при этом смоделировать электрическими эквивалентами, состоящими из цепочки чере- дующихся пассивных сопротивлений и емкостей. Простая модель части дендрита показана на рис. 2. Под моделью изображена эквивалентная схема модели, состоящая из Эквивалентная электрическая схема г, = длина • (R;*/ площадь поперечного сечения) rm= Rm / площадь поверхности цилиндра cm=Cm • площадь поверхности цилиндра Rj= 75 Ом’см2 Rm= 2000 0м«см2 Сщ= 1 мкф/см2 Рис. 2. Электрическая эквивалентная схема дендрита. Диаметр сегмента ден- дрита около 0,1 мкм. резисторов и конденсаторов. Сопротивление гт соответствует сопротивлению утечки Мембраны, а сопротивление i'i— сопротивлению аксоплазмы. И наконец, ст—емкостный ком- понент мембраны. Эти величины рассчитаны исходя из удельных сопротивлений, измеренных экспериментально для разных типов клеток, а также на основе детального изуче- ния геометрии самой клетки. Вычисления во многом анало- гичны тем, которые выполняются при расчетах сопротивле- ний и емкостей в интегральной схеме. Расчетчикам микро- схем известны удельные сопротивления поликремния, крем- 155
ния и металлических слоев. Зная геометрию подложки, они могут рассчитать общее сопротивление и емкость схемы. Удельная емкость фосфолипидов, основной составляющей дендритной мембраны, равна примерно 1 мкф/см2. Таким образом, для нахождения емкостных элементов эквивален- тной схемы мы измеряем площадь поверхности маленького участка дендрита и множим ее на удельную емкость. Ден- дритный участок, изображенный на рис. 2, имеет общую емкость 1,57х 10 “9 мкф, сопротивление мембраны 1,27x1012 Ом и продольное сопротивление 9,55х104 Ом. Схема электрического питания нервной клетки Источник питания в клетке может быть представлен как набор параллельно включенных э.д.с. с резисторами (рис. 3). Рис. 3. Электрическая эквивалентная схема источника энергии нервной клет- ки. Различия в значениях потенциалов, указанных на схеме и в тексте, отража- ют естественные диапазоны потенци- алов клетки. Каждая э.д.с. соответствует градиенту концентрации того или иного иона на мембране. Величина э.д.с. батареи для каждого иона определяется уравнением .Нерста: э.д.с. (мВ)=61 lg(CBHyTp /Свнешн.)- Концентрация положительно заря- 156
женного иона Na+ снаружи клетки выше, чем внутри, в соотношении примерно 10:1. Следовательно, потенциал равно- весия равен 61 мВ. Другие типичные ионы плазмы крови— К + с потенциалом около —90 мВ (знак минус обусловлен тем, что концентрация К+ внутри клетки больше) и С1" с потенциалом —87 мВ. Последовательно включенные резисто- ры (см. рис. 3) отражают в модели утечку этих ионов через мембрану, определяющую первоначальный уровень зарядки конденсатора. С помощью специальных методов регистрации можно определить величину каждого из сопро- тивлений утечки. После того как это проделано, нетрудно вычислить разность потенциалов на мембране: она составляет около -87 мВ. Рис. 4. Электрическая эквивалентная схема синаптического ключа. В наших моделях нервных клеток мы использу- ем условную батарею с напряжением 100 мВ. Поскольку этот «потенциал покоя» сравнительно посто- янен во всех частях клетки, он обычно в явном виде не учитывается в моделях или вычислениях. Однако принцип использования ионных градиентов и сопротивления мембраны для создания разности потенциалов важен, и ниже он будет использован для описания синапсов. Синапсы, или межнейронные вентили Синаптические входы можно представить себе как управ- ляемые потенциалом воздействия на мембранный резистор, 157
соединенный с ионной батареей. В некоторых случаях бата- рея может вызывать чисто возбуждающие изменения в дендритах, а в других — торможение клетки. На рис. 4 пока- зана схема синапса, расположенного на дендрите. Когда потенциал внутри синапса возрастает, выделяются нейромеди- аторы, которые избирательно (в зависимости от их химиче- ского строения) изменяют проводимость одного или нескольких ионов. В результате нейромедиаторы изменяют сопротивление резистора, связанного с ионной батареей, что в свою очередь ведет к изменению потенциала покоя клетки. Типичное «нейронное реле» может иметь сопротивление 5-1012 Ом в покое и 5-108 Ом при активации. Важно отметить, что синаптический вход нельзя модели- ровать простой подачей потенциала на дендрит или простой подачей тока. Говоря более точно, он соответствует измене- нию импеданса комплексной пассивной RC (резистивно- емкостной)-цепи. Окончательная форма изменения потенциала в клетке, таким образом, не является функцией только синаптических батарей и резисторов, а зависит также от сопротивления мембраны (гт), продольного сопротивления (г,) и емкости мембраны (ст). Поскольку эти компоненты в какой-то степени определяются формой клетки, сама геомет- рия клетки может быть использована для управления силой воздействия синапса. Этот принцип иллюстрируется ниже. Электрическая схема амакринной клетки сетчатки На фото XI представлено изображение амакринной клетки сетчатки, восстановленное компьютером по серии электрон- ных микрографий. Амакринная клетка особенно интересна своей сложной структурой, которая включает прикрепленные к соме дендриты весьма неправильной формы и с узелковыми расширениями. Это классический тип интернейрона с боль- шим числом синаптических входов и выходов, распределен- ных по всей поверхности клетки, и лишенный аксона. После вычисления площади поверхности и объемов клетка упрощается до простой геометрической схемы, представля- ющей исходную форму в виде цилиндров, наподобие тех, что можно усмотреть на фото XI. Далее эту геометрическую схему можно легко свести к эквивалентной электрической схеме путем использования мембранных и аксиальных сопро- тивлений и мембранной емкости для создания большой «лестничной» RC-цепи, подобной той, что изображена на рис. 5. Эту схему можно моделировать с помощью стандар- тных методов анализа линейных цепей почти на любом малом компьютере (см. журнал Byte за октябрь 1978). В нашей модели клетки, показанной на фото XI, использо- 158
Рис. 5. Объединив схемы, изображенные на рис. 2—4, мы получим общую электрическую модель нервной клетки. вались два идентичных синапса на разных частях клетки (А и В на фото XII). В модель не включены ионные батареи и резисторы потенциала покоя, поскольку в этой схеме они везде одинаковы. Синаптический вход состоял из резистора и батареи на 100 мВ, как показано на рис. 4. Синаптический сигнал моделировался быстрым (в течение 50 мс) уменьшени- ем синаптического сопротивления, после чего его величина восстанавливалась до очень высокого уровня покоя. В нижней части фото XII показано максимальное значение этого отве- та внутри клетки в соответствующих точках. Каждая кривая представляет максимум потенциала вдоль клетки при актива- ции синапса. Поскольку данная клетка является интернейроном, у нее нет аксона (amacrine означает «без аксона») и нет потенциала действия. Она имеет, однако, много синаптических выходов к соседним клеткам, два из которых показаны на фото XII большими стрелками, выходящими из нейрона. Имейте в виду, что синаптические входные сигналы в точках А и В идентичны, но их воздействие на внутриклеточный потенци- ал, определяющий выход вблизи А и В, очень различно. Вход В оказывает гораздо большее влияние на выход А, чем вход А—на выход В. Таким образом, в то время как синапс В может активировать выходы А и В, синапс А может активировать только выход А. Эта простая логическая функция была образована самой геометрией нервной клетки. Легко вообразить другие эффек- ты, возникающие при одновременной активации синапсов на больших участках дендритов. Таким образом, аналогово- 159
логическая функция, реализуемая нервной клеткой, может управляться геометрией клетки. Можно предположить, что манипулирование формой клетки позволяет управлять логиче- скими функциями в мозге. Можно ли использовать схемотехнику мозга для построения кремниевых микросхем? Все эти результаты порождают весьма интригующий вопрос: «А нельзя ли использовать этот простой способ изменения трехмерной геометрии применительно к кремни- евым схемам, которые могли бы имитировать схемы мозга?» Можно, причем очень просто. Джек Килби из фирмы «Тексас инструменте», исследова- ния которого привели к созданию первых интегральных схем 25 лет назад, показал, что управлять многими важными пассивными параметрами кремниевых схем можно, изменяя размеры и форму протравленной зоны. В то время как величины сопротивлений и емкостей микросхем на несколько порядков отличаются от соответствующих констант мозга, интересно отметить, что схемы на рис. 2 и 5 эквивалентны схемам, моделирующим связи в кремниевых микросхемах. Уравнения и программное обеспечение для имитации нервной клетки по приведенной выше схеме почти идентичны програм- мному обеспечению, используемому для моделирования пол- ной интегральной схемы в процессе конструирования. Проекты, направленные на создание «кремниевых нейро- нов», называемых силикронами, находятся в начальной ста- дии реализации. Общая идея состоит в том, что форма нейрона просто вытравливается в кремнии вместо использу- емых сейчас моделей линейных электрических цепей. Вентили помещаются в тех участках, где могут располагаться синапти- ческие входы и выходы; в случае выходных силикронов можно имитировать аксон простым триггером Шмитта или ждущим мультивибратором. К сожалению, силикроны останутся лабораторной дико- винкой до тех пор, пока не будет решена важнейшая проблема: как создавать новые программы? Не существует простого способа изменять или модифицировать силу связей между кремниевыми элементами. И пока у исследователей не будет ясного понимания того, как мозг модифицирует свои схемы (физика обучения), любые решения, основанные на кремниевых схемах, будут небиологичными. Нынешние обна- деживающие результаты биологических исследований показы- вают, что в некоторых клетках активные изменения формы дендритов могут приводить к изменениям синаптической 160
активности. Однако пройдет еще немало времени, прежде чем нам удастся полностью разобраться, вероятно, в самом впечатляющем свойстве нейронных сетей: их способности к самопрограммированию. А тем временем мы, бесспорно, можем создавать нейроноподобные устройства с заранее определенной функцией, например, такие, как видеопроцессо- ры с использованием ПЗС (приборов с зарядовой связью). И уж тем более много времени потребуется, чтобы мы могли создать то, что с полным основанием можно было бы назвать компьютером шестого поколения, основанным на нейрологи- ческих моделях. Об авторе: Джон К. Стивенс — ассистент профессора физиологии и биоинженерии факультета нейрофизиологии Торонтского университета. Он также является совладельцем фирмы Telepanel, разрабатывающей аппаратные средства и математическое обеспечение для предприятий розничной тор- говли. Дж. Стивенс — сотрудник канадского Института пер- спективных исследований. 1. Kuffler S. W., Nicholls J. From Neuron to Brain.— Sunderland (Ma): Simnauor Associates Inc., 1976. [Русский перевод: Куффлер С. В., Николс Дж. От нейрона к мозгу.— М.: Мир, 1978.] 2. Mead С., Conway L. Introduction to VLSI System.— Reading (Ma): Addison-Wesley, 1980. 3. Stevens J., Trogadis J. Computer-Asisted Reconstruction from Serial Electron Micrographs. In: Advances in Cellular Neurobiology, vol. 5, pp. 341-369 (Ed. S. Fedoroff).— Orlando (Fl): Academic Press, 1980. 7—2596
Экспертные системы Роберт X. Майклсен, Доналд Мичи, Альбер Буланже Цель данной статьи — в общих чертах ознакомить читате- лей с экспертными системами. Прежде всего мы дадим определение самой концепции таких систем, затем обсудим методы их создания, обратив внимание на достоинства и недостатки каждого из них, и наконец рассмотрим, какие средства вычислительной техники необходимы для организа- ции и успешной эксплуатации экспертных систем. Что такое экспертные системы Экспертные системы относятся к категории машинных программ, которые способны выполнять самые разнообраз- ные функции, а именно: консультировать и давать советы, анализировать и классифицировать, обучаться и обучать, проводить поиск, обмениваться информацией, представляя ее в требуемой форме, идентифицировать и интерпретировать, осуществлять диагностику и тестирование, а также состав- лять проекты, объяснять, исследовать, прогнозировать, выра- батывать концепции, обосновывать, контролировать, планиро- вать и составлять «расписания». Они призваны решать те задачи, где, как принято считать, невозможно обойтись без эксперта-человека. В настоящее время существует ряд подоб- ных систем, достигших такого уровня «квалификации», что их можно считать настоящими экспертами в тех областях, на которые они ориентированы [6]. Как правило, экспертные системы создаются при участии специалистов, которые разъясняют ход своих мыслей в процессе решения конкретных задач. Если такой скрупулез- ный анализ последовательности действий эксперта удается провести, то составленная по его результатам машинная программа сможет не хуже, чем эксперт-человек, решать Перепечатано с разрешения журнала Byte, апрель 1985 г. Copyright ©by McGraw-Hill, Inc., New York 10020. Все права сохраняются. 162
задачи, сформулированные достаточно строго. (Примеры успешно действующих экспертных систем приводятся в рабо- те [2].) Специалистам обычно приходится решать плохо опреде- ленные задачи, для которых характерно отсутствие четкой внутренней структуры, причем обычно это происходит в ситуации, когда ведется планирование или диагностика. Что- бы преодолеть подобную неорганизованность задачи, специ- алисты используют эвристики — эмпирические правила, кото- рые применяются людьми в тех случаях, когда нехватка времени или нечеткое понимание сути проблемы делает невозможным анализ всех имеющихся параметров. Подобным же образом экспертные системы пользуются для решения задач запрограммированными эвристическими алгоритмами. Ниже приведен пример сложной эвристики, на которой основана экспертная система TAXADVISOR, дающая реко- мендации по оптимальному распоряжению имуществом [17]. Одно из правил системы TAXADVISOR Правило 216 (Это правило, определяющее права клиентов, позволяет в каждом конкретном случае определять, следует ли рекомендовать передачу их ценного имущества в краткосрочное доверительное управление.) Если: 1) клиент настаивает на передаче права пользования доходами от собственности другому лицу — с выполнением всех сопутству- ющих процедур—на срок не менее 10 лет или же вплоть до смерти доверенного лица; 2) клиент настаивает на том, чтобы предусматривалась возмож- ность восстановления прав на эту собственность при определен- ных условиях (например, в случае выхода на пенсию, продажи имущества и т. д.); 3) клиент относится к категории населения с более высокими доходами, чем у доверенного лица; 4) клиент отказывается от права контролировать использование доходов доверенным лицом; 5) клиент в состоянии удовлетворять свои жизненные потребности, не пользуясь этими доходами, даже при условии потери трудо- способности или работы; 6) клиент не будет пользоваться доходами от имущества, управля- емого доверенным лицом, для выплаты взносов по страхованию своей жизни, не имея на то согласия контрагента; 7) клиент не предполагает использовать доверительное управление для получения доходов; 8) А: клиент, имея на иждивении некое лицо (например, одного из своих родителей), содержит его на доходы от рассматрива- емой собственности, причем это не вменяется ему в законную обязанность (в случае оформления соглашения о доверитель- 7* 163
ном управлении клиент потеряет право на льготы, связанные с содержанием иждивенца); В: клиент будет использовать доходы от рассматриваемой соб- ственности для оплаты обучения совершеннолетнего сына (дочери) в колледже (клиент может вначале выделить соот- ветствующие средства в своего рода фонд, а затем накапли- вать доходы от них, пользуясь налоговыми льготами); С: клиент отчисляет часть своих доходов (после уплаты налогов) в пользу другого налогоплательщика, например сына (дочери) при вступлении последнего в брак и (или) приобретении им жилья и т. д. То: клиенту, безусловно (степень определенности равна 1), следует ПЕРЕДАТЬ СВОЕ ИМУЩЕСТВО В КРАТКОСРОЧНОЕ ДОВЕРИ- ТЕЛЬНОЕ УПРАВЛЕНИЕ. В процессе решения задачи экспертам приходится выпол- нять ряд действий. Например, было установлено, что система MYCIN (рис. 1) осуществляет следующие процедуры такого рода: уясняет суть задачи; обрабатывает данные; подготавли- вает вопросы; накапливает информацию; формирует «про- странство» гипотез; группирует гипотезы, дифференцируя их в соответствии с определенными критериями; выделяет кон- кретную гипотезу и проверяет ее выполнимость; проводит исследование и вносит уточнения; задает вопросы общего характера и, наконец, принимает решение [11]. А каковы возможности специалиста-человека? Он может: 1. Применять свои знания и опыт для оптимального решения задач; делать достоверные выводы и умозаключе- ния, исходя из неполных или ненадежных данных. 2. Объяснять и обосновывать свои действия. 3. Общаться с другими экспертами и приобретать новые знания. 4. Заново систематизировать свои знания. 5. «Нарушать» правила. В его распоряжении практически столько же исключений из правил, сколько и самих правил. Эксперт разбирается в правилах не только по их форме, но и по содержанию. 6. Определять степень своей компетентности в каждом конкретном случае. Он представляет себе, какие задачи выходят из сферы его компетенции и в каких случаях следует обращаться за консультацией к другим источникам. 7. Плавное снижение уровня компетентности. Если про- цесс решения какой-либо задачи, лежащей «на стыке» разных областей, не укладывается в рамки профессионального опыта эксперта, то его недостаточная компетентность проявляется не во внезапном отказе от принятия решения, а в постепенном ухудшении его' качества [4]. Современные экспертные системы способны в полной 164
Консультация _Постановка диагноза. Идентификация задачи Анализ 'расхождений Сбор информации Принятие решения \ Обработка Подготовка данных вопросов Формирование Подготовка пространства вопросов гипотез Обработка объективных данных Обработка конкретного Объединение Исследование Исследование элемента данных и дифференциа- и уточнение и уточнение (мигрень) ция В2 Проверка Проверка гипотезы гипотезы (инфекционное (менин гит) заболевание) В 4 Обработка данных Отработка гипотезы (вирусное заболевание) Обработка конкретного элемента данных (лихорадка) Проверка гипотезы (вирусное заболевание) В 9 В10 Выдача вопросов общего характера В17 В5 В6 Рис. 1. Иерархия алгоритма решения задач с помощью системы MYCIN. Номера В2, ВЗ и т. д. относятся к вопросам, задаваемым в ходе консультации. Сплошные линии соответствуют действительно выполненным заданиям, а пунктирные—тем заданиям, которые, предположительно, могут быть выполнены [11]. мере имитировать лишь первые три из перечисленных воз- можностей специалиста; более того, процесс построения объяснений и накопления знаний только начал изучаться. Подобно специалисту-человеку, экспертные системы поль- зуются как «глубинными», так и поверхностными представле- ниями знаний. К глубинйым представлениям относятся при- чинные модели, категории, абстракции и аналогии. В них мы стараемся отобразить понимание структуры и назначение конкретных знаний. Поверхностные представления — это за- частую просто эмпирические ассоциации (взаимосвязи), одна- ко иногда такие представления являются «сжатой» формой субъективного понимания структуры и назначения конкретных знаний. В указанных ассоциациях взаимосвязь между исход- ными посылками и выводами, сделанными по определенным правилам, устанавливается исходя из эмпирического анализа 165
ранее возникших ассоциаций. Причинность скорее подразуме- вается, а не заложена явно в структуре правила. При использовании глубинных представлений экспертные системы обладают большими возможностями трактовки зна- ний. Система, основанная на поверхностных представлениях, «осознает» только наличие эмпирической ассоциации — она не может объяснить причинную связь, а лишь воспроизводит такую ассоциацию. При более фундаментальном проникнове- нии в суть рассматриваемого явления глубинное представление позволяет экспертной системе подготавливать ответы, точнее отражающие существо дела. Если в процессе накопления знаний используется механизм машинной индукции, то модель, служащая для понимания явлений в конкретной области (глубинное представление), нередко позволяет выводить прави- ла из примеров путем выработки обоснованных гипотез, регистрируя совпадения в анализируемых данных. Не исключе- но, что глубинное представление ускорит внедрение в экспертные системы остальных четырех из перечисленных выше возможностей эксперта-человека. В этом отношении от поверхностных представлений не приходится многого ожидать. Однако они обладают определенными преимуществами, если для пользователя важны лишь процесс решения задач, эмпирические ассоциации или сжатая форма понимания ситу- ации. Подобные представления, по всей вероятности, дешевле в реализации, чем причинные модели. Отличаясь более низкой стоимостью реализации, поверхностные представления тем не менее способны обеспечить приемлемое качество объяснений, а также некую, пусть примитивную, форму накопления знаний. Если опыт специалистов, работающих в определенной области, основан на эмпирических ассоциациях, что, в частности, характерно для многих отраслей медицины, то возможны только поверхностные представления [4]. Наилучший подход к созданию экспертных систем состо- ит, по-видимому, в использовании глубинных представлений там, где это экономически обосновано, и поверхностных представлений — во всех остальных случаях. Такая методика уже рассматривалась в работе Харта [12] и реализована в системе Digitalis Advisor, которая дает рекомендации по дозировке препаратов наперстянки для пациентов, страда- ющих сердечными заболеваниями [29]. Организация экспертных систем Экспертная система способна принимать решения не хуже специалиста-человека главным образом потому, что в ее структуре отлажено, каким образом специалист организует свои знания об объекте исследований и делает из них 166
выводы. Такая система опирается в своей работе на базу неточных знаний, полученных на основе субъективных суж- дений; причем в случае поверхностных представлений эти знания формируются в соответствии с условными правилами типа ЕСЛИ... ТО, а при глубинном представлении формой знаний являются фреймы и семантические сети. Знания из той или иной области «обрабатываются» с помощью строго определенной последовательности дедуктивных выводов, а обращение к ним осуществляется путем сопоставления с образцами. Вот как это производится, например, в системе TAXADVISOR. Пример процедуры сопоставления с образцами, которая выполняется в системе TAXADVISOR с целью определения, следует ли оформлять клиенту соглашение о краткосрочном доверительном управлении. В столбце «Предварительно заданное значение» приведен образец значений атрибутов, который должен быть в распоряжении клиента, прежде чем система даст ему соответствующие рекомендации Необходимые атрибуты для выдачи рекомендаций Предварит, заданное значение Ответ клиента 1. Желает ли клиент передать право пользования доходами от соб- ственности другому лицу на срок не менее 10 лет или же вплоть до смерти доверенного лица? Да 2. Желает ли клиент иметь возмож- ность восстановить права на эту собственность при определенных условиях? Да 3. Относится ли клиент к категории населения с более высокими до- ходами, чем у доверенного ли- ца? Да 4. Желает ли клиент отказаться от права на пользование доходами от собственности? Да 5. В состоянии ли клиент удовлет- ворять свои жизненные потребно- сти, не используя эти доходы даже при условии потери трудо- способности или работы? Да 6. Будет ли клиент пользоваться до- ходами от имущества, находяще- гося в доверительном управле- нии, для выплаты взносов по страхованию своей жизни, если на это нет согласия контраген- та? Нет Да Да Да Да Да Нет 167
7. Планирует ли клиент использо- вать доверительное управление для получения доходов от арен- дованного имущества? Нет Нет 8. Содержит ли клиент на иждиве- нии какое-либо лицо? Да Да Поскольку ответы клиента совпадают с предварительно заданным образцом, рекомендуется оформить соглашение о доверительном управлении. Как правило, в оценках экспертов присутствует некоторая доля неопределенности, поэтому и экспертные системы долж- ны допускать, чтобы выводы делались с «неполной уверенно- стью». Ниже иллюстрируется, как система TAX ADVISOR справляется с неопределенностью в ходе консультаций. (До- полнительные сведения о различных способах учета неопре- деленности содержатся в работе [32].) Фрагмент диалоговой консультации, проводимой с помощью системы TAXADVISOR. Оформление соглашения о временной передаче имущества в довери- тельное управление 1. Желает ли клиент передать право пользования доходами от собственности другому лицу на срок не менее 10 лет или же вплоть до смерти доверенного лица? — ДА* 2. Желает ли клиент иметь возможность восстановления прав на эту собственность при определенных условиях? - ДА 3. Относится ли клиент к категории населения с более высокими доходами, чем у доверенного лица? - ДА 4. Желает ли клиент отказаться от права на пользование доходами от собственности? — ПОЧЕМУ Этот диалог поможет выяснить, следует ли клиенту оформлять соглашение о временной передаче имущества в доверительное управ- ление. Теперь установлено, что: 1) клиент желает передать право пользования доходами от собственности другому лицу на срок не менее 10 лет или же вплоть до смерти доверенного лица; 2) желает иметь возможность восстановления прав на эту соб- ственность при определенных условиях; 3) относится к категории населения с более высокими доходами, чем у доверенного лица. * Прописными буквами даны ответы пользователя. 168
Поэтому, если 1) клиент желает отказаться от права на пользование доходами от собственности; 2) в состоянии удовлетворять свои жизненные потребности, не используя эти доходы даже при условии потери трудоспособ- ности и работы; 3) не будет пользоваться доходами от имущества, находящегося в доверительном управлении, для выплаты взносов по страхо- ванию своей жизни, если на это нет согласия контрагента; 4) не планирует использовать доверительное управление для получения доходов от арендованного имущества; 5) А: содержит некое лицо (например, одного из родителей) на доходы от рассматриваемой собственности, причем это не вменяется ему в законную обязанность; В: будет использовать доходы от рассматриваемой собственно- сти для оплаты обучения совершеннолетнего сына (дочери) в колледже: С: отчисляет часть своих доходов после уплаты налогов в пользу другого налогоплательщика, то клиенту следует оформить соглашение о временной передаче имущества в доверительное управление (возврат к вопросу 4...) - ДА 5. В состоянии ли клиент удовлетворять свои жизненные потребно- сти, не используя рассматриваемые доходы даже при условии потери трудоспособности или работы? — ДА (8) [В любом случае, когда пользователь системы отвечает с неполной уверенностью, он вводит некоторое число, от 1 до 9, соответствующее степени определенности его ответа.] 6. Будет ли клиент пользоваться доходами от имущества, находяще- гося в доверительном управлении, для выплаты взносов по страхова- нию своей жизни, если на это нет согласия контрагента? — НЕТ 7. Планирует ли клиент использовать доверительное управление для получения доходов от арендованного имущества? — НЕТ 8. Содержит ли клиент добровольно какое-либо лицо (на свои средства)? -ДА Клиенту рекомендуется оформить соглашение о краткосрочном дове- рительном управлении. [Система дает эту рекомендацию со степенью определенности 0,8. Такой коэффициент определенности (КО) вычислялся следующим образом. КО той Части правила (по оформлению соглашения о временном доверительном управлении), которая относится к дей- ствию, был равен 1,0, причем посылкой действия была логическая связка «И». В данном случае в качестве КО такого правила выбирается наименьшее из чисел, содержавшихся в ответах клиента, 8—2596 169
т. е. 0,8. Пороговый КО системы TAXADVISOR равен 0,2, поэтому рекомендация была выдана с полным основанием.] Машинная программа, предназначенная для создания эк- спертной системы, не должна опираться на алгоритмы управ- ления и использования данных, имеющие строго фиксирован- ную структуру, поскольку в таком случае она неадекватно имитировала бы реакцию человека на сложную, быстро меняющуюся и незнакомую обстановку. Подобная программа на каждом этапе процесса принятия решений обязана анали- зировать окружающие условия и соответствующим образом реагировать на непрерывные новые внешние воздействия. Для работы в таких постоянно изменяющихся условиях была создана программа, которая представляет собой слабо упоря- доченную совокупность модулей принятия решений по образ- цам (МРО). Идентифицируя возникающие ситуации, модули предпринимают необходимые действия [31]. Примером МРО является правило 216, используемое в системе TAXADVISOR (см. с. 163—164). Каждый МРО анализирует и модифицирует информацион- ные структуры, отображающие важнейшие компоненты и характеристики внешней «среды». В системе TAXADVISOR такая среда формируется на основе знания конкретного имущественного положения и целей клиента. МРО необходи- мо составлять в виде одиночного независимого программного блока, имеющего самостоятельное значение в рамках задач, решаемых программой. Это позволяет наращивать и отлажи- вать программу ступенями (поскольку пересмотр структуры одного МРО никак не отражается на состоянии остальных модулей) и, кроме того, наделяет ее способностью давать пояснения: используя МРО, система может трактовать дава- емую ею рекомендацию. Любая система, состоящая из ряда МРО, одной или нескольких структур данных, к которым МРО может обра- щаться и которые можно модифицировать с помощью МРО, и исполнительной программы (диспетчера), управляющей рабо- той всей системы, называется системой логических выводов по образцам (СВО). По существу СВО разбивает сложные задачи на легко управляемые и в значительной степени самостоятельные подзадачи. Поверхностные представления Так называемые системы, основанные на правилах (СОП), первоначально применялись для моделирования процессов восприятия, связанных с кратковременной памятью человека. Поэтому представлялось вполне естественным, что СОП 170
будут также использовать и при разработке экспертных систем, назначение которых — имитировать поведение людей. На сегодняшний день СОП — это, несомненно, наиболее рас- пространенная архитектура экспертных систем. Разработан и успешно эксплуатируется целый ряд экспертных систем типа СОП, среди которых можно отметить следующие: MYCIN— осуществляет диагностику инфекционных забо- леваний [26]; HEURISTIC DENDRAL — идентифицирует органические соединения [8]; PROSPECTOR — оказывает помощь геологам в оценке месторождений полезных ископаемых [5]; PUFF—анализирует результаты функциональных тестов работы легких человека [15]; INTERNIST—ставит терапевтические диагнозы [22]; XCON (прежнее название R1) — осуществляет выбор кон- фигурации вычислительных систем VAX-11/780 [16]; SACON—дает инженерам рекомендации по проведению структурного анализа [1]. Было создано несколько систем широкого применения, которые существенно упростили организацию экспертных систем, построенных на правилах и предназначенных для конкретных областей. Назовем некоторые из них: EMYCIN [30], AGE [21], OPS5 [16], ADVISE [18], Hearsay-3 [7], AL/X [23], EXPERT-EASE (фирма «Хьюмен эдж софту эр», Пало- Альто, шт. Калифорния), KS 300 (модифицированный вариант системы EMYCIN; фирма «Текноледж», Пало-Альто), KES (фирма «Интеллидженетикс», Пало-Альто), Personal Consul- tant (Персональный консультант; фирма «Тексас Инстру- менте», Даллас, шт. Техас). Система, основанная на правилах, состоит из МРО, которые собственно и называются правилами. Каждое прави- ло состоит из двух частей: левой («посылки» — комбинации высказываний о содержимом базы данных) и самостоятель- ной правой («следствия» — совокупности действий). В СОП операции анализа данных, выполняемые посредством левой части, отделены от процедур их модификации, которые осуществляются правой частью правила. Большинство СОП — это системы порождающих правил (СПП), где процедуры сопоставления с образцами и подготов- ки расписания заложены непосредственно в логике функци- онирования исполнительной (управляющей) программы. Такой алгоритм управления можно представить в виде четырех основных составляющих. 1. Выбор: выбираются правила й элементы данных, отно- сящиеся к рассматриваемому случаю. Выбор бывает либо тривиальным- (в частности, если в каждом цикле могут 8* 171
рассматриваться все правила и элементы данных), либо весьма сложным (например, когда есть возможность разрабо- тать специальные процедуры фильтрации, позволяющие ис- ключить из рассмотрения те правила, которые, как может оказаться, «не подходят» для обработки текущих данных). В системе TAXADVISOR правила образуют иерархическую структуру, в результате чего на каждой ступени рассматрива- ется ограниченное их число. 2. Сопоставление: действующие правила «примеряются» к активным элементам данных с целью нахождения подходя- щих образцов, т. е. правил, для которых удовлетворяются условия выполнения. (Пример процедуры сопоставления с образцами приведен на с. 167—168.) 3. Подготовка «расписания»: принимается решение, какие из правил, условия выполнения которых удовлетворяются, следует «запустить». Процесс «запуска» состоит из выборки и выполнения процедур, связанных с теми элементами образ- цов, которые сопоставимы с текущими данными. Если удов- летворяются условия более чем одного правила, то для принятия решения о том, какое из них нужно «запустить», применяются эвристические алгоритмы разрешения кон- фликтных ситуаций. 4. Выполнение: запускаются правила, выбранные на этапе подготовки расписания. В результате выполнения модифици- руются элементы или структуры данных. В системе TAX AD- VISOR процесс выполнения приводит к выдаче рекомендаций клиенту относительно оптимального планирования доходов от имущества (см. с. 168—170) [31]. СПП — это системы, управляемые либо посылками, либо следствиями. В системе, управляемой следствиями, т. е. действующей в соответствии с обратной цепочкой рассужде- ний (именно по такому принципу составлена программа TAXADVISOR), следствия правил, представляющие конечные цели, направляют “процесс поиска тех правил, которые необ- ходимо запустить (в системе TAXADVISOR это соответствует поиску рекомендуемых действий по оптимальному использо- ванию доходов от имущества). Такая система выбирает правила, способные привести к достижению рассматриваемой цели, и пытается соблюсти следствия тех правил, которые обычно выражают значения переменных, используемых в процессе решения. Для нахождения значений этих перемен- ных необходимо отыскать значения исходных посылок таких правил. Чтобы удовлетворить условиям каждой посылки, представляющей определенную подцель, система' собирает предшествующие правила, следствия которых согласуются со значением Данной посылки. Такой процесс «обратного про- хождения правил» — от следствий к посылкам и снова к 172
следствиям (предыдущих правил)—для нахождения последо- вательности причинных связей, которая приводит к достиже- нию поставленной цели, называется обратной цепочкой рас- суждений1. В системах, управляемых посылками (т. е. действующих согласно прямой цепочке рассуждений), процесс выполнения программы представляет собой просто непрерывную последо- вательность циклов, заканчивающуюся в тот момент, когда часть правила, относящаяся к действию, предписывает оста- нов процесса. В каждом цикле система просматривает посыл- ки и выявляет правила, посылкам которых удовлетворяет содержимое имеющейся базы данных. Если таких правил несколько, то с помощью стратегии разрешения конфликтных ситуаций выбирается одно из них. После этого выполняется полный набор действий, связанных с выбранным правилом, и вносятся соответствующие изменения в базу данных. К примеру, при работе с системой R1 (XCON) в базу данных закладывается вся информация, относящаяся к решаемой задаче, после чего система, используя необходимые правила, проводит рассуждения в прямом направлении — от исходных данных к заключениям. Таким образом, построение прямой цепочки рассуждений сводится к организации очереди из правил с последующим выполнением для них цикла типа «распознавание—действие». В некоторых системах с прямой цепочкой рассуждений предпринимается попытка управления поиском нужных пра- вил в течение цикла распознавания, что достигается путем объединения правил в «пакеты». Эти концептуальные сово- купности правил весьма удобны для"пользователя, поскольку в каждой из них сгруппированы правила, ориентированные на конкретный раздел проблемы. Для организации совокупно- стей правил можно также применять принцип объектно- ориентированного программирования. При таком подходе задается характер «поведения» объектов, что позволяет рас- пределить управление правилами между правилами, пакетами правил и объектами из области приложения. Эта методика, используемая, например, в системе широкого применения LOOPS [27], дает возможность в течение одного «сеанса» решать подзадачи одинакового типа с помощью нескольких частных вариантов одного и того же набора правил. Главное различие между обратной и прямой цепочками рассуждений заключается в том, что в первом случае взаимо- 1 Пример несложной программы на языке Бейсик, реализующей подобную процедуру, приведен в статье: Duda R. О., Gaschnig J. G. Knowledge-Based Expert Systems Come of Age, Byte, Sept., 1981, p. 238. 173
ОТДЕЛЬНОЕ ДЕУХВХОДОВОЕ УСТРОЙСТВО Для регулировки: «открыть впускной клапан «открыть выпускной клапан Для запуска: 1 Открыть всасывающий клапан 2 Запустить двигатель З.Открыть нагнетательный клапан Рис. 2. Этот пример взят из программы «Стимер», предназначенной для обучения принципам эксплуатации судовых паровых машин. Последовательность операций получена на основании рассмотрения элементарных компонентов и абстракций анализируемого объекта — в данном случае основного конденсатного насоса. увязывание правил происходит как бы «сверху вниз» (т. е. от результата к посылкам). Хотя эти два подхода получили наибольшее распространение, существуют и другие управля- ющие алгоритмы для систем, основанных на правилах. Напри- мер, в системе PROSPECTOR [5] правила представляются в виде сети «логических выводов». Глубинные представления При использовании алгоритмов на основе фреймов и сетей становятся возможными «более глубокие» рассуждения, в частности абстракции и аналогии. Абстракции и аналогии — важнейшие «инструменты» в деятельности,специалиста. Они позволяют, кроме того, описывать, объекты (скажем, «насос» на рис. 2) и процессы (например, «инструкции по запуску» на 174
том же рисунке). Существенную роль играет также исследо- вание отношений между объектами. В экспертных системах с глубинным представлением знаний выводы делаются исходя из отношений, задаваемых сетями или фреймами. Семантиче- ская сеть—это граф таких отношений. Система фреймов (сценариев) [20, 24] связывает объекты, а также отношения между ними в структуры, называемые составными объекта- ми (по существу, это группы объектов, каждая из которых имеет свои отличительные признаки). Системы фреймов, кроме того, дают возможность «наследовать» определенные атрибуты иерархии составных объектов. Таким образом, в системах фреймов реализуются семантические свойства неко- торых отношений между объектами. Системы фреймов и семантических сетей позволяют представлять объекты из рассматриваемой области, а также процессы, стратегии и т. д., относящиеся к той же области. Алгоритмы управления системами фреймов или семантическими сетями, как правило, гораздо сложнее, чем для систем с поверхностным представ- лением, причем эти алгоритмы реализуются такими методами, которые невозможно истолковать с помощью пояснительных средств системы. «Поверхностные» системы отличаются «узостью» представлений; знания в них можно рассматривать как некое «упрощение» глубоких знаний из той или иной области, связанное с решением конкретной задачи. Одной из форм деятельности, требующей специальных навыков, где нашли применение глубинные представления, является обучение (см. статью Дж. Р. Андерсона и Б. Дж. Рейзера «Учитель Лиспа» в настоящем сборнике). В этом случае необходимо отразить знания учащихся, для чего глубинные представления (концепции, абстракции, аналогии и стратегии принятия решений) оказываются наиболее подходя- щими. Фирма «Болт, Беранек энд Ньюмен» совместно с Центром исследований и разработок по проблемам личного состава ВМС США создали систему инструктажа, получившую назва- ние «Стимер» («Паровая машина»). Она предназначена для обучения принципам работы с судовыми паровыми машинами (рис. 2). Процесс эксплуатации такой установки состоит из определенной последовательности действий по управлению ее отдельными компонентами. В системе «Стимер» компоненты и процедуры (а также их абстрактные представления, кото- рые используются в процессе обучения навыкам работы на установке) представлены в виде фреймов. Шаги, составля- ющие каждую процедуру, формируются на основе рассмотре- ния абстракций компонентов, а также элементарных компо- нентов того устройства, для управления которым предназна- чена данная процедура. Порядок следования шагов определя- 175
ется третьим составным объектом: принципами эксплуатации. Сведения об этих принципах, полученные от высококвалифи- цированных специалистов-эксплуатационников, образуют «сжатое» знание о работе с паровой машиной (хотя указанные принципы и представлены в виде фреймов, а не правил). Накопление знаний Рассмотрим теперь, какими путями система может полу- чить знания в виде, пригодном для их использования [15]. Эти знания формируются на основе: устных рекомендаций; анало- гий; примеров; наблюдений, открытий и экспериментов; умо- заключений, получаемых исходя из глубинных представле- ний. Неавтоматизированный сбор знаний, носителями которых являются специалисты,— весьма трудоемкий процесс. Поэто- му в настоящее время экспертные системы, как правило, включают вспомогательные средства для накопления знаний. Сейчас разрабатываются методы ускорения процесса на- копления знаний: машину «обучают» правилам логических выводов на конкретных примерах. В самой структуре таких систем, как, например, Expert-Ease, предусмотрены средства для получения массива экспертных решений, выработанных специалистом; обобщая эти решения, система может состав- лять некое выполнимое правило. В определенном смысле это означает, что вы можете как бы «пересаживать» ваш опыт в деле принятия решений непосредственно в персональный компьютер (еще в 1966 г. подобную возможность предвидели Эрл Хант и его коллеги). Машинный алгоритм для такой «пересадки» экспертного опыта разработал профессор Росс Куинлан из Института науки и техники Нового Южного Уэльса (Австралия), взяв за основу программу ID3, написанную на языке Паскаль. Работа Куинлана позволяет сделать следующие выводы: 1. С помощью такой программы можно создавать выпол- няемые на ЭВМ алгоритмы для задач со сложным решением, затрачивая на это лишь часть того времени, которое потребо- валось бы программисту на подготовку аналогичных алго- ритмов традиционным методом — вручную. 2. Полученные (с использованием, этой программы) проце- дуры решения значительно эффективнее тех, которые удает- ся получить устаревшими ручными методами. 3. Прежде всего необходимо выяснить, требуется ли вам только «сверхэффективность» алгоритма решения, выполня- емого на ЭВМ, или же вы, кроме того, хотите, чтобы полученные правила, объединенные в специальную базу данных, можно было понять человеку. 176
Если в ответ на последний вопрос можно сказать, что пользователю необходима «прозрачность» выведенных пра- вил, то тогда не следует рассматривать свою задачу как единую сверхзадачу (если только это не очень мелкая задача), с которой связан единственный массив примеров. В таком случае в этой сверхзадаче следует прежде всего выделить главную задачу и ряд подзадач или даже провести разбиение на еще более мелкие составляющие (до уровня под под задач)—если такая необходимость диктуется сложно- стью самой области, к которой относится решаемая задача. Впервые этот подход, получивший название «структурная индукция», предложили Шапиро и Ниблетт [25]. Компании, располагающие такими мощными средствами логических вы- водов, как пакет EX-TRAN (на языке Фортран), разработан- ный фирмой ITL, или программа RuleMaster (на языке Си) корпорации «Радиан», применили рассмотренный метод при создании сложных систем для поиска неисправностей в крупногабаритных трансформаторах; для штормового предуп- реждения; для диагностики дефектов схемных плат; для выдачи удобных для пользователя инструкций по подготовке пакетов заданий анализа сейсмической информации, предназ- наченной для нужд нефтедобывающей промышленности. В настоящее время производительность программистов при со- ставлении компактного, готового к загрузке (в ЭВМ) кода для таких систем превышает, как сообщается, 100 строк за рабочий день. Создание любой надежной в эксплуатации экспертной системы требует огромных ресурсов. После того как она разработана, представленные в ней знания и управляющие алгоритмы можно скомпоновать так, чтобы перенести их в программу, выполняющую те же функции на персональном компьютере. К примеру,-в ряде экспертных систем (ADVISE, EMYCIN, OPS5—см. [10]) предусмотрена возможность соз- дания программных кодов или представления знаний в другой простой форме с целью переноса системы на персональную ЭВМ. Представление знаний Как отмечают специалисты в области искусственного интеллекта, в надежной (или, как говорят, робастной) экспер- тной системе, которая сможет давать пояснения и обоснова- ния, приобретать новые знания, адаптироваться, «нарушать правила», определять степень своей компетентности и «до- стойно выходить из игры», необходимо будет использовать множество видов представления знаний. Эти представления можно классифицировать как глубинные/поверхностные.каче- 177
ственные/количественные, приближенные (неопределен- ные)/точные (определенные), конкретные/общие, описатель- ные/предписывающие. Системы, в которых применяются раз- личные формы представления знаний, получили название многоуровневых. Одним из примеров такой экспертной сис- темы является упоминавшаяся выше учебная программа «Стимер». В ней используются следующие формы представ- ления. 1. Графическое представление объектов из области дей- ствия программы «Стимер», а именно: клапанов, насосов, резервуаров, а также систем, состоящих из этих элементов. 2. Представление объектов, процедур и принципов эксплу- атации (заложенных в системе «Стимер») в виде фреймов. Оно используется для описания, объяснения, классификации, абстрагирования и обращения к источникам информации. 3. База утверждений, в рамках которой можно формули- ровать и аннулировать утверждения относительно элементов, составляющих систему «Стимер». 4. Количественное (численное) моделирование паровой машины, которое служит для наглядного представления причин, следствий, а также побочных результатов правиль- ного (или неправильного) применения тех или иных процедур. Сейчас работы по созданию такого рода многоуровневых систем только начинаются, и в течение ближайшего десятиле- тия основные усилия специалистов по экспертным системам будут сосредоточены именно на этом направлении. Назрела также необходимость изучить и представить в общем виде те действия, которые обычно осуществляет специалист в процес- се решения задач [3]. Создавая экспертные системы, начина- ешь понимать, что их сила заключается в способности предоставлять специалистам все условия для систематизации и максимально эффективной демонстрации своих знаний, которые сами по себе имеют огромное значение. Необходимые ресурсы Прежде чем говорить о необходимости тех или иных ресурсов, следует четко определить тип экспертной системы, которую вы хотите создать. Если нужно построить большую «заказную» экспертную систему {т. е. когда невозможно воспользоваться уже имеющимися менее крупными система- ми широкого применения), то требуются весьма обширные ресурсы: память значительного объема, высокоэффективные языки для программирования задач, быстродействующие средства выполнения программ. Не исключено, что потребу- ется построить такую систему с применением языка Лисп на аппаратных средствах, работающих с этим языком, или же на 178
вычислительных машинах с большой адресуемой памятью, функционирующих в режиме разделения времени. Подобные «заказные» системы, как правило, называют «прототипами», или «макетами». Они могут быть либо независимыми от области применения (как, например, система ADVISE), либо рассчитанными на конкретные приложения (MYCIN). В двух случаях для реализации экспертной системы можно ограничиться одним персональным компьютером (же- лательно, с памятью объемом не менее 512К байт; 1К байт=1024 байт), а именно: 1) когда есть возможность построить менее сложную экспертную систему на основе уже имеющейся системы широкого приложения; 2) когда в созда- ваемой системе предусмотрены средства компиляции правил, позволяющие выполнять соответствующие прикладные прог- раммы на персональных компьютерах. Если вам требуются лишь ресурсы для обеспечения функционирования уже соз- данной системы, то почти всегда можно обойтись одной крупной персональной ЭВМ. Создание конкретных экспертных систем в принципе не ограничено какими-либо явными факторами. Тем не менее, по мере того как сложность и размеры экспертных систем возрастают, «камнем преткновения» на пути их дальнейшего развития становится персональный компьютер — в силу огра- ниченности его собственных возможностей. Системные ограничения Во многих языках высокого уровня отсутствуют примити- вы (т. е. операторы языка программирования), которые необ- ходимы для построения экспертных систем. Назовем некото- рые из этих примитивов. 1. Синтаксический анализатор, или интерпретатор, кото- рый выполняет грамматический разбор предложений- операторов во время работы программы. Если такой анализа- тор не предусмотрен, то его приходится разрабатывать применительно к используемым в системе правилам. 2. Примитивы обработки списков и нечисловых величин. 3. Структура языка, обеспечивающая возможность вы- полнения пошаговой компиляции и других процедур быстрой подготовки опытных моделей. Пошаговая компиляция позво- ляет перекомпилировать не весь файл, а лишь нужную функцию или иной его сегмент. Многие специалисты по искусственному интеллекту посте- пенно склоняются к тому, что для реализации «поставляемой системы» приемлемы языки высокого уровня, например Пас- каль, Ада и Си, а при разработке систем-прототипов лучше пользоваться-таким языком, как Лисп или Пролог. В систе- 179
мах-прототипах подготовка окончательного варианта програм- мы на языке поставляемой системы осуществляется с приме- нением инструментальных средств генерации программного кода. Метод организации экспертных систем с использованием больших объемов знаний предусматривает высокую степень загрузки системной памяти во всех случаях, за исключением наиболее тривиальных прикладных задач. Примером програм- мы, реализуемой на ЭВМ с памятью 64К байт, может служить программа AL/Х, но она представляет собой всего лишь «оболочку» небольшой экспертной системы. Цены на запоминающие устройства продолжают снижаться, и многие малые ЭВМ уже перешагнули «рубеж» 64К байт. Поэтому мы вправе ожидать, что на основе персональных компьютеров удастся создать еще немало экспертных систем, по крайней мере на уровне поставляемой системы. Согласно прогнозам некоторых исследователей, потребности усовершенствован- ных экспертных систем в запоминающих устройствах боль- шой емкости будут стимулировать разработку памяти «энцик- лопедического» объема для персональных ЭВМ. Заключение Экспертные системы могут строиться множеством мето- дов с использованием правил, сетей, фреймов (а также их различных комбинаций) и других средств представления знаний. В настоящей статье мы не ставили целью осветить все возможные подходы к созданию экспертных систем, поскольку практически ежедневно появляются новые методи- ки. Даже если считать, что оптимальный подход для конкрет- ной области приложения найден, все равно придется выявлять наиболее подходящие и доступные (с точки зрения технико- экономических показателей) ресурсы ЭВМ. В большинстве случаев поиск наилучшего подхода несколько сужает диапа- зон выбора требуемых вычислительных средств. Иногда поиск путей реализации экспертных систем и необходимых ресурсов можно проводить взаимосвязанно. Вряд ли, однако, это может упростить процесс выбора. Более того, изменения, происходящие в сфере вычислительной техники, не уступают по своим темпам разработке новьГх принципов организации систем. Таким образом, самое большее, чего мы могли достигнуть данной публикацией,— это ознакомить читателя с перспективами и сложностями процесса развития техники экспертных систем. Об авторах: Роберт X. Майклсен занимает должность ассистента в университете шт. Небраска, где преподает курс 180
бухгалтерского учета. Дональд Мичи, в прошлом профессор Эдинбургского университета, является руководителем научно- исследовательских работ в Институте Тьюринга (Глазго, Шотландия). Его перу принадлежит много книг и статей по искусственному интеллекту. Альбер Буланже — научный со- трудник фирмы «Болт, Беранек энд Ньюмен» (Кеймбридж,шт. Массачусетс), имеет степень магистра в области теории и техники вычислительных систем. 1. Bennett J. S., Englemore R. S. SACON: A Knowledge-Based Con- sultant for Structural Analysis. IJCA, 179, 1979, p. 47. 2. Bramer M. A. A Survey and Critical Review of Expert Systems Research. Introductory Readings in Expert Systems (Michie D., ed.).— London, New York: Gordon and Breach, 1982. 3. Chandrasekaran B., Sanjay Mittal. Deep Versus Compiled Knowledge Approaches to Diagnostic Problem-Solving. International Journal of Man-Machine Studies, 19, 1983, p. 425. 4. Davis R. Expert Systems: Where Are We? and Where Do We Go From Here?. Al Magazine, Spring 1982, p. 3. 5. Duda R., Gaschnig J., Hart P. Model Design in PROSPECTOR Consultant System for Mineral Exploration. ESMA, 1979, p. 153. 6. Duda R. O., Shortliffe E. H. Expert Systems Research, Science, April 1983, p. 261. 7. Erman L. D., London P. E., Fickas S. F. The Design and Example Use of Hearsay 3. Proceedings of IJCA, no. 7, 1981, p. 409. 8. Feigenbaum E. A., Buchanan B. G., Lederberg J. On Generality and Problem Solving: A Case Study Using the DENDRAL Program. Machine Intelligence 6. (Meltzer B., Michie D., eds.).— New York: Edinburgh University Press and Halsted Press (Wiley), 1971, p. 165. 9. Forbus K. D. Qualitative Process Theory. MIT Technical Report 789, MIT Al Laboratory, May 1984. 10. Forgey C. L. Rete: A Fast Algorithm for the Many Pattern/Many Object Match Problem. Artificial Intelligence, September 1982. 11. Warner H. D., Clancey W. J., Rennels G. Strategic Explanations for a Diagnostic Consultation System, International Journal of Man- Machine Studies, January 1984, p. 3. 12. Hart P. Direction for Al in the 80’s. SIGART News-letter, November 1981, p. 11. 13. Hollan J., Edwin H., Weitzman L. Steamer: An Interactive Inspec- table Simulation-Based Training System. Al Magazine, Summer 1984, p. 15. 14. Hutchins E., Roe T., Hollan J. Project STEAMER: VII. A Compu- ter-Based System for Monitoring the Boiler Light-Off Procedure for a 1078-Class Frigate, NPRDC Technical Note 82-85, August 1982. 15. Kunz J. C. et al. A Physiological Rule-Based System for Interpreting Pulmonary Function Tests. Heuristic Programming Project, Memo HPP-78-19: Stanford University, 1978. 16. McDermott J. RI: A Rule-Based Configuror of Computer Systems. Computer Science Department:Carnegie — Mellon University, 1980. 17. Michaelsen R. H. An Expert System for Federal Tax Planning. 181
Expert Systems: The International Journal of Knowledge Engineering, October 1984, p. 149. 18. Michalski R. S. et al. A Technical Description of the ADVISE Meta Expert System. Deparment of Computer Science: University of Illinois at Urbana-Champaign, 1983. 19. Michalski R. S., Carbonell J., Mitchell T. (eds.). Machine Learning: An Artificial Intelligence Approach.—Los Altos (Ca): Tioga Publi- shing Company, 1983. 20. Minsky M. A Framework for Representing Knowledge. The Psycho- logy of Computer Vision (Winston P., ed.).— New York: McGraw- Hill, 1975. 21. Nii H. P., Aiello N. AGE (Attempt to Generalize): A Knowledge- Based Program for Building Knowledge-Based Programs. IJCA, 179, 1979, p. 645. 22. Pople H. E., Myers J. D., Miller R. A. Dialog: A Model of Diagno- stic Logic for Internal Medicine. IJCA, 175, 1975, p. 848. 23. Reiter J. AL/X: An Expert System Using Plausible Inference: Intelligent Terminals Ltd., University of Edinburgh, 1980. 24. Schank R. C., Abelson R. P. Scripts, Plans, Goals, and Understan- ding.— Hillsdale (NJ): Larrence Erlbaum Associates, 1977. 25. Shapiro A., Niblett T. Automatic Induction of Classification Rules for a Chess Endgame. Advances in Computer Chess 3. (Clarke M. R. B., ed.).— Oxford: Pergamon, 1982. 26. Shortliffe E. H. Computer-Based Medical Consultations: MYCIN.— New York: American Elsevier/North-Holland, 1976. 27. Stefik M., Bobrow D. G., Mittal S., Conway L. Knowledge Program- ming in LOOPS: Report on an Experimental Course. Al Magazine, Fall 1983. 28. Stevens A., Roberts B. Quantitative and Qualitative Simulation in Computer Base Training. Journal of Computer Based Instruction, vol. 10, № 1, 2, Summer 1983, p. 16. 29. Swartout W. R. A Digitalis Therapy Advisor with Explanations. Technical Report 176, MIT Lab for Computer Science, February 1977. 30. Van Melle W. A Domain-Independent Production Rule System for Consultation Programs, IJCA, 179, 1979, p. 923. 31. Waterman D. A., Hayes-Roth F. (eds.). Pattern-Directed Inference Systems.— New York: Academic Press, 1978. 32. Whalen T., Schott B. Issues in Fuzzy Production Systems. Internati- onal Journal of Man-Machine Studies, 19, 1983, p. 57.
Анатомия экспертной системы Беверли Томпсон, Уильям Томпсон Экспертная система дает возможность любому, кто обла- дает каким-либо профессиональным опытом, составить схему, в общих чертах отражающую ход решения конкретной задачи. Такая схема позволяет подготовить серию наводящих вопросов, с помощью которых человек, не имеющий необхо- димой квалификации, может пройти все этапы процесса решения подобных задач. Схематическое представление зна- ний экспертов осуществляется различными методами. Один из них, применяемый в настоящее время, состоит в том, что для выработки утверждений, подкрепленных конкретными фактами и относящихся к определенной предметной области, используются условные конструкции типа ЕСЛИ... ТО, кото- рые называются правилами. В данной статье описывается один из подходов, в соответ- ствии с которыми экспертная система может манипулировать набором определенных правил при проведении сеанса кон- сультации. Мы рассмотрим принципы работы экспертной системы, построив «картотечно-поисковую дедуктивную маши- ну», а затем проанализируем некоторые особенности проце- дур программирования, необходимых для «перевода» такой картотечной системы на язык Паскаль. Прежде чем приступить к изучению методов использова- ния правил в экспертной системе, следует более четко уяснить, как формируются правила и какого характера структуру они представляют. Допустим, вы специалист в области ботаники и одна ваша знакомая, позвонив по телефо- ну, попросила вас помочь ей определить, к какому семейству относится найденное ею растение. Так как вы не имеете возможности осмотреть этот экземпляр растения, вам прихо- дится опираться на те сведения, которые сообщает ваша собеседница. НО, поскольку она не является специалистом, ей очень трудно понять, какая информация поможет вам в Copyright © Beverly A. Thompson and William A. Thompson 183
Рис. 1. Диаграмма процесса логических рассуждений, в ходе которого определяется семейство деревьев, относящихся к классу голосемянных.
Таблица 1. Правила, в соответствии с которыми функционирует ботаническая экспертная система 1 ЕСЛИ И ТО КЛАСС — ГОЛОСЕМЯННЫЕ ФОРМА ЛИСТА —ЧЕШУЕОБРАЗНАЯ СЕМЕЙСТВО — КИПАРИСОВЫЕ 2 ЕСЛИ КЛАСС — ГОЛОСЕМЯННЫЕ И ФОРМА ЛИСТА —ИГЛОПОДОБНАЯ И КОНФИГУРАЦИЯ—ХАОТИЧЕСКАЯ ТО СЕМЕЙСТВО — СОСНОВЫЕ 3 ЕСЛИ КЛАСС — ГОЛОСЕМЯННЫЕ И ФОРМА ЛИСТА —ИГЛОПОДОБНАЯ И КОНФИГУРАЦИЯ—2 РОВНЫХ РЯДА И СЕРЕБРИСТАЯ ПОЛОСА—ДА ТО СЕМЕЙСТВО — СОСНОВЫЕ А ЕСЛИ КЛАСС — ГОЛОСЕМЯННЫЕ И ФОРМА ЛИСТА —ИГЛОПОДОБНАЯ И КОНФИГУРАЦИЯ—2 РОВНЫХ РЯДА И СЕРЕБРИСТАЯ ПОЛОСА —НЕТ ТО СЕМЕЙСТВО —БОЛОТНЫЙ КИПАРИС 5 ЕСЛИ ТИП—ДЕРЕВЬЯ И ШИРОКАЯ И ПЛОСКАЯ—ДА ТО КЛАСС — ПОКРЫТОСЕМЯННЫЕ 6 ЕСЛИ ТИП—ДЕРЕВЬЯ И ШИРОКАЯ И ПЛОСКАЯ —НЕТ ТО КЛАСС — ПОКРЫТОСЕМЯННЫЕ 7 ЕСЛИ СТЕБЕЛЬ — ЗЕЛЕНЫЙ ТО ТИП — ТРАВЯНИСТЫЕ 8 ЕСЛИ СТЕБЕЛЬ—ДРЕВЕСНЫЙ И ПОЛОЖЕНИЕ — СТЕЛЮЩЕЕСЯ ТО ТИП—ЛИАНЫ 9 ЕСЛИ СТЕБЕЛЬ —ДРЕВЕСНЫЙ И ПОЛОЖЕНИЕ — ПРЯМОСТОЯЩЕЕ И .ОДИН ОСНОВНОЙ СТВОЛ—ДА то тип—ДЕРЕВЬЯ 10 ЕСЛИ СТЕБЕЛЬ — ДРЕВЕСНЫЙ И ПОЛОЖЕНИЕ — ПРЯМОСТОЯЩЕЕ И ОДИН ОСНОВНОЙ СТВОЛ —НЕТ ТО ТИП — КУСТАРНИКОВЫЕ определении семейства растения. Вы должны задать ряд вопросов, которые помогли бы вам получить информацию, необходимую для решения задачи. Предположим, вы задали вполне достаточно вопросов, и они позволили выяснить, что интересующее вашу собеседни- цу растение —это дерево, относящееся к классу голосемян- 9—2596 185
пых. На рис. 1 показан пример процедуры принятия решения, дающей возможность просмотреть все варианты для данного случая. В табл. 1 (правила 1—4) проиллюстрировано, каким образом диаграмму, показанную на рис. 1, можно представить в виде последовательности правил, используя условные утвер- ждения ЕСЛИ... ТО. Набор правил, указанный в табл. 1, и информация, содержащаяся в табл. 2, образуют неполную базу знаний из области ботаники, позволяющую вам отвечать на вопросы о типе растения (травянистое оно, лиановое или относящееся к виду деревьев), классе рассматриваемого дере- ва (покрытосемянные или голосемянные) и конкретном семей- стве в классе голосемянных (кипарис, болотный кипарис или сосна). Поскольку мы работаем с неполной базой знаний, может случиться так, что будут заданы четко сформулиро- ванные вопросы, на которые система не сможет ответить (например, к какому семейству принадлежит та или иная лиана). Тем не менее, по нашему убеждению, этот простой пример позволит вам в какой-то степени понять, что такое экспертная система и как она действует. Таблица 2. Набор карточек с признаками для ботанической экспер- тной системы (Признаки выделены прописными буквами, а за ними следуют их переводы и соответствующие подсказки) КАРТОЧКА 1 СТЕБЕЛЬ стебель растения Какой стебель у растения—древесный или зеленый? КАРТОЧКА 2 ПОЛОЖЕНИЕ положение стебля Каково положение стебля — прямостоящее или стелющееся? КАРТОЧКА 3 ОДИН ОСНОВНОЙ СТВОЛ растение (не) имеет один основной ствол Имеет ли растение один основной ствол? КАРТОЧКА 4 ТИП РАСТЕНИЯ тип растения КАРТОЧКА 5 ШИРОКАЯ И ПЛОСКАЯ форма листьев — (не)широкая и (не)плоская Имеют ли листья широкую и плоскую форму? КАРТОЧКА 6 КЛАСС класс дерева КАРТОЧКА 7 ФОРМА ЛИСТА форма листа Какова форма листа—иглоподобная или чашуе- образная? 186
КАРТОЧКА 8 КОНФИГУРАЦИЯ РАСПОЛОЖЕНИЯ ИГЛ конфигурация расположения игл вдоль ветви Какую конфигурацию имеет расположение игл вдоль ветви — хаотическую или в виде двух ров- ных рядов? КАРТОЧКА 9 СЕРЕБРИСТЫЕ ПОЛОСЫ снизу иглы имеется (отсутствует) серебристая полоса Имеется ли серебристая полоса снизу иглы? КАРТОЧКА 10 СЕМЕЙСТВО семейство растения База знаний Важно понимать, что знание как таковое — это не собра- ние случайных сведений, а набор конкретных фактов, связан- ных в некую единую структуру. В приведенном примере такую структуру образуют условные правила типа ЕС- ЛИ... ТО. Совокупность фактов, охватывающих всю информа- цию относительно определенной предметной области, называ- ется базой знаний. В предлагаемой нами системе база знаний состоит из трех основных компонентов: правил, вопросов- подсказок и переводов. Любое правило, представленное в табл. 1, имеет две части: условие с предшествующим ему словом ЕСЛИ и вывод, перед которым стоит слово ТО. Каждое выражение в этих частях образовано из следующих элементов: признака, а именно ключевого слова или фразы, представляющих некую качественную характеристику, информацию о которой мы собираем; значения, которое присваивается признаку и явля- ется либо ответом на вопрос, либо выводом из правила; предиката (в нашей системе это слово ЯВЛЯЕТСЯ или тире), который связывает первые два элемента. Рассматриваемая система должна уметь запрашивать у абонента информацию относительно некоторых признаков, при этом типовые вопро'сы, которые необходимо будет задавать (подсказки), должны храниться в базе знаний. Поскольку предполагается, что абонент не сможет сообщить никаких сведений о признаках ТИП, СЕМЕЙСТВО и КЛАСС, вопросы относительно последних в системе отсутствуют. Еще один компонент, связанный с признаком,— это пере- вод. Он используется для раскрытия ключевого слова, что делает правила более удобными для восприятия. Существуют два метода составления переводов. Один из них иллюстриру- ется следующим примером: 9* 187
признак: СТЕБЕЛЬ перевод: Стебель растения признак: ТИП перевод: Тип растения правило без перевода: ЕСЛИ СТЕБЕЛЬ ЯВЛЯЕТСЯ ЗЕЛЕ- НЫМ, ТО ТИП —ТРАВЯНИСТЫЕ. правило с переводом: Если стебель растения является зеле- ным, то тип растения—травянистые. При подготовке перевода при этом методе не следует забы- вать^ что именно признак непосредственно замещается вы- бранной фразой. Предикат и значение останутся точно такими же, какими они были в непереведенном правиле. Если представленный выше метод используется в тех случаях, когда значением признака служит слово ДА или НЕТ, то полученная фраза будет выглядеть весьма неесте- ственно. Этого можно избежать, снабжая признаки правила следующими переводами: признак: ШИРОКАЯ И ПЛОСКАЯ перевод: Форма листьев — (не) широкая и (не) плоская правило без перевода: ЕСЛИ ТИП—ДЕРЕВЬЯ, А ШИРО- КАЯ И ПЛОСКАЯ—ДА, ТО КЛАСС —ПОКРЫТО- СЕМЯННЫЕ правило с переводом: Если тип растения—деревья, а форма листьев — широкая и плоская, то класс дерева—покрыто- семянные. Когда значением является слово НЕТ, вторая часть условия в приведенном выше выражении будет читаться так: «форма листьев—неширокая и неплоская». Поскольку преди- кат., и значение уже содержатся в переводе, их не надо добавлять к переводу, как в первом методе. Картотечно-поисковая дедуктивная машина Теперь, когда мы рассмотрели все компоненты базы знаний, можно приступать к построению картотечно- поисковой дедуктивной машины. Для упрощения манипуляций отдельными компонентами базы знаний будем считать, что каждое правило как бы размещено на отдельной «справочной карточке». Поскольку для независимых признаков предусмот- рены как переводы, так и вопросы-подсказки, для любого признака можно подготовить справочную карточку, на кото- рой размещаются ключевое слово, перевод и подсказка (если последняя вообще имеется для данного признака). Правила, используемые в нашей базе знаний, сведены в' табл. 1, а полный н^бор карточек признака, содержащих признаки, переводы и подсказки, представлен в табл. %. Теперь попыта- емся реализовать такой набор карточек на практике. Номера 188
Таблица 3. Пошаговое представление сеанса консультации с помощью картотечно-поисковой дедуктивной машины, иллюстрирующее изменение содержимого стеков Шаг Анали- зируемое правило Значение ? правила Ответ на подсказку Стек целей Контекстный стек № равила № от- брошен- ного правила Признак № пра- вила Признак Значение 1 СЕМЕЙСТВО 2 1 неизвестн. КЛАСС 1 3 5 неизвестн. ТИП 5 4 7 неизвестн. СТЕБЕЛЬ 7 5 нет ДРЕВЕСНЫЙ ТИП 6 СТЕБЕЛЬ ДРЕВЕСНЫЙ >-* 6 7 ложь 7 Q0 7 8 неизвестн. ПОЛОЖЕНИЕ 8 8 нет ПРЯМОЙ ТИП 5 ПОЛОЖЕНИЕ ПРЯМОЙ 9 8 ложь 8 10 9 неизвестн. ОСН. СТВОЛ 9 11 нет ДА ТИП 5 ОСН. СТВОЛ ДА 12 9 истина КЛАСС 1 ТИП ДЕРЕВО 9 13 5 неизвестн. ШИР.+ПЛОС. 5 14 нет НЕТ КЛАСС 1 ШИР.+ПЛОС. НЕТ 15 5 ложь 5 16 6 истина СЕМЕЙСТВО КЛАСС ГОЛОСЕМ. 6 17 1 неизвестн. ФОРМА ЛИСТА 1 18 нет ЧЕШУЕОБР СЕМЕЙСТВО ФОРМА ЛИСТА ЧЕШУЕОБР. 19 1 истина СЕМЕЙСТВО КИПАРИС 1
шагов в приведенном ниже описании относятся к сеансу консультации по классификации растений, проиллюстрирован- ной табл. 3. Стек целей После того как подготовка требуемой базы знаний завер- шена, можно, пользуясь указанными карточками, шаг за шагом проводить весь цикл консультации. Первый шаг любой консультации состоит в выборе цели конкретного сеанса (шаг 1). В предлагаемом примере конечной целью консультации будет определение СЕМЕЙСТВА. Для начала следует поме- стить карточку признака, относящуюся к СЕМЕЙСТВУ, в отдельную «колоду», которая называется стеком целей. Приз- нак, находящийся на самом верху стека целей,— это текущая цель. Стек контекстов По ходу консультации необходимо постоянно учитывать все обнаруживаемые факты. Когда какому-либо признаку присваивается определенное значение, следует взять карточку этого признака и поместить ее в колоду, называемую стеком контекстов. Поскольку необходимо сохранять также и прис- военное признаку значение, в контекстный пакет нужно попутно вкладывать карточку с таким значением. Кроме того, нам потребуется колода «отброшенных карточек» (колода сброса), в которую будут помещаться правила, удаляемые из базы знаний. Теперь, наконец, мы можем рассмотреть, каким образом следует объединять перечисленные компоненты в ходе создания дедуктивной машины. Дедуктивная машина—- это, по существу, алгоритм упорядоченного подбора целей, анализа правил и взаимодействия с пользователем, позволя- ющий находить значение конечной цели. Выбор правила для оценки Прежде всего попытаемся отыскать карточку правила, в выводе которого (т. е. в утверждениях, следующих за словом ТО) будут содержаться хоть какие.-то сведения о признаках текущей цели. Подобный процесс поиска нужной информации в совокупности выводов правил, приводящий к выполнению поставленных целей, называется обратной цепочкой рассуж- дений (а также дедукцией от цели или рассуждениями на основе следствий). Если правило, в выводе которого содер- жатся признаки текущей цели, найдено, то можно переходить к этапу «Оценка правйла»; в противном случае придется 190
обратиться к процедуре, описанной в параграфе «Запрос необходимой информации у абонента». Оценка правила После того как выбрано правило, которое должно оцени- ваться, необходимо провести поочередное сопоставление ут- верждений, содержащихся в условии правила, с имеющимися фактическими данными. Эти данные содержатся в стеке контекстов. В процессе сопоставления обнаружится, что нам придется иметь дело с одной из трех возможных ситуаций. 1,. Правило не поддается оценке. Считается, что значение правила неизвестно, если одно или несколько выражений, входящих в условие рассматриваемого правила, отсутствуют в стеке контекста (см., в частности, правило 1 на шаге 2 в примере, проиллюстрированном таблицей 3). Дальнейшая оценка правила возможна только в случае получения дополни- тельной информации. Для этого карточку, содержащую пер- вый неизвестный признак (в нашем примере признак КЛАСС), помещают в стек целей вместе с карточкой, где записано неоцененное правило. Цели, расположенные в стеке после конечной цели, иногда называют подцелями. Затем, вернув- шись к этапу «Выбор правила для оценки», следует попытать- ся найти правило с признаком КЛАСС в секции выводов. 2. Ложное правило. Правило ложно, если одно из утвер- ждений на соответствующей карточке содержит выражение, противоречащее какому-то факту из стека контекста (правило 7 на шаге 6 ставит в соответствие признаку СТЕБЕЛЬ значение ЗЕЛЕНЫЙ, которому противоречат данные, вводи- мые пользователем). В таком случае карточку анализируемо- го правила помещают в колоду сброса, после чего возвраща- ются к этапу «Выбор правила для оценки». 3. Правило поддается оценке. Считается, что правило дает истинный результат, если каждое выражение в его условной части согласуется с определенным компонентом в стеке контекста (так, установлено, что правило 9 на шаге 12 приводит к правильному результату). Когда все выражения в условии истинны, утверждения, которые содержатся в выво- де правила, также должны быть истинными. Данное правило было отобрано для оценки ввиду того, что его вывод содержал текущую цель; поэтому необходимо перенести последнюю из верхней части стека целей в стек контекста. Соответствующую карточку правила, оставленную в ходе анализа в стеке Целей (правило 5 в нашем примере), следует переложить на самый верх колоды’карточек с правилами, в результате чего это правило можно будет анализировать повторно. Карточка с правилом, которое мы только что 191
оценили (правило 9), хранится вместе с карточкой признака в стеке контекста, показывая значение этого признака и позво- ляя проследить, каким образом оно было найдено. Эту карточку с правилом можно, кроме того, использовать для ответов на вопросы относительно полученного вывода, кото- рые абонент может задать в дальнейшем. Если стек целей опустел, то можно считать, что задача решена. Если же там еще остались нерассмотренные цели, придется снова вернуть- ся к этапу «Выбор правила для оценки». Запрос к абоненту В случае когда невозможно подобрать правило, из которо- го можно было бы извлечь информацию относительно рас- сматриваемой цели, за такой информацией приходится обра- щаться к абоненту (на шаге 5 мы запрашиваем необходимые сведения у абонента, ибо ни одно из правил не содержит в своих выводах признака СТЕБЕЛЬ). Именно здесь и потребу- ются вопросы-подсказки, которые были записаны на карточ- ках признаков. Если на нужной карточке нет подсказки- вопроса, то абонент не сможет сообщить необходимые сведе- ния. В таком случае все наши возможности оказываются исчерпанными, и мы вынуждены закончить консультацию, не найдя решения поставленной задачи. Это означает, что либо в анализируемых правилах скрыт какой-то дефект, либо нам не удалось разобраться в информации, которая содержится в используемой нами части базы знаний. Если на карточке текущей цели записана та или иная подсказка, последнюю можно использовать в качестве вопро- са к абоненту. После того как абонент предоставит недоста- ющую информацию, мы можем переместить карточку теку- щей цели из стека целей в стек контекста. Если имеется карточка правила, на которой фигурирует эта цель, то такую карточку следует поместить на самый верх колоды карточек с правилами. Необходимо также изготовить карточку, содержа- щую значение, и вложить ее в стек контекста вместе с соответствующей карточкой признаков. После этого можно возвратиться к этапу «Выбор правила для оценки». Как и почему Нет ничего необычного в том, что у абонента в ходе консультации может возникнуть желание узнать, почему вы задаете тот или иной вопрос. Например, на шаге 13 (см. табл. 3) нам не, удалось отыскать правило, которое давало бы какую-нибудь информацию относительно Цризнака ШИРО- КАЯ И ПЛОСКАЯ; поэтому мы задали абоненту наводящий 192
вопрос о данном признаке. Прежде чем ответить на него, абонент может поинтересоваться, почему мы задали именно такой вопрос. Чтобы объяснить это, нам не обязательно «заглядывать» дальше самого верхнего правила в стеке целей. Причина, по которой мы пытаемся найти значение признака ШИРОКАЯ И ПЛОСКАЯ, заключается в том, что нам необходимо получить информацию об одном из условий, удовлетворяющих цели КЛАСС в правиле 5. Представив информацию из стека целей в виде следующей записи, мы ответим на вопрос «почему?»: Мы пытаемся найти значение для класса дерева. Мы уже знаем, что тип растения—дерево. Если мы можем сказать, что форма листьев неширокая и неплоская, то мы будем знать, что класс дерева—голосемянные. Заметим, что для улучшения восприятия этой информации мы заменили каждый признак его переводом. Если затем абонент пожелает узнать: «Почему важен КЛАСС?», то такую процедуру повторяют, переходя к следующей карточке в стеке целей. Процесс продолжается до тех пор, пока весь набор подцелей в этом стеке не будет исчерпан. Возможно, абонента удовлетворит ваш ответ на вопрос, почему вам понадобилась информация о признаке ШИРОКАЯ И ПЛОСКАЯ; однако он может спросить: «Как вы узнаёте, что тип растения—дерево?» На такой вопрос можно отве- тить, найдя, где именно в стеке контекста находится данный признак. Если имеется карточка правила, которая сопутству- ет карточке с этим признаком, то значение, полученное в соответствии с указанным правилом, было помещено в стек контекста. Для формулировки ответа на вопрос абонента обычно используется информация, которую можно извлечь из рассматриваемого правила: то, что растение является деревом было доказано с помощью правила 9. Это правило гласит: Если стебель растения—древесный и прямостоящий и растение имеет только один основной ствол, то тип растения—дерево. В том случае, когда в стеке контекста нет ни одной карточки правила, сопутствующей карточке признака, мы можем сообщить абоненту, что, должно быть, этот факт был получен непосредственно от пользователя. Предоставленная абоненту возможность прерывать сеанс консультации для того, чтобы задать вопросы «как и поче- 193
му?», делает весь этот процесс более понятным и полезным как для абонента, так и для консультанта. Теперь, когда мы разработали формальную модель, содер- жащую все элементы необходимой экспертной системы, задача компоновки программных средств, предназначенных для автоматизации процесса консультации, оказывается нес- ложной. На данном этапе при создании экспертной системы можно воспользоваться некоторыми конструкциями языка программирования Паскаль. Теоретически мы можем отделить правила и признаки, содержащиеся в базе знаний, от самой дедуктивной машины, которая пользуется базой знаний для получения выводов. У нас, разумеется, есть возможность реализовать базу знаний непосредственно в программе экспертной системы, однако структура такой программы оказалась бы негибкой. Если бы мы захотели расширить базу знаний, желая ввести в нее информацию о семействах лиан или создать другую экспертную систему, например позволяющую распознавать насекомых, то нам пришлось бы переписать всю программу. Существует, однако, иная возможность: программе вменяется «в обязанность» считывание правил, вопросов-подсказок и переводов из файла и преобразование их к виду, которым могла бы пользоваться дедуктивная машина. Именно такого подхода мы и будем придерживаться. Перевод осуществляет- ся с помощью так называемого синтаксического анализато- ра. Это стандартная программа, которая просматривает опе- раторы-предложения в программе, составленной на опреде- ленном языке, и выявляет, допустимы ли они на этом языке. Синтаксический анализатор способен, кроме того, трансфор- мировать представление предложения, которым могут вос- пользоваться другие сегменты программы. Описываемый здесь синтаксический анализатор представляет собой реаль- ную программу, которой можно воспользоваться, обратив- шись к программному обеспечению сети BYTEnet1. На начальном этапе создания экспертной системы необхо- димо принять решение о том, какой метод ввода и хранения информации будет применяться при создании базы знаний. В данном отношении весьма удобен метод, который заключает- ся в использовании стандартного текстового экранного редак- тора для ввода и хранения правил, вопросов-подсказок и переводов в форме текстовых файлов, записанных кодом ASCII (Стандартный американский код для обмена информа- цией). При этом могут возникать трудности с обеспечением 1 BYTEne{ — одна из локальных сетей вычислительных машин в США, с помощью которой ее абоненты' могут обмениваться информацией и программами.— Прим. ред. 194
целостности базы знаний, однако весь процесс разработки программы существенно упрощается, поскольку отпадает необходимость в написании каких бы то ни было программ ввода данных. Однако в подготовленном текстовом файле правила должны быть представлены в том же формате, что и на справочных карточках. Синтаксический анализатор Синтаксический анализатор позволяет проверять програм- мы, составленные на языке с определенной грамматикой. Грамматика—это совокупность определений, которые регла- ментируют, какие комбинации базовых структур языка, назы- ваемых лексемами, являются допустимыми. В данном случае лексемой считается любая отделенная пробелами цепочка символов. Мы можем рассматривать правила, вопросы- подсказки и переводы как предложения на некотором языке правил. Таблица 4. Грамматика правил, подсказок и переводов для экспер- тной системы, представленная в форме Бекуса — Наура предложение правило | подсказка | перевод правило номер 'ЕСЛИ' условие 'ТО' вывод'.' номер ::= цифра | цифра правило номер условие ::= выражение | выражение 'И' условие выражение признак предикат значение признак лексема | лексема признак 'максимум 30 знаков) предикат ::= 'ЯВЛЯЕТСЯ'* значение ::= лексема | лексема значение (максимум 30 знаков) цифра ::= '0' ... '9' лексема (любая цепочка, до 30 знаков между пробелами) подсказка ПОДСКАЗКА' признак конец_____строки текст конец__ строки конец_строки ::= (<ВОЗВРАТ КАРЕТКИ> для версии УКСД, <ВОЗВРАТ КАРЕТКИ> <ПЕРЕВОД СТРОКИ> для версии Turbo) текст ::= (любая цепочка, до 80 знаков) перевод ::= .'(9>ПЕРЕВОД' признак конец_строки текст конец_ строки * Иногда вместо слова ЯВЛЯЕТСЯ используется тире.— Прим, ред. Первый шаг процесса составления программы синтаксиче- ского анализа состоит в создании исчерпывающего описания языка, на проверку фраз которого и ориентирован анализа- тор. Грамматика этого языка представлена в табл. 4 в форме Бекуса—Наура (БНФ), дающей компактное описание синтак- сиса языка. В ней используются два специальных оператора, а именно «::=» («по определению, равно») и « | » («или»). К примеру, первую строку в табл. 4 195
предложение правило j подсказка | перевод следует читать как «предложение — это по определению правило, подсказка или перевод»! Символы и слова, заклю- ченные в одиночные кавычки, должны записываться в языке именно так, как показано в БНФ. Прочие знаки представляют собой синтаксические категории и определяются граммати- кой. Фраза правило ::= номер__правила 'ЕСЛИ' условие 'ТО' вывод '.' означает, что правило состоит из номера правила, а также следующих за ним ключевого слова «ЕСЛИ», условия (кото- рое определяется где-то в другой части грамматики), слова «ТО» и вывода. Правило завершается знаком «.». Из опреде- ления условия условие выражение 'И' условие следует, что условие содержит либо одно выражение, либо несколько выражений, связанных словами «И». Такого рода запись называется определением с правой рекурсией, пос- кольку описываемый объект находится в правой части этого определения. Количество рекурсий (т. е. операций, в каждой из которых используется результат, полученный во время предыдущей операции) в подобном определении не обязатель- но ограничено. Вполне допустима ситуация, когда условие содержит бесконечное число выражений. Очевидно, что при работе с любой программой, в которой будет предпринимать- ся попытка синтаксического анализа такого объекта, возник- ли бы сложности, связанные с ограниченностью времени, которое отводится на решение задачи, и конечным объемом памяти ЭВМ. Пользуясь БНФ, можно получить достаточно эффективное теоретическое определение конкретной грамма- тики, однако такая форма записи не всегда содержит инфор- мацию об ограничениях, связанных с практической реализа- цией грамматики на конкретной вычислительной машине. Использование определения, записываемого в соответ- ствии с БНФ, дает то преимущество, что при наличии заданной таким образом грамматики написание программы синтаксического анализатора не составляет особого труда. Подобное определение служит своего рода руководством по «нисходящему» проектированию программы. Будем предпола- гать, что в вашем распоряжении уже есть стандартная программа (она называется scanf—программа просмотра фай- лов) для считывания лексем из файла входных данных. Для составления программы синтаксического анализатора вначале рассмотрим первую строку грамматики и напишем процедуру, которая способна выполнять следующие действия: 196
воспринимать ту или иную лексему из файла и решать, что она собой представляет—начальную лексему правила, воп- рос-подсказку или перевод; считывать следующую лексему; вызывать программу, необходимую для анализа оставшейся части предложения. Этим занимается процедура предло- жение, доступная упомянутой программе BYTEnet. Предполагается, что процедура правило, предусмотренная в этой программе, вызывается посредством лексемы со значе- нием «ЕСЛИ». При поступлении указанной лексемы происхо- дит вызов условия; в противном случае процедура правило вызывает стандартную программу обработки ошибок и иници- ирует выход из основной программы. Такой процесс продол- жается в соответствии с БНФ-определениями, пока мы не доберемся до процедур атрибут, предикат и значение, которые обеспечивают сохранение идентифицированных ими структурных компонентов для последующего использования. В нашей реализации при определении значения заверша- ющей лексемой служит слово «И», поэтому попытка восполь- зоваться значениями типа «твердый и древесный» приведет к тому, что в синтаксическом анализаторе произойдет останов по ошибке. Разрешить эту проблему можно, изменив опреде- ление правила в грамматике таким образом, чтобы в качестве ключевого применялось слово, отличное от «И», или введя в структуру синтаксического анализатора процедуру возврата. Последняя позволяла бы синтаксическому анализатору воз- вращаться к тому элементу предложения, который обусловил появление ошибки, и выполнять затем другой возможный вариант анализа. Все процедуры, которые осуществляет синтаксический анализатор, должны взаимодействовать между собой в соот- ветствии с определенным «соглашением». Оно предусматрива- ет, что при повторном использовании таких процедур послед- ние должны будут просматривать все идентифицируемые с их помощью лексемы, помещая первую лексему каждой следу- ющей фразы в Глобальную переменную, которая также называется лексемой. Многие процедурные элементы, входящие в состав синтак- сического анализатора, например условия и признаки, имеют рекурсивный характер, поскольку рекурсии содержатся в их определениях. Такой вид нисходящего грамматического раз- бора называется синтаксическим анализом по методу рекур- сивного спуска. Рассмотренная здесь грамматика позволяет объединить правила, вопросы-подсказки и переводы в общий файл. Правила, содержащиеся в табл. 1, можно вводить в програм- му именно в том виде, в каком они представлены в таблице. Подсказки и переводы (табл. 2) необходимо изменять в 197
соответствии с требованиями грамматики. Например: trans стебель Стебель растения @ подсказка стебель Является ли стебель растения древесным или зеленым? Для изменения типа правил, распознаваемых программой, следует модифицировать грамматику, а затем, руководствуясь новой грамматикой, переписать стандартные программы, предназначенные для ее обработки. Программу перекрестных ссылок, в которой применяются процедуры синтаксического анализа, описанные в настоящей статье, можно перенести в экспертную систему из пакета, работающего в сети BYTEnet. Имеются варианты исходно- го кода этой программы, записанные на языке Паскаль в версиях Apple и УКСД (разработанной Калифорнийским университетом в Сан-Диего), а также в версии Паскаля Turbo. Рассматриваемая здесь совокупность правил реализована в настоящее время в виде текстового файла, как наиболее полная база знаний, предназначенная для идентификации видов хвойных, произрастающих в северо-восточных районах США. Указанная программа перекрестных ссылок считывает информацию о знаниях из базы, содержащейся в текстовом файле, составляя упорядоченный по алфавиту список призна- ков вместе с соответствующими переводами, вопросами- подсказками и значениями. На экране дисплея воспроизводят- ся также номера всех правил, в которых представлено значение признака. Хотя исходный код программы перекрестных ссылок занимает в памяти ЭВМ 16К байт, это лишь одна из частей экспертной системы. Далее мы рассмотрим спецификации законченной программы на языке Паскаль, с помощью которой реализуется картотечно-поисковая дедуктивная ма- шина. В основу этих спецификаций положен написанный авторами данной статьи пакет, получивший название «Микро- Эксперт». Издательство «Макгроу-Хилл» предлагает его (в записи на диске) пользователям вычислительных машин фирм IBM и Apple. В состав указанного пакета, который по существу представляет собой несложную реализацию карто- течно-поисковой дедуктивной машины, входят исчерпыва- ющая документация и собственно исходный код. («МикроЭк- сперт»—торговая марка фирмы «МикроЭксперт системз».) Программу , перекрестных ссылок из состава пакета BYTEnet можно без каких бы. то ни было модификаций использовать совместно с системой «МикроЭксперт». 198
Структуры данных Проведение синтаксического анализа гарантирует четкую формулировку правил, сгруппированных в файле, но это лишь одна из функций экспертной системы. Основное ее назначе- ние заключается в интерпретации правил, позволяющей про- вести консультацию. Выполнение этой функции обеспечивает- ся остальными компонентами программной системы. Распечатка! Часть программы на языке Паскаль, опи- сывающая компонент и относящиеся к нему типы данных. ТИП string 80 = string [803; word = st ring [word—size]; counter = 0 .. maxint; item—type =(cond, concld); item—ptr = Aitem; string—ptr = ^string—rec; string_rec = ЗАПИСЬ info: string80; next—line: string—ptr END; компонент = ЗАПИСЬ next: item—ptr; attr: word; CASE boolean OF TRUE: (val: word; Kind: item—type; rule—no: counter); FALSE: (prompt—ptr: string—ptr; trans—ptr: string—ptr; val—ptr: item— ptr); END; В «обязанности» подобной программы помимо синтаксиче- ского анализа правил должны входить процедуры распределе- ния памяти,’ которые позволяли бы оптимальным образом размещать там подсказки, переводы и сами правила. Что касается правил, то необходимо не только обеспечить хране- ние входящих в них признаков и значений, но и представить в компактной форме всю структуру, которую они образуют. Цепочки, образующие подсказки и переводы, должны запи- сываться в память таким образом, чтобы можно было без труда находить ассоциативную связь между ними и соответ- ствующими признаками. Для установления такой ассоциативной связи пользуются самыми разнообразными методамй. В системе «МикроЭк- сперт» запоминание большинства элементов данных, без которых невозможно функционирование дедуктивной маши- 199
Рис. 2. Представление правила 8 в виде связанных списков. ны, осуществляется с помощью связанных списков записей, называемых структурными компонентами. И хотя при этом память расходуется недостаточно экономно, структура прог- раммы в целом упрощается. На распечатке 1 такого рода компонент представлен в виде кода на языке Паскаль. Существуют два основных вида структурных компонентов. Компонент правила содержит признак, значение, номер пра- вила и тип самого компонента (условие или вывод правила). Поскольку в описании правила можно использовать предикат только одного вида—«ЯВЛЯЕТСЯ» (или тире),— предикат не включается в структурный компонент. Для каждого выраже- ния, входящего в правило, формируется свой компонент, причем в составе правила такие компоненты соединяются между собой указателями. И наконец, в эту упорядоченную структуру вводится еще один указатель, идущий от некоторо- го общего массива и отмечающий первый компонент правила (рис. 2). Таким образом, любое правило заносится в память в виде двух связанных списков, один из которых относится к условию правила, а другой — к выводу. Подсказки и переводы также .хранятся в виде связанных списков. Когда синтаксический анализатор, выполняя прос- 200
Рис. 3. Связи между списком признаков и списками подсказок и переводов, проиллюстрированные на примере признака ПОЛОЖЕ- НИЕ. мотр файла базы знаний, обнаруживает подсказку или пере- вод, для соответствующего признака формируется структур- ный компонент, если он не был сформирован ранее. Послед- ний вставляется в связанный список компонентов признаков, и эти компоненты — по мере считывания цепочек подсказок и переводов — в свою очередь связываются и снабжаются указателями, размещенными в специальных полях списка признаков. Подобная структура показана на рис. 3. Связанные списки — это удобный «инструмент» програм- мирования, позволяющий эффективно работать с символиче- скими объектами, например с правилами. К сожалению, в самой структуре таких языков, как Паскаль, предусмотрено очень мало встроенных стандартных программ обработки списков. Поэтому, чтобы создать экспертную систему с использованием языка Паскаль, необходимо составить прог- раммы обработки списков и управления памятью. В Паскале имеются встроенные стандартные процедуры управления ди- намическим распределением памяти. Однако им присущ опре- деленный недостаток: они слегка отличаются для разных версий Паскаля. Практически в каждой из этих версий предусматривается процедура (или функция) new для рас- пределения памяти, но тем не менее методы «выгрузки» (из памяти) ставших ненужными оперативных данных несколько различны в разных версиях Паскаля, выбранных нами для реализации рассматриваемой системы. Поскольку в системе «МикроЭксперт» предполагалось 201
использовать версии Паскаля Apple и Turbo, причем лишь с самыми незначительными модификациями, мы решили отка- заться от применения встроенного Паскаль-оператора dispose (освобождение памяти), который не включен в версию Apple. Вместо этого мы формируем еще один список — список «свободных» компонентов. Когда запрашивается новый ком- понент, программа прежде всего проверяет этот список. Если он пуст, программа вызывает встроенную функцию new, которая выделяет место для размещения запрашиваемого компонента. Если же список не пуст, то берется его самый верхний компонент, а текущий указатель начала списка переносится на следующий компонент. Высвободить компо- нент можно, направляя его выходной указатель на верхнюю часть списка, а текущий указатель перенося к началу этого компонента \ Необходим также ряд других программ обработки списков. Например, должна быть предусмотрена стандартная процедура, которая определяла бы, присутствует ли тот или иной конкретный признак в проверяемом списке, и в случае обнаружения этого признака формировала указатель, направ- ленный к соответствующей позиции списка. Требуется, кроме того, программа, которая будет подготавливать новый компо- нент, помещать его в верхнюю часть списка и заносить значения соответствующих полей, предусмотренных в таком компоненте. Понадобятся также аналогичные стандартные процедуры для записи компонентов в конец списка и для размещения компонента в списке так, чтобы алфавитный порядок в последнем не нарушался. Программа «МикроЭксперт» формирует и ряд других списков, соответствующих структурам, представленным в картотечно-поисковой дедуктивной машине. Необходимо сформировать список целей, состоящий из компонентов, включающих основную цель и подцели, которые задает дедуктивная машина. Контекст — это по существу тоже свя- занный список компонентов, позволяющий следить за связью фактов, получаемых в процессе работы. Несмотря на то что обе такие структуры (список целей и контекст) ранее были названы стеком, мы реализовали их в виде связанных списков. Поскольку стек — это просто связанный список, обращение к которому всегда производится через его первый элемент, мы будем считать термины «список» и «стек» взаимозаменяемыми. В описании картотечно-поисковой дедуктивной машины мы оперировали с колодой сброса, куда помещались «отрабо- 1 Короче говоря, освободившийся компонент ставится в начало списка свободных компонентов.— Прим. ред. 202
тайные» правила. В рассматриваемой программе для реализа- ции той же функции удобно воспользоваться массивом буле- вых переменных. Первоначально каждому элементу такого массива приписывается значение ИСТИНА. По мере того как правила перестают быть «действующими» (т. е. когда в зависимости от контекста определяется, истинны они или ложны), для соответствующего элемента массива правил устанавливается значение ЛОЖЬ. Дедуктивная машина Дедуктивная машина может быть организована в соответ- ствии с псевдокодом, представленным в табл. 5. В качестве примера реализации такого псевдокода на языке Паскаль приведена стандартная программа infer (см. распечатку 2), Распечатка 2. Процедура infer - реализация псевдокода, представленного в таол. 5 на языке Паскаль. PROCEDURE infer; BEGIN get—main—goal; done : = false; WHILE NOT done DO IF found—rule (ptr) THEN CASE rule—value (ptr*.rule—no,reason) OF T: true—rule; F: active—ruleCptr*. rule—no]: = FOE; U: put—on—goal(reason); END ELSE IF found—prompt(attr—list,prmpt—ptr) THEN BEGIN why—ptr: = goal—list; get—answer; END ELSE done:«TRUE; what; IF NOT on—list(main—goal, context, ptr) THEN writein ('Нет значения величины ,’main—goal); END; (*infer*) начинающаяся с вызова функции «получить______основную__ цель» (get_main__goal), которая служит для запроса абонента о том, какова конечная цель консультации. Ответ на этот вопрос записывается в виде глобальной переменной «основ- ная__цель» (main_goal); кроме того, формируется и заносится в массив «список__целей» (goal_list) — структурный компо- нент, содержащий утверждение «основная__цель». 203
Таблица 5. Псевдокод для реализации дедуктивной машины BEGIN поместить конечную цель в стек целей done ::= ложь WHILE NOT done DO IF можно найти правило для анализа THEN значение CASE (вариант) правила OF истина : BEGIN поместить карточку признаков из стека целей и карточку анализируемого правила в стек контекста. IF имелась карточка правила с требуемой целью то поместить ее на самый верх колоды карточек правил. IF пакет целей пуст THEN done ::= истина END ложь : поместить карточку правила в колоду сброса. неизвестное : поместить первый неизвестный признак в стек целей вместе с этой карточкой правила END ELSE IF имеется подсказка, связанная с текущей целью TNEN BEGIN запросить подсказку. поместить ответ в стек контекста вместе с карточкой целей. IF имелась карточка правила вместе с карточкой требуемой цели, то поместить карточку правила на самый верх колоды правил. END ELSE done ::= истина IF конечная цель находится в стеке контекста THEN ответ—значение, связанное с признаком конечной цели. ELSE никакого ответа не могло бы быть найдено. END. Затем начинается выполнение программы в циклическом режиме, продолжающееся до тех пор, пока булева перемен- ная done («выполнено») не получит значения ИСТИНА. В первую очередь с помощью булевой функции «найденное_____ правило» (fqund_rule) определяется, существует ли правило, которое требуется проанализировать. Такая функция прог- раммы реализует цепочку обратных рассуждений; она выпол- 204
няет просмотр выводов всех действующих правил, проверяя их соответствие той цели, которая находится на самом верху стека целей. Если соответствие обнаруживается, то эта функция выдает значение ИСТИНА и формирует указатель к тому компоненту правила, которым обеспечивается подобное соответствие. Если можно найти правило, содержащее текущую цель, то вызывается функция «значение___правила» (rule_value) для нахождения логического значения правила в зависимости от текущего состояния контекста. В системе «МикроЭксперт» используется трехзначная логика, т. е. значение правила может быть истинным, ложным или неизвестным. Истинное значение (чему соответствует буква Т в распечатке) правило имеет, когда всем компонентам его условия соответствуют какие-то компоненты в стеке контекстов. Правило дает ложное значение (обозначается буквой F), если значение какого-то признака, представленного в условии правила, отличается от того, которое у него имеется в контексте. Наконец, считается, что правило имеет неизвестное значение (этому соответствует буква U), когда хотя бы для одного из признаков в условии правила невозможно найти никакого значения в контексте. Функция «значение__правила» форми- рует также указатель к тому компоненту контекста, который позволил определить, каково значение правила: Т, F или U. В том случае, когда эта функция выдает значение F, анализируемое правило отмечается как недействующее прис- воением значения ЛОЖЬ соответствующему элементу масси- ва «действующее___правило» (active_rule). Если с помощью такой функции получено значение U, то признак первого компонента того правила, значение которого невозможно определить, переносится в верхнюю часть стека целей. Наконец, когда получено значение Т, вызывается функция «истинное__правило» (true_rule), которая помещает выводы правила в контекст; данная функция также удаляет верхний компонент из массива «список_целей» и присваивает элемен- ту правила (в массиве «действующие____правила») значение ЛОЖЬ. Она, кроме того, проверяет, не пуст ли массив «список__целей», и, если он пуст, приводит флажок done в состояние ИСТИНА. Если функция «найденное_____правило» не обнаруживает никакого правила, то программа вызывает функцию «найден- ная__подсказка» (found__prompt); последняя отыскивает в списке признаков .вопрос, который следует задать абоненту, чтобы выяснить значение цели. В случае если подсказка для проверяемого признака существует, такая функция выдает значение ИСТИНА и формирует указатель к соответству- ющему элементу в списке признаков. 205
Когда подсказку найти не удается, флажок done приво- дится в состояние ИСТИНА—программный цикл завершает- ся. Обычно это означает, что база данных о правилах противоречива, и программный интерпретатор завершает свою работу, не найдя никакого значения для основной цели. Если же подсказка обнаружена, то вызывается функция «получить__ответ» (get_answer), которая обеспечивает визу- альное отображение этой подсказки на экране дисплея и получение (от пользователя) значения признака цели. Далее программа выполняется таким же образом, т. е. проводится поиск правил для анализа и, если необходимо, запрашивается информация у пользователя; это продолжает- ся до тех пор, пока не будет исчерпан список целей или окажется, что не удается найти необходимой подсказки. Затем программа вызывает оператор what (что?), иницииру- ющий распечатку контекста, и наконец просматривает стек контекста, выдавая соответствующее сообщение, если основ- ной цели в этом контексте нет. Отвечая на вопросы «как?» и «почему?» В ответ на запрос пользователя «почему?» программа выводит на печать ту цель, на которую направлен указатель why__ptr (процедура infer устанавливает этот указатель таким образом, что первоначально он направлен на рассматрива- емую цель). Кроме того, она распечатывает перевод правила, которое обусловило размещение данной цели в списке целей. Номер такого правила был записан в компонент цели, когда он формировался с использованием функции «поместить___ цель_на (put_on__goal). Затем указатель why_ptr направля- ется к следующей цели в списке. Таким образом, все время задавая вопросы «почему?», можно вывести на печать содер- жимое массива «список__целей», а также правила, проанали- зированные системой при достижении целей. При распечатке правила каждому выражению присваива- ется номер, и компонент, отвечающий этому выражению, вносится в некий список. Данный список используется в отклике на запрос «как?». Пользователь может теперь задать вопрос «как?», за которым следует поставить число, пред- ставляющее собой номер строки, распечатанной в ответ на последний вопрос «почему?»1. К примеру, фраза «Как 3» (how 3) означает: «Как обосновывалась (или могла быть обоснована) фраза, в строке 3?» Программа реагирует на фразу «Как 3», просматривая 1 Напомним, что правило распечатывается «в переводе» и при этом каждое выражение оказывается на новой строке.— Прим. ред. 206
стек контекста в поисках компонента, с которым у признака, входящего в рассматриваемую фразу, имеется соответствие. В случае если подобный компонент найден, значение этой фразы сравнивается с соответствующим значением в контек- сте. При совпадении этих значений программа распечатывает правило, которое обусловило размещение указанного компо- нента в контексте. Если номер такого правила -оказывается равным нулю, то программа выводит на печать сообщение о том, что фраза обосновывалась информацией, вводимой поль- зователем. Если компонент, соответствующий признаку из рассматри- ваемой фразы, отсутствует в контексте, это означает, что ее логическое значение еще не было определено. В подобном случае осуществляется просмотр выводов всех правил, с тем чтобы найти значение вывода, соответствующее признаку анализируемой фразы. Если такой вывод обнаруживается, то печатается номер правила, к которому относится вывод. При отсутствии правил, выводы которых соответствуют признаку фразы, печатается сообщение, что данная фраза может быть определена только с помощью информации, введенной поль- зователем. Заключение Как программа «МикроЭксперт», так и описанная здесь система предназначены для тех, кто желает ознакомиться с возможностями экспертной системы. Наша цель состояла в создании лишь «заготовки» экспертной системы, которая построена по модульному принципу, а также обладает откры- той (т. е. рассчитанной на расширение) архитектурой, что позволяет пользователю вносить изменения в систему и экспериментировать с ней. В заключение нам хотелось бы предложить ряд возможных путей модификации описанной нами структуры экспертной системы. Как уже упоминалось, рассуждения в предложенной нами картотечно-поисковой дедуктивной машине проводятся в со- ответствии с алгоритмом обратной цепочки логических выво- дов. Однако не менее эффективен, по-видимому, принцип прямой цепочки рассуждений, или дедукции на основе исход- ных данных. Система, реализующая такой метод, в любой момент сеанса консультации просматривает условия для всех правил, отыскивая правило, для которого условие оказывает- ся истинным, и ^выполняет то, что считается выводом из такого правила. Таким путем в контекст заносится новая информация, после чего весь процесс повторяется. Можно также разработать методы логических рассужде- ний, представляющих собой различные комбинации двух 207
указанных алгоритмов. В предложенной нами системе предус- матривается занесение в контекст только вывода из текущего правила, т. е. правила, из которого следует выполнение текущей цели. Может случиться так, что в результате определения значения для данной цели истинными станут и другие правила, однако наша система не будет принимать их в расчет. Незначительным изменением структуры системы можно было бы добиться того, чтобы она просматривала базу информации о правилах и выявляла, а затем анализировала все правила, в условиях которых заключена текущая цель. Если анализ любого из этих правил приводит к пополнению контекста новыми компонентами, то повторяйте такую проце- дуру до тех пор, пока не прекратится введение подобных компонентов в контекст. Еще одна модификация, которая могла бы повысить эффективность дедуктивной машины, состоит во введении новых предикатов, например «НЕ ЯВЛЯЕТСЯ», и знаков арифметических операций, таких, как « + », «-», «*» и «/». Эти предикаты и символы позволили бы сформировать более сложные взаимосвязи между признаками, но одновременно усложнили бы процедуру анализа правил. Об авторах: Беверли и Уильям Томпсоны—основатели компании «МикроЭксперт системз», специализирующейся в области аппаратных средств искусственного интеллекта для микроЭВМ. Они создали программу «МикроЭксперт», а в настоящее время заканчивают работу над книгой по экспертным системам.
Архитектура машин для искусственного интеллекта Майкл Ф. Диринг По мере того как программное обеспечение для исследова- ний в области искусственного интеллекта (ИИ) все более усложняется, а приложения результатов этих исследований выходят из лабораторий в практику, все большее значение приобретает вопрос о производительности компьютеров и расходах, связанных с вычислениями. Вообще говоря, необходимость повышения эффективно- сти вычислений может быть обусловлена двумя различными причинами. Подчас требуется ускорить процесс вычислений, не считаясь с затратами. Обычно это вызвано необходимо- стью производить вычисления в реальном времени или обус- ловлено использованием современных методов работы, кото- рые предъявляют требования, далеко превосходящие возмож- ности существующих систем как по сложности, так и по времени реакции. Другая причина связана с желанием умень- шить удельные затраты на вычисления. Однако за обеими причинами, как правило, скрыты реальные коммерческие соображения. Возможности для повышения эффективности вычислений в системах ИИ можно изыскать на всех уровнях. Совершен- ствование системы команд наряду с развитием семантики языков искусственного интеллекта позволяет оптимизировать программы в процессе трансляции. Использование одновре- менно работающих машин делает возможным параллельное выполнение написанных на Лиспе программ или обработку декларативных конструкций. При этом возникают вопросы использования И-параллелизма, ИЛИ-параллелизма, а также организации параллельного потока. Заказные СБИС (сверх- большие интегральные схемы), предназначенные для выпол- нения операций, которые являются «узким местом» при вычислениях в задачах искусственного интеллекта, включают аппаратные средства реализации унификаторов, ассоциатив- ную память и аппаратные средства координации процессов параллельного поиска. Многие из этих способов повышения 209
эффективности вычислений совершенно независимы и, взя- тые в совокупности, могут повысить скорость выполнения программ на несколько порядков. Однако дело не всегда обстоит таким образом: некоторые методы оптимизации заставляют компьютер работать последовательным образом, и тогда переход к параллельным операциям теряет смысл. В настоящей статье, которая представляет собой часть работы по созданию развитой параллельной архитектуры для вычислений в области искусственного интеллекта (см. описа- ние проекта FAIM-1), рассматривается ряд способов повыше- ния производительности компьютера и их возможные вза- имосвязи. Краткое изложение проекта FAIM-1 Целью проекта является создание символьного процессора высо- кого класса, который более чем в 100 раз превосходил бы по скорости существующие ныне (например, DEC VAX-11/780) и был бы пригоден для будущих приложений исследований в области искус- ственного интеллекта. FAIM-1—многопроцессорная система, представляющая собой набор одинаковых элементов — гектагонов, которые объединены в сеть. Каждый гектагон может, подобно отдельному компьютеру, выполнять в последовательном режиме оттранслированную програм- му, хранящуюся в его памяти. Гектагоны взаимодействуют друг с другом посредством сообщений, которые они передают и принимают через порты ввода-вывода. Каждый гектагон имеет шесть таких портов, способных работать одновременно. Архитектура системы FAIM-1 позволяет объединять любое количество гектагонов, при этом каждый из них оказывается связан- ным с шестью соседними. Сеть гектагонов способна обеспечить параллелизм очень высокого уровня и поэтому является прекрасным инструментом для реализации параллельных вычислений в будущих системах искусственного интеллекта. Более того, каждый гектагон сам представляет собой шесть работающих параллельно подсистем, каждая из которых осуществляет определенную процедуру обработ- ки символьной информации. Гектагон состоит из шести независимых подсистем: FRISC, SRAM, ISM, СхАМ, SPUN и Почта. Три из них (ISM, СхАМ и SRAM) являются специальными системами, организующими «разум- ную» работу памяти; остальные осуществляют связь между гектаго- нами (Почта), выполнение программ (FRI$C) и унификацию (SPON). Опишем вкратце каждую из этих подсистем. FRISC. Процессор с очень сильно ограниченной системой ко- манд соответствует центральному процессору в обычных компьюте- рах. Это машина со стековой организацией, которая использует 20-разрядные слова, состоящие из 16-разрядного поля данных и 4-разрядного поля меток. Биты меток и поддерживаемые аппаратно операции над ними обеспечивают выполнение «универсальных» проце- дур. 210
SRAM. Процессор FRISC рассматривает большинство структур данных как объекты; обычная память, объединенная с небольшим конечным автоматом (все это и называется SRAM), представляет собой объектно-ориентированную память для системы FRISC. Напри- мер, используя биты меток, SRAM может организовать цепь указате- лей с целью найти объект, запрошенный процессором FRISC. ISM. Устройство, хранящее команды и с высокой скоростью передающее их процессору. Оно берет на себя функции вычисления адреса очередной команды, что обычно делается процессором. СхАМ. Подсистема контекстно-адресуемой памяти представляет собой аппаратную реализацию важных функций сопоставления, кото- рые часто встречаются в программах, осуществляющих обработку символов. Данные и запросы, обрабатываемые системой СхАМ, имеют вид S-выражений. Каждый слот, следовательно, может быть либо структурой, либо атомом. К атомам относятся символы, числа, переменные и «все что угодно». Система СхАМ выполняет четыре команды: найти соответствие, установить соответствие, добавить структуру и удалить структуру. Система сама следит за заполнением своей памяти и автоматически удаляет «мусор», т. е. уже использо- ванные фрагменты. SPUN. Конвейерный унификатор, обеспечивающий аппаратную реализацию логического программирования. СхАМ выдает очередное правило, которое следует проверить, но не проводит полной унифика- ции, поскольку не исследует значения переменных. Устройство SPUN исследует запрос и поток сопоставляемых структур, находит пере- менные, которые следует сопоставить, получает их текущие значения из памяти SRAM и заканчивает унификацию. При этом может произойти означивание переменных — в этом случае SPUN посылает их значения обратно в SRAM. В более сложных случаях SPUN прерывает FRISC, обращаясь к нему за помощью. Почта. Гектагоны осуществляют связь между собой, посылая Друг другу сообщения. Задача Почты — следить за этим процессом. Если принятое каким-либо гектагоном сообщение адресовано не ему, а другому гектагону, не являющемуся его непосредственным сосе- дом, то Почта пересылает сообщение по адресу—как правило, тому соседу, который находится со стороны пункта назначения адресата. Сообщения в принципе могут иметь произвольную длину, факти- чески же они передаются в виде пакетов фиксированной длины. Некоторые распространенные заблуждения Часто высказываются неверные соображения относитель- но того, что следует делать для повышения эффективности вычислений в системах ИИ. Поскольку программирование задач искусственного интеллекта в основном ведется на Лиспе, некоторые специалисты считают, что главное — это ускорить выполнение программ на Лиспе. Однако при таком подходе остаются без внимания другие легко реализуемые возможности * ускорения вычислений. 211
Другие специалисты по вычислительной технике не видят смысла заниматься чем-либо, кроме фундаментальной пробле- мы параллельных вычислений. Иначе говоря, они придержи- ваются мнения, что очень сложная в действительности задача декомпозиции произвольных вычислений из областей ИИ — что обеспечивает их эффективное выполнение с помощью тысяч работающих параллельно процессоров—имеет стандарт- ное решение. Однако в большинстве программ—даже в тех, которым присущ значительный параллелизм,— имеются уча- стки, требующие проведения последовательных вычислений. В частности, во многих программах, использующих паралле- лизм, приходится накапливать результаты одного этапа па- раллельных вычислений, анализировать их и лишь затем приступать к следующему этапу. И нередко на выполнение такой последовательной части уходит основное время работы программы. Поэтому нельзя оставлять без внимания вопрос о том, как следует подбирать языки программирования и машины, чтобы максимально ускорить последовательные вы- числения. Другими словами, возможна такая ситуация: когда будет создана дорогостоящая машина параллельного дей- ствия, в сотни раз превосходящая по быстродействию преж- ние образцы, некоторые машины последовательного действия (скажем, благодаря использованию нового транслятора или микрокода) «обгонят» ее по скорости. К примеру, написанный в машинном коде унификатор для языка искусственного интеллекта Cristal имеет скорость действия на два порядка выше, нежели написанный на Лиспе унификатор предшеству- ющего языка PEARL [3]. Совершенствование программного обеспечения Одним из способов развития языков искусственного интел- лекта могла бы служить их прямая трансляция в машинный код. Большинство «языков» ИИ представляет собой не собственно машинные языки, а пакеты программ, надстроен- ные над одним из существующих языков—обычно Лиспом Такой путь открывает широкие возможности для быстрой разработки прототипа языка и требует значительно меньших затрат, чём создание отдельного транслятора, однако он не ведет к высокоэффективной реализации языка. Учитывая, что задача ускорения вычислений в приложениях искусствен- ного интеллекта приводит даже к созданию специальных параллельных процессоров, было бы неразумно отказаться от прямой трансляции языков в рамках таких процессоров. Здесь пригодится большой объем накопленных знаний о трансляции, открывающих новые .возможности для повыше- ния эффективности вычислений. (Отметим, например, более 212
чем 100-кратное различие в скоростях большинства интерпре- таторов языка Пролог, написанных на Лиспе, и транслятора с Пролога, созданного Уорреном для машины DEC-20 [17],) Прежде всего следует убедиться, что язык вообще подда- ется трансляции. Поскольку большинство языков искусствен- ного интеллекта интерпретируемы, возможности их трансля- ции исследованы недостаточно. Средства языка, которые казались эффективными при интерпретации, после трансля- ции (если вообще их трансляция осуществима) могут привести к очень медленной работе. Правильный выбор средств с учетом возможной трансляции способствует повышению эф- фективности выполнения программ. Другая проблема, касающаяся многих языков искусствен- ного интеллекта, связана с отсутствием в них достаточного количества стандартных средств, важных для большинства приложений. Это объясняется тем, что пользователь имеет возможность разрабатывать собственные программные сред- ства, которые порой могут быть весьма эффективными, однако, как правило, пользователь справляется с этой рабо- той куда хуже, чем разработчик языка. Например, язык PEARL не имеет средств для доказательства теорем и реализации систем прямого и обратного вывода; разработка этих средств предоставляется пользователю. В отличие от этого система MRS [11], имея определенные управляющие структуры, которые позволяют пользователю создавать соб- ственные системы поиска, содержит также ряд встроенных систем —начиная с обратного вывода и кончая полной систе- мой доказательства теорем, основанной на методе резолюции. Богатая библиотека эффективных процедур общего характера могла бы значительно ускорить работу обычных программ, предназначенных для пользователя, не говоря уж об их разработке. Проблемы разработки аппаратуры Неоднократно отмечалось, что наборы команд типичных компьютеров мало пригодны для создания программного обеспечения систем искусственного интеллекта, однако прак- тически не предпринималось попыток объяснить, почему это так. Что касается машин предыдущих поколений, то отмеча- лись характерные для них жесткие ограничения на адресное пространство и отсутствие достаточной свободы в манипули- ровании указателями [6]. Но как соотносятся с Лисп- машинами [13, 15] современные компьютеры, такие, как DEC VAX, Motorola 68000, National Semiconductor 16000 и различ- ные машины с упрощенным множеством команд (RISC)? Стремясь разобраться в проблемах разработки систем ко- 213
манд, я исследовал ряд версий Лиспа и отдельные детали их реализации [5]. В частности, я выяснил, что чрезвычайно важно знать, насколько мощные программные средства жела- тельно иметь в каждом конкретном случае. Так, вопреки ожиданиям, при выполнении одной большой прикладной программы на компьютере DEC VAX-11/780 диалект Лиспа Franz LISP [8] оказался не на много медленнее, чем Zetalisp, используемый на машине Simbolics 3600 \ При этом, правда, в Franz LISP были отключены «универсальные» функциональ- ные средства2 и почти все проверки типов данных, которые в диалекте Franz LISP—более бедном программными средства- ми— отсутствовали. Считая эти возможности важными, я исследовал затраты на их реализацию при различных архитек- турах машин. Гибкая работа Лиспа обеспечивается динамической про- веркой типов данных и использованием «универсальных» функций. Хранение в памяти типа объекта вместе с самим объектом ведет к тому, что в процессе работы тип всегда находится под рукой, поэтому при разработке на языке Лисп особенно удобным становится использование меток- признаков. Использование признаков означает, что скорость работы процессора при выполнении «универсальной» задачи на Лиспе зависит от того, насколько эффективно процессор способен имитировать (эмулировать) память с метками. Таблица 1. Время (в микросекундах) выполнения функции foo на трех диалектах Лиспа шестью различ- ными процессорами (defun foo(x) (+(car х) (cdr х))) Компьютер Zetalisp Franz LISP PSL VAX 53,8 13,9 5,6 68000 65,2 43,6 5,8 68010 68,6 43,6 10,6 68020 16,1 19,9 3,1 MIT CADR 19,0 — — 3600 6,4 — 1 Первая машина—это так называемая супер-мини общего назна- чения, а вторая — специально ориентированная на Лисп система.— Прим. ред. 2 Речь идет, например, об арифметических «универсальных» функциях, в качестве аргумента которых одинаково годятся целые, дробные, действительные и комплексные числа.— Прим. ред. 214
Я провел серию экспериментов по сравнению версий Лиспа, работающих на машинах с различными наборами команд. Для примера в табл. 1 показано время выполнения простой лисповской программы, содержащей ряд стандарт- ных функций, таких, как CAR, CDR, «+», а также операция обращения к функции и возврата. Исследование более сложных функций дало примерно такие же результаты. Как и предполагалось, разброс во времени составил более 50%. Небольшие различия в работе трансляторов и в системе команд привели к значительным различиям в скорости выполнения программы. Для трансляции функции foo были использованы суще- ствующие трансляторы с диалектов Franz LISP и PSL для компьютеров DEC VAX и Motorola 68000. В целях повышения быстродействия проверка типов была отключена. (Ни Franz LISP, ни PSL не проверяли, являются ли аргументы функции «+» малыми целыми; Franz LISP осуществлял конт- роль за переполнением, a PSL — нет.) Приведенные в таблице значения продолжительности счета получены путем анализа созданных трансляторами кодов на языке ассемблера с учетом реального времени выполнения их элементов на машине. Значения времени для диалекта Zetalisp на машинах 3600 и CADR установлены из наблюдений за реальными системами. Операции, подобные тем, что использовались в диалекте Zetalisp на машинах DEC VAX и Motorola 68000, кодировались вручную, а время определялось так же, как для PSL и Franz LISP. Процессоры 68000 и 68010 работали с тактовой частотой 10 МГц в безостановочном режиме. В процессоре 68000 использовалось 24-разрядное адресное про- странство, причем 8 старших разрядов в слове отводилось под метки-признаки. В процессоре 68010 использовался 32- разрядный адрес, и, прежде чем использовать слово в качестве адреса, с помощью некоторой команды AND ликви- дировались метки. Значения времени для процессора 68020 рассчитывались в предположении об использовании кэш- памяти в соответствии с данными инструкции по этой машине, и они не столь точны, как аналогичные данные для остальных машин. Предполагалось, что процессор 68020 работает с тактовой частотой 16 МГц при использовании внешней кэш- памяти объемом в 16 килобайт и специального устройства управления памятью, что обеспечивало время обращения к памяти, равное 185 нс. (Этот процессор имел также неболь- шую внутреннюю кэш-память.) Другие эксперименты были связаны с изучением требова- ний, которые следует предъявлять к архитектуре машин для ускорения выполнения ряда операций, не реализованных непосредственно в Лиспе, например, таких, как унификация и 215
ассоциативный поиск. Когда программы на языках искус- ственного интеллекта транслируются целиком, эти две опера- ции часто представляют большую трудность для вычислений. Для систем команд самого микропроцессора требования, связанные с этими операциями, оказались такими же, как и для стандартных функций Лиспа: быстрая реализация схемы оперирования с метками. Говоря точнее, чтобы сделать существующие процессоры более пригодными для Лиспа (так же, как и для языков Пролог, Kripton, MRS, PEARL и т. д.), необходимо осуществление следующих команд и возможно- стей. 1. «Переход по группе разрядов»: команда выделяет ряд последовательно расположенных разрядов операнда, добавля- ет эту последовательность к базовому адресу таблицы перехо- дов и осуществляет косвенную передачу управления. Это необходимо для ускорения операций над метками при провер- ке типов использования «универсальных» функций и при создании унификатора. 2. «Переход по объединению двух групп разрядов»: те же действия по отношению к двум операндам (необходимость этого вызвана теми же причинами, что и в случае с одним аргументом). 3. Система адресации, используемая процессором, должна исключать старшие разряды адреса. Это позволит использо- вать старшие разряды 32-разрядного слова для хранения меток. В программе, подобной той, которую выдает транслятор с диалекта Zetalisp, более 30% времени работы процессора 68000 уходит на эмуляцию команд, подобных описанным выше. Для отделения разрядов, хранящих признаки, требует- ся примерно 10% времени. Таким образом, согласно оценкам, аппаратная реализация этих возможностей в существующих процессорах позволила бы ускорить почти вдвое работу Распечатка 1. Лисповская функция CAR диалекта Zetalisp, реализо- ванная на ассемблере для процессора МС 68010. Фрагменты програм- мы, заключенные в рамку, могут быть заменены одной командой из расширенного множества команд, что сократит время выполнения программы. ;Чтобы получить CAR, выполняется несколько команд ;после чего совершается переход к подпрограмме. ;Ячейка CONS для размещения функции CAR находится аО. ;при вызове функции CAR используется метка, хранящаяся в ;старших разрядах аО. 4 moyel аО, d2 аргумент копируется в d2 24 Isll #8, d2 ;сдвиг копии для удаления первых ;8 разрядов 216
10 Isll #1, d2 ;сдвиг для удаления последнего разряда 14 andl #0xlF0, d2 ;выделяется метка 4 movel #d2, a2 щересылка метки в ад- ресный регистр 18 jsr CAR (a2) косвенная передача управления в зависимости ;от типа ;после возврата результат будет в регистре а2 Подпрограмма CAR CAR+DTP-CONS: ;вход в процедуру CAR ;для стандартного случая ;Мы придем сюда, если аргумент CAR имеет тип «указатель к ячейке ;CONS». Предполагается, что аргумент является списком ;Все остальные варианты означают ошибку ;идем по указателю к CAR 4 mo veal аО, d2 ;аргумент копируется в d2 14 andl #0xFFFFFF, d2 ;стирание метки 4 mo veal d2, a2 ;d2 помещается в адресный регистр 12 mo veal (a2), a2 ;идем по указателю ;передача управления функции TRANSPORT с использованием в ;качестве базы метки, содержащейся в старших разрядах а2 4 movel а2, d2 ;копия аргумента пересылается в d2 24 Isll #8, d2 удаление первых 8 разрядов 10 Isll #1, d2 удаление последнего разряда 14 andl #OxlFO, d2 ;выделение метки 4 movel d2, a3 ;метки пересылаются в адресный регистр 10 jmp TRANSPORT (a3) щереход к таблице CAR в зависимо- ;сти от типа результата ;с целью обнаружения скрытых указателей и т. п. TRANSPORT+NORMAL: ;место перехода в случае нормального содержимого ячейки CONS 8 rts ;воЗврат 128 тактов. При тактовой частоте 10 МГц это составляет 18,2 мкс диалектов Лиспа (таких, как Zetalisp), осуществляющих про- верки типов. Эти оценки получены путем реализации вручную стандартных функций диалекта Zetalisp на существующих микропроцессорах. Например, в распечатке 1 представлена программа на языке ассемблера, реализующая функцию CAR. 10--2596 217
В левой колонке показано число тактов, приходящихся на данную команду. Выделенная часть программы может быть заменена одной командой (см. далее распечатку 2). На распечатке 2 показана программа, реализующая функцию CAR на процессоре 68010 с двумя усовершенствова- ниями. Первое состоит в том, что 7 старших разрядов адреса игнорируются системой виртуальной памяти. Второе заключа- ется в том, что добавлена команда «переход по группе разрядов». Эта команда выделяет последовательность битов из второго аргумента так, как указано в первом аргументе (формат: <#первый-разряд, ширина-поля>), суммирует эту последовательность с третьим аргументом (базовый адрес таблицы переходов) и осуществляет косвенную передачу управления по этому адресу. [Процессор 68020 имеет быстро- действующую команду выделения битов. Это обеспечивает его большое превосходство в скорости (по сравнению со старым процессором 68000) при выполнении лисповской прог- раммы, что видно из табл. 1.] Распечатка 2. Распечатка, сделанная в предположении, что в систему команд процессора внесены изменения. ;теперь функция CAR, написана с использованием новых команд ;перехода к подпрограмме по индексу. управление передается к подпрограмме CAR по метке, т. е. по ;старшим битам аО. 22 extract-dispatch <#26, #6>, аО, CAR подпрограмма CAR CAR+DTP-CONS: ;вход в процедуру CAR ;для стандартного случая ;идем по указателю на CAR 12 moveal (а2), а2 ;6 старших разрядов, аО игнорируются ;передача управления в подпрограмму TRANSPORT с использованием ;в ;качестве базы метки, содержащейся в старших разрядах а2 22 extract-dispatch <#26, #6>, а2, DISPATCH TRANSPORT+NORMAL: ;место перехода в случае нормального содержимого ячейки CONS 8 rts ;возврат 64 такта. При тактовой частоте 10 МГц это составляет 6,4 мкс, что в 2,8 раза быстрее, чем в предыдущем случае (распечатка 1) В новых компьютерах, разрабатываемых специально для систем искусственного интеллекта, все эти возможности могут быть реализованы аппаратно. При использовании архи- тектуры, связанной с метками, многие «универсальные»1 1 См. примечания к с. 214. 218
операции, например сложение, не требуют обращения к подпрограмме. Вместо этого процессор может проверить метки аргументов операции сложения и, если они являются простыми целыми числами, просто выполнить сложение. Если же аргументы выражаются числами более сложного вида, то процессор организует программное прерывание, передавая управление определенной подпрограмме. Кроме того, в новых типах машин было бы полезно иметь возможность быстро прослеживать косвенные ссылки, как это сделано в машине DEC PDP-10 и в специальных Лисп-машинах. Дальнейшее усовершенствование систем команд для нужд искусственного интеллекта скорее всего пойдет по пути добавления отдель- ных специализированных процессоров, а не простого добавле- ния команд. Такой подход уже применяется во многих микропроцессорах, где арифметические команды для чисел с плавающей запятой выполняются устройством, которое мож- но считать присоединенным процессором. К важным классам специализированных процессоров относятся конвейерные уни- фикаторы, системы ассоциативного поиска, системы межпро- цессорной коммуникации и специальные процессоры, предназ- наченные для обработки сигналов в системах машинного зрения и восприятия речи. Изучение «заказной» системы команд компьютера FAIM-1 показало, что работа одного процессора может тормозиться памятью DRAM (dynamic random-access read/write memory— динамическая память произвольного доступа); более того, это имеет место даже при использовании большой кэш-памяти, что весьма существенно. Он говорит о том, что создание параллельно работающих машин, использующих одну боль- шую общую память,— неверный путь, ибо доступ к памяти будет сдерживать их работу. Параллелизм—большие надежды Эффективный способ повышения производительности компьютера специалисты видят в использовании параллелиз- ма. Однако на практике основные усилия разработчиков сосредоточены на создании все более быстродействующих однопроцессорных машин. Сейчас, когда дальнейшее совер- шенствование процессоров последовательного действия связа- но с серьезными технологическими трудностями, паралле- лизм, возможно, остается единственным способом повышения эффективности вычислений. К сожалению, на этом пути возникают новыё проблемы — касающиеся организации вы- числительной системы. Прежде всего, понятие много процессов отнюдь не тожде- ственно по смыслу понятию много процессоров. Есть алгорит- 10* 219
мы, работа которых естественно описывается в виде несколь- ких одновременно протекающих процессов (например, алго- ритмы чтения и печати), но реализация этих алгоритмов на машинах параллельного действия оказывается невозможной или почти невозможной. То, что алгоритм может быть сформулирован через понятия параллельных вычислений, еще не означает, что машина параллельного действия способна выполнить этот алгоритм существенно быстрее, чем машина последовательного действия, имеющая один процессор. Чтобы судить, в какой степени задача поддается парал- лельной обработке, нужно сравнить время выполнения этой задачи одним процессором со временем ее реализации с помощью п параллельно работающих процессоров, с указани- ем того, для каких п они оказываются быстрее. Максимум, на что можно рассчитывать,— это и-кратное увеличение скорости, однако практически оно достигается крайне редко (что во многом обусловлено увеличением накладных расходов и затруднением с обменом информацией между процессора- ми). Максимальное увеличение быстродействия, которое мо- жет быть достигнуто при использовании любого числа про- цессоров, показывает, насколько параллелизм присущ данной программе. К сожалению, для большинства программ, напи- санных на традиционных языках программирования, исполь- зование параллелизма в лучшем случае обеспечивает, по- видимому, лишь четырехкратное ускорение [10]. Причина такого неожиданно низкого результата кроется в стиле программирования, присущего традиционным языкам. Впро- чем, в некоторых особых случаях можно надеяться, что использование новых языков, основанных на идеях паралле- лизма, позволит создавать алгоритмы, более пригодные для работы в параллельном режиме. В трансляторах для машин параллельного действия можно было бы организовать И-па- раллелизм, ИЛИ-параллелизм и параллельные потоки в тех случаях, когда языки искусственного интеллекта позволяют использовать эти конструкции. Однако пока еще трудно судить, насколько использование подобных средств ускорит процесс вычислений. Проблемы возникают также в связи с необходимостью комплексного рассмотрения вопросов, касающихся паралле- лизма. Прежде чем создавать компьютер параллельного действия, нужно не только промоделировать его работу, но и продумать способы создания больших программ для этого компьютера. Это позволит выявить его возможные недостат- ки до начала весьма трудоемкого этапа создания соответству- ющей аппаратуры. При определении временных характери- стик моделируемой системы следует учесть потери, обуслов- ленные взаимодействием различных элементов аппаратуры, 220
иначе результаты моделирования будут весьма далеки от действительности. Типичным примером программной разработки, осуще- ствленной без серьезного изучения возможностей аппарату- ры, могут служить предложенные в последнее время парал- лельные версии языка Лисп [9]. Разработчики выявили те места в лисповских программах, в которых использование нескольких процессоров могло бы оказаться полезным, одна- ко они не учли дополнительных накладных расходов. Обычно предполагается, что несколько процессоров совместно ис- пользуют большую главную память, где хранятся списки и другие объекты языка Лисп. Между тем такое предположе- ние правомерно лишь при условии, что обращение к памяти осуществляется бесконечно быстро, а это так же невероятно, как и допущение о бесконечно быстрой работе самого процессора. Дело в том, что один современный лисповский процессор может работать гораздо быстрее, чем осуществля- ется обслуживание его системой памяти. Поэтому добавле- ние новых процессоров не приведет к увеличению производи- тельности. Разработчики параллельных версий Лиспа по ряду причин не учли этого факта. Одна из причин, возможно, состоит в том, что в существующих версиях Лиспа для процессора 68000 память не является ограничением. Другая причина связана с возможностью использовать кэш-память, что позво- ляет сделать производительность памяти менее критичной. Однако даже при использовании кэш-памяти количество добавленных процессоров не может быть безграничным: при эффективности поиска, достигающей 90%, в принципе удается обеспечить одновременную работу лишь 10 процессоров. Что можно сказать - об архитектуре, предполагающей использование тысяч процессоров? Эксперименты показыва- ют, что один процессор способен работать значительно быстрее, чем- позволяет память: чтобы процессор мог рабо- тать в полную силу, приходится использовать кэш-память. Это означает, что пока процессоры работают значительно быстрее, чем память; поэтому обмен данными между процес- сорами (если их достаточно много) должен происходить по специальным каналам связи. Другими словами, архитектура типа MIMD (архитектура с множеством потоков команд и множеством потоков данных) с единой общей памятью не пригодна для параллельных вычислений. Это важно учиты- вать в некоторых методах построения искусственного интел- лекта, например в методе «доски 'объявлений» или систем продукций, которые — в их современном виде — используют память для связи между различными задачами. Из сказанного, однако, не следует, что распределение 221
лиспоподобных задач между сотнями процессоров невозмож- но. Существует немало способов объединить несколько про- цессоров, не подключая их при этом к одной общей памяти. Более оправданным кажется изучение таких методов органи- зации памяти, как И-параллелизм, ИЛИ-параллелизм и ис- пользование параллельных потоков. Вместе с тем следует отметить, что реализация названных методов связана с большими накладными расходами, и, следовательно, переход к параллельным вычислениям не может быть решен простым указанием, что аргументы функций должны вычисляться параллельно. Чтобы определить, при каком размере программ возможно параллельное вычисление, нужно изучить техноло- гию создания аппаратуры и только после этого решать, каким образом трансляторы с языков искусственного интеллекта будут делить программы на сегменты соответствующего размера. Использование заказных СБИС Большие надежды на повышение эффективности вычисле- ний связаны с использованием СБИС (сверхбольших интег- ральных схем) для ускорения работы отдельных функций. Желательно создать кремниевые элементы, выполняющие операции, которые часто встречаются в различных задачах искусственного интеллекта, но осуществление которых пока сопряжено со значительными трудностями. Такого рода операции можно разделить на четыре наиболее важных класса: символьное сопоставление абстрактных объектов, семантическая ассоциативная память, средства взаимодей- ствия параллельно работающих процессоров и преобразование сигналов в символы. Сопоставление и выбор Сопоставление образцов — это достаточно универсальная и распространенная операция. В большинстве языков програм- мирования, используемых в искусственном интеллекте, суще- ствует одна или несколько функций, сопоставляющих объек- ты, имеющие определенную структуру (например, фреймы). Некоторые из этих функций достаточно специальны (и потому сравнительно просты), другие же могут включать процедуру унификации. Чтобы аппаратно реализовать проце- дуру сопоставления, необходимо четко определить семантику последней. Объекты искусственного интеллекта, служащие для пред- ставления знаний, как правило, имеют сложную структуру: они могут, например, содержать переменные, значения кото- рым присваиваются в результате побочного эффекта при сопоставлении. Процедура сопоставления таких объектов 222
довольно сложна. Чтобы пояснить ее суть, опишем вкратце схему сопоставления, называемую унификатором. (Более полное описание унификатора можно найти в любом руковод- стве по языку программирования Пролог.) Лучше всего здесь использовать рекурсивное описание. 1. При сопоставлении объектов, имеющих структуру (т. е. не скаляров), необходимо рекурсивно сопоставить все их компоненты (или слоты). Считается, что объекты сопостави- мы, если сопоставима каждая пара слотов. В противном случае объекты несопоставимы и все побочные эффекты, возникшие в процессе сопоставления, аннулируются. 2. Сопоставление скаляров (целых или вещественных чи- сел, атомов, символов и т. д.) сводится к простой проверке на равенство. 3. Если один из двух сопоставляемых объектов является переменной, следует проверить, определено ли ее значение. Если переменная уже получила значение, сопоставление продолжается, причем вместо самой переменной используется это значение. Если же значение переменной еще не определе- но, то таковым становится объект, с которым переменная сопоставляется,— и сопоставление считается прошедшим успешно. 4. Если оба объекта являются переменными, не имеющи- ми значений, то эти переменные связываются между собой таким образом, что если одна из них в дальнейшем получит значение, то это же значение автоматически присваивается и другой. Операция сопоставления дает положительный или отрица- тельный ответ на вопрос, сопоставимы ли два объекта. Положительный ответ влечет за собой присвоение перемен- ным значений, вследствие чего объекты становятся одинако- выми в наиболее общем, разумном, смысле этого слова. Во многих языках искусственного интеллекта процедура сопоставления .следит также за тем, чтобы в результате означивания переменных не возникало циклических списков, сопоставляет сегменты (подобно тому, как это делается в Сноболе), проводит сопоставление множеств и т. д. Применение процедуры сопоставления к объектам, входя- щим в базу данных, называется выбором. В этом случае сопоставление становится внутренней циклической операцией, и нуждается как таковое в оптимизации. Лучшим решением было бы схемно объединить сопоставление с памятью, в результате чего выбор превращается в способ обращения к CAM-памяти (content-addressable memory—память, адресу- емая по содержанию). Очень важно правильно выбрать функцию, осуществляющую сопоставление. Для получения памяти с приемлемой плотностью записи необходимо, чтобы 223
часть микросхемы, осуществляющая сопоставление, была не слишком велика по сравнению с частью, осуществляющей хранение информации. К сожалению, унификатор в полном объеме — не говоря уж о более сложных функциях сопостав- ления— потребовал бы слишком больших добавок к схемам памяти. Однако если встроить в память процедуру, которая частично реализует унификацию, то CAM-память могла бы служить предварительным фильтром для унификатора. Основная сложность процедуры унификации связана с необходимостью означивать переменные. Квазиунификатор делает то же, что и унификатор, с той лишь разницей, что означивания переменных не происходит, т. е. в случаях 3 и 4 приведенного выше описания ничего не делается— переменные считаются сопоставимыми с любыми объектами. Квазиунификатор — наиболее эффективный частный вариант унификатора, работа которого не зависит от контекста. Поэтому квазиунификатор вполне приемлем для совмещения с памятью, построенной на основе СБИС. Системы ассоци- ативной памяти, в которых для сопоставления используется квазиунификатор, называются СхАМ-памятью (context- addressable memory — контекстно-адресуемая память). С точки зрения разработчика аппаратуры, использование машинной архитектуры с ассоциативной памятью означает передачу памяти части функций процессора. Чем больше аппаратуры занято сопоставлением, тем больше данных мо- жет быть просмотрено одновременно, и это уменьшает время поиска в расчете на бит информации. Однако справедливо и другое: чем выше степень использования сопоставления, тем меньшая часть аппаратуры связана непосредственно с хране- нием данных и, следовательно, тем ниже плотность записи в ассоциативной памяти. О степени перераспределения аппара- туры между процессором и памятью можно судить по тому, какая часть микросхемы связана с передачей данных; это считается весьма важным показателем. Таким образом, ассо- циативная память может оцениваться по плотности записи (количество битов информации на одну микросхему) и по эф- фективности поиска (количество битов информации, получен- ных за единицу времени и приходящихся на одну микросхему). В своих исследованиях я рассматривал два способа орга- низации ассоциативной памяти, при которых для сопоставле- ния используется квазиунификатор. В одном случае схемы сопоставления были объединены со схемами памяти, в дру- гом—использовалась процедура хеширования1. Хеширование 1 В самом простом виде хеширование, или метод «функции расстановки», состоит в применении к коду значения запоминаемого объекта некоторой стандартной числовой функции, значениями кото- 224
было применено потому, что в прошлом оно часто заменяло САМ-технологию [7]. Эти два способа состоят в следующем. 1. Поиск по принципу «грубой силы»: вся память просмат- ривается несколькими параллельно работающими устройства- ми сопоставления. Для такого перебора была разработана архитектура, использующая заказные СБИС памяти со встро- енным квазиунификатором. 2. Использование хеширования: объекты, к которым сле- дует применить операцию выбора, подвергаются хеширова- нию, затем к списку объектов, извлеченных из памяти, применяется процедура сопоставления. Примером такой орга- низации поиска может служить реализованная на СБИС процедура хеширования языка PEARL. Память в этой систе- ме построена на стандартных микросхемах DRAM. На рисунках 1 и 2 представлены результаты компромис- сного выбора между хранением и обработкой информации при использовании контекстно-адресуемой памяти. На рис. 1 по- казаны возможные значения плотности записи и эффективно- сти поиска. Контекстно-адресуемой памяти, использующей хеширование, соответствует на графике одна рабочая точка, поскольку время поиска и плотность записи в этом случае по существу не зависят от объема памяти. Параметры контек- стно-адресуемой памяти, основанной на переборе, могут иметь различные значения в зависимости от того, как выбраны пропорции между обработкой и хранением информа- ции. Линии на рисунке соответствуют двум различным архи- тектурам, основанным на переборе. Одна из них обеспечивает более высокую плотность записи, однако это преимущество почти всюду (см. график) сопровождается уменьшением из-за меньшей эффективности поиска. Ни одну из этих архитектур нельзя считать идеальной: выбор той или иной зависит от желаемой величины отношения плотности записи к эффектив- ности сопоставления. На рис. 2 явно виден недостаток кон- текстно-адресуемой памяти, использующей хеширование: ми- нимально возможный размер системы слишком велик для ряда приложений. Таким образом, компромисс между двумя описанными архитектурами сводится к компромиссу между плотностью записи и минимально допустимым размером памяти. В типич- ном случае оба варианта позволяют провести унификацию всей внутренней памяти при запросе средних размеров (S- выражение длины 16) за 5 мкс. Плотность записи, обеспечи- ваемая контекстно-адресуемой памятью, использующей пере- рой являются адреса в памяти компьютера. В дальнейшем эта функция позволяет «за шаг» извлечь значение объекта из памяти.— Прим. ред. 225
Рис. 1. Связь между плотностью записи и эффективностью поиска в системах СхАМ. Минимальная конфигурация системы в битах Рис. 2. Минимально возможный размер систе- мы СхАМ с хешированием. Как можно ви- деть, для некоторых приложений он слишком велик. бор, примерно в восемь раз ниже, чем при использовании стандартных однотранзисторных схем DRAM. В варианте с хешированием применялись стандартные схемы DRAM, что обеспечило высокую плотность записи. Однако минимальный объем памяти; необходимый для работы, такой системы, реализованной на стандартных микросхемах DRAM в 256 ки- лобайт, составляет 10 мегабит, в то время как для системы 226
контекстно-адресуемой памяти, использующей перебор, до- статочно значительно меньшего объема. Чрезвычайно высокая скорость работы (5 мкс) позволяет надеяться на значительное повышение эффективности систем, основная трудность в работе которых связана с извлечением информации из базы данных. Однако выбор подхода должен в значительной мере определяться структурой системы. Если вы создаете большую машину последовательного действия, то вам подойдет архитектура, использующая набор процессоров хеширования и стандартные схемы DRAM, однако если вы имеете дело с большим набором процессоров со встроенной памятью, то лучше остановить выбор на контекстно- адресуемой памяти, основанной на переборе. Комбинируя контекстно-адресуемую память с различными программными средствами, можно создавать процедуры сопо- ставления с любым соотношением между мощностью, сто- имостью и быстродействием. Примером может служить ма- шина FAIM-1. Каждый из многих процессоров снабжен здесь параллельно работающими микросхемами контекстно- адресуемой памяти, реализующими квазиунификатор, один конвейерный унификатор в полном объеме и программные средства для более сложных функций сопоставления (с использованием предикатов и демонов). Благодаря такой аппаратно-программной иерархии простые функции сопостав- ления (такие, как лисповская функция EQUAL) работают быстро, в то время как более сложные функции (например, используемые в языке KRL—см. [1]) из-за наличия програм- мной компоненты осуществляются несколько медленнее. Из всего сказанного можно заключить, что сопоставле- Таблица 2. Список операций сопоставления, используемых в искус- ственном интеллекте, и соответствующих типов данных в порядке возрастания сложности Операция сопоставления Тип данных Команда сравнения 32-разрядные слова Лисповская функция EQ Лисповские, атомы Лисповская функция EQUAL S-выражения КвазиунификДтор S-выражения с забывающими переменными Унификатор S-вы^ажения с произвольными переменными Унификатор с предикатами S-выражения с переменными и предикатами Произвольная функция Произвольный тип данных 227
ние — достаточно распространенная операция, вполне пригод- ная для реализации на СБИС, однако сложность функции сопоставления может быть различной. В табл. 2 представле- ны в порядке возрастания сложности различные операции сопоставления и соответствующие типы данных. Машины высокого класса, предназначенные для задач искусственного интеллекта, должны тщательно разделить эти функции на компоненты, реализуемые программно, и компоненты, реали- зуемые аппаратно. Связь между параллельно работающими процессо- рами Как уже отмечалось, связь между процессорами, работа- ющими параллельно, не может осуществляться через боль- шую совместно используемую память. Для повышения эф- фективности информационного обмена весьма полезна аппа- ратная реализация некоторых процедур передачи данных. Во многих случаях межпроцессорный обмен информацией со- ставляет основную трудность в работе процессоров общего назначения. Преобразование сигналов в символы Хотя вопросу ускорения символьных вычислений высокого уровня сейчас уделяется повышенное внимание, в ряде приложений искусственного интеллекта до сих пор камнем преткновения остается чрезвычайно низкая скорость обработ- ки аналоговых сигналов. Во многих системах машинного зрения более 90% времени затрачивается на преобразование изображений в символьную форму [16]. Более того, трудности в обработке изображений на высоком уровне часто связаны с неправильным представлением их на исходном этапе [4]. Подобные проблемы возникают и в системах обработки речи. В этих случаях следует подумать о создании специализиро- ванных процессоров для прямого решения проблемы. Приме- рами таких процессоров могут служить микросхемы для обработки изображений [14] и речи [2]. Как показывает опыт, чтобы программисты могли использовать такие процессоры, последние должны быть хорошо согласованы с остальной аппаратурой и программным обеспечением системы и быть по возможности более простыми в работе. Поскольку большин- ство программистов, работающих в области искусственного интеллекта, не очень сильны в микропрограммировании, они сталкиваются с серьезными трудностями, если для них это единственный способ общения со специальным устройством. 228
Заключение Существует множество способов повышения эффективно- сти систем искусственного интеллекта, но чтобы добиться желаемого увеличения их производительности, необходимо реализовать все описанные возможности. Следует найти компромисс между традиционной практикой программирова- ния задач искусственного интеллекта и методами работы, позволяющими создавать алгоритмы, которые обеспечивали бы эффективную работу большого числа процессоров. Мы должны использовать трансляторы с языков искусственного интеллекта, а эти трансляторы в свою очередь должны стимулировать исследования по системам команд. Вычисли- тельные процедуры, сопряженные с особыми трудностями, должны быть реализованы на микросхемах. Всюду, где только возможно, следует использовать параллелизм, но при этом нужно тщательно учитывать связанный с ним рост накладных расходов. Об авторе. Майкл Ф. Диринг—специалист по компьюте- рам, работает в лаборатории машинных систем фирмы «Шламбергер» (шт. Калифорния, США). 1. Bobrow D., Winograd Т. An Overview of KRL-O, a Knowledge Representation Language. Cognitive Science, vol. 1, no. 1, 1977. 2. Burleson W. A Programmable Bit-Serial Signal Processing Chip. SM Thesis. MIT Department of Electrical Engineering and Computer Science, 1983. 3. Deering M., Faletti J., Wilensky R. “PEARL—A Package for ' Efficient Access for Representations in LISP. Proceeding of the IJCAI-81, Vancouver (B.C.), Canada, August 1981, pp. 930-932. 4. Deering M., Coolins C. Real-Time Natural Scene Analysis for a Blind Prosthesis. Proceeding IJCAI-81, Vancouver (B.C.), Canada, August 1981, pp. 704-709. 5. Deering M.-, Olum K. Lisp and Processor Benchmarks. Unpublished FLAIR Technical Report, March 1984. 6. Fateman R. Is a Lisp Machine Different from a Fortran Machine? SIGSAM, vol. 12, no. 3, August 1978, pp. 8-11. 7. Feldman J., Rovner P An Algol Based Associative Language. Communication ACM, vol. 12, no. 8, August 1969. 8. Foderaro J. The Franz Lisp System. Unpublished memo in Berkeley 42 UNIX Distribution, September 1983. 9. Gabriel R., McCarthy J. Queue-based Multi-processing Lisp, Preprint, 1984. 10. Gaiski D., Pradua D., Kuck D., Kuhn R. A Second Opinion on Data Flow Machines and Languages. IEEE Computer, vol. 15, no. 2. February 1982, pp. 58-59. 11. Genesereth M. An overview of Meta-Level Architecture. Proceeding of the AAAI-83, Washington (D.C.), 1983. 229
12. Griss M., Benson E. Current Status of a portable Lisp Compiler. SIGPLAN, vol. 17, № 6, in Proceeding SYGPLAN’82 Simposium on Computer Construction Boston (Ma), June 1982, pp. 276-283. 13. Knight T., Moon D., Holloway L„, Steele G. CADR.MIT Al Memo 528, March 1981. 14. Kurokawa H., Matsumoto K., Iwashita M., Nukiyama T. The Architecture and Performance of Image Pipeline Processor. Proce- edings of the VLSI’83, Trondheim, Norway, August 1983, pp. 275- 284. 15. Lampson B., Pier K. A Processor for a High-Performance Personal Computer. Proceeding of the 7th Symposium on Computer Architec- ture. SIGArch/IEEE, La Baule, May 1980, pp. 146-160. 16. Perkins W. A Model Based Vision System for Industrial Parts. IEEE Transactions of Computers, vol. C-27, 1978, pp. 126-143. 17. Warren D. H. Applied Logic Its Uses and Implementation as a Programming Tool.Ph.D. Dissertation, University of Edinburg. 1977. Издано в виде технической записки № 290, Artificial Intelligence Center, SRI International. Благодарности. Автор благодарит участников проекта FAIM-1: К. Олума—за помощь при оценке различных наборов команд, И. Робинсона и Э. Бранванда — за исследования по СБИС, А. Деви- са— за полезное, критическое обсуждение настоящей статьи.
Общение с внеземным разумом Марвин Минский Если нам когда-нибудь придется встретиться с инопланетя- нами, носителями внеземного разума, сможем ли мы разгова- ривать с ними? Думаю, что да (разумеется, при условии взаимного желания), ибо, несмотря на различие в происхож- дении, и мы и они должны мыслить одинаково. Приведу два аргумента в пользу своего суждения. Они основаны на том, что решение всех интеллектуальных задач зависит от одних и тех же ограничивающих факторов: времени, пространства и используемых материалов. Чтобы у живых существ могли развиться эффективные средства для работы в рамках назван- ных ограничений, они должны выработать способность фор- мировать представления о ситуации, в которой оказываются, и научиться оперировать этими представлениями. Теперь остановимся на двух важнейших особенностях, характеризу- ющих интеллект как таковой. 1. Экономность мышления. Любой интеллект должен выработать специальные символьные системы для представ- ления объектов, причин, целей, а также для формирования и последующего запоминания процедур, которые он разработал для достижения поставленных целей. 2. Уникальность простых идей. Любой интеллект в своем развитии неизбежно приходит к ряду специфических пред- ставлений, а именно: к арифметике, логике причинно- следственных связей и к математической экономике, т. е. представлениям, которые оказываются наиболее простыми среди всех других, имеющих аналогичное практическое при- менение. Требование экономности мышления, как мне кажется, обязательно потому, что сила разума зависит от того, как он использует имеющиеся в его распоряжении ресурсы. Понятие объекта неизбежно возникает, когда рассматривается такой ресурс, как пространство с заполняющими его субстанциями. Понятие цели совершенно необходимо при умозаключениях о том, как мы используем свое время, причем в равной степени это относится и к реальным поступкам, и к воображаемым действиям. Инопланетяне также должны использовать оба этих понятия — объект и цель,— ибо, во-первых, к ним легко прийти и, во-вторых, их вряд ли можно заменить чем-либо другим. Более строго все эти вопросы рассмотрены в теории 231
уникальности простых идеи, где показано, что практически любой эволюционный поиск неизбежно приведет к определен- ным схемам, которым трудно найти столь же простую замену, т. е. другие идеи, служащие тем же целям. Эти (уникальные) идеи и процессы выделяются тем, что если и существует нечто подобное им, то оно оказывается несрав- ненно более сложным. Мы ограничимся здесь лишь одним примером — законами арифметики; однако я думаю, что поня- тия «объект», «причина» и «цель» также представляют собой такие изолированные «острова». Критик. А что если эти инопланетяне настолько опереди- ли нас в своем развитии, что нам не понять ход их мыслей, а их наука и техника в корне отличаются от наших? — В этом случае общение может и не состояться. Моя аргументация применима только к тому этапу эволюции разума, на котором живые существа еще продолжают бороть- ся за существование, заинтересованы в общении и стремятся расширить свой контроль над окружающим миром. В против- ном случае у них должны быть различные представления о ценности тех или иных вещей. Но и тогда можно надеяться, что общению будет способствовать сходство механизмов мышления, которыми пользуются все разумные существа для описания времени и пространства. Эти механизмы и могут играть роль своего рода универсальной «разменной монеты». Критик. А почему вы уверены, что растения, камни, течения и штормы не обладают разумом? — Если вы не можете сказать, чем их интеллект похож на наш, то нет и смысла использовать для его определения то же название. Ведь им действительно не приходится решать задачи, подобные тем, что решаем мы. Критик. А что особенного в решении задач? Пожалуйста, определите точнее, что такое интеллект, ибо только тогда будет ясно, о чем идет речь. — Никто не возьмет на себя смелость объяснить другим людям значение слова, которое они и без того хорошо понимают. Так что будем использовать его в том смысле, в каком оно обычно употребляется: интеллект—это способ- ность решать трудные задачи, скажем, такого типа, как построить ракету или систему дальней связи. Критик. Тогда, будьте добры, определите, что такое трудная задача. Мы, например, знаем, что человеческий интеллект решал задачу строительства пирамид, однако орга- низмы, населяющие коралловые рифы, «строят» и более грандиозные сооружения. Можно ли сказать, что это дает нам основание для общения с ними? — Нет. Человек действительно решал подобные задачи, но это заблуждение, что кораллловые полипы делают то же 232
самое. Здесь важным фактором является скорость. Птицы научились летать не за одно поколение—для этого потребо- вались миллиарды лет эволюции, а человек стал летать за какие-нибудь несколько десятков лет. Чтобы выучиться строить конструкции вроде гнезда иволги или норы бобра, человеку понадобится несколько лет, но бобер способен научиться этому, только используя древний генетический механизм, заложенный в его мозг. Важной особенностью того, что мы называем интеллектом, является способность решать в широком масштабе новые, нетрадиционнные задачи. Вот почему имеет смысл пытаться наладить общение лишь с теми животными, которые способны быстро обучаться ре- шать новые и сложные задачи. Что позволяет человеку столь быстро решать трудные задачи? На мой взгляд, следует выделить несколько компо- нентов, участвующих в этом процессе, и эти компоненты столь важны, что инопланетные разумные существа, по- видимому, тоже должны опираться именно на них. Назовем их: Подцели—разбиение трудной задачи на совокупность более простых подзадач. «Подобъекты» — описание объектов через их части и связи между ними. Причинная символика — объяснение и понимание того, как изменяются объекты. Память — накопление опыта решения сходных задач. Экономность мышления—эффективное распределение имеющихся (ограниченных) ресурсов. Планирование—мысленная организация работы в общих чертах еще до начала ее выполнения. Самосознание — обеспечение благоприятных условий для того, кто решает задачу. Возникает, однако, вопрос: а разве не существуют мири- ады других возможностей для решения задач? Почему бы инопланетянам не найти какой-то совершенно иной, «инопла- нетный» способ? Тем не менее я убежден, что описанные элементы решения задач не столь уж произвольны, как может показаться на первМй взгляд. Принцип уникальности Почему всем нам кажется столь очевидным, что дважды два—четыре? Подобные вопросы издавна занимают филосо- фов: почему некоторые понятия люди воспринимают так, будто они не нуждаются в предварительной опытной проверке или доказательстве? Я думаю,. что это объясняется, по крайней мере отчасти, неким вычислительным феноменом, 233
который я называю принципом уникальности простых идей: если два относительно простых процесса дают сходные результаты, то с большой вероятностью эти результаты полностью идентичны. В силу этого принципа мы почти всегда априори ожидаем появления вполне определенных структур от определенных вычислительных систем, возникших в ходе эволюции в результате отбора из множества возможных процессов. При- мером тому могут служить понятия числа и арифметических действий; возможно, этим и объясняется, почему люди легко находят «общий язык», говоря об этих понятиях, хотя в остальном их мысли и представления могут кардинально различаться. Подобное суждение вполне применимо и к внеземному разуму. Позволю себе пояснить принцип уникаль- ности на примере двух почти анекдотичных случаев. Один из них касается математического эксперимента, а второй — реальный случай из моей жизни. Математический эксперимент. Как-то я решил проанализи- ровать поведение всех возможных процессов, точнее, всех возможных программ на всех видах компьютеров. Самый простой способ приступить к такому исследованию — просто выписать одно за другим все возможные конечные множества правил. Это легко сделать, используя метод, предложенный Аланом Тьюрингом в 1936 г. (то, что сейчас называют «машиной Тьюринга»). Естественно, я не слишком преуспел в этом, поскольку количество процессов росло по экспоненте в зависимости от числа правил в каждом множестве. Тем не менее с помощью Дэниела Боброу, бывшего тогда моим студентом, мне удалось проанализировать несколько тысяч таких «машин», и тогда обнаружилось, что поведение всех этих процессов сводится всего лишь к нескольким типам. Одни из них просто прекращались, не приведя ни к каким результатам. Другие стирали входные данные и более не делали ничего. Многие же быстро «зацикливались», снова и снова бессмыслено повторяя одни и те же шаги. И лишь несколько процессов приводили хоть к чему-то интересно- му— и все они были по сути одинаковыми: в каждом постоянно выполнялась вычислительная операция, которая увеличивала длину некой цепочки символов на единицу; далее снова происходило то же самое. Назовем такие процессы A-машинами, так как они способны делать нечто напомина- ющее арифметический счет. На мой взгляд, этот эксперимент выявил часть некоторого бесконечного множества возможных вычислительных структур. Тогда этот скромный по'масшта- бам эксперимент говорит о том, что такое множество, вероятно, имеет вид, показанный на рис. 1. Символы «X» обозначают бесполезные процессы, т. е. 234
X X XXX AX X A X X X A \ XX X X X A X X X A X / \ X A XX XX/XX \ XX XX /XX XXXX/X XXX \ X X X A X X XX A XX AX X AX X X X A X XXX XX X / \ XXXX XX A XX XXXX XXX XX A X A X X X XXXAXXX XXX XXX XXX X / \xx XXX XXX X X XX XXX XXX XXX XXXX В XX XXX XXX XXX XXX X X X XXX XXX XXX xxx хххх/ \xx XXX XXX XXX XXX XX Рис. 1. Множество возможных вычислительных процессов. такие, которые почти ничего не дают. Символы «А» представ- ляют те крохотные считающие A-машины, которые в дей- ствительности делают одно и то же. Возможно, наш мозг способен выполнять подобные элементарные процессы, в результате которых формируются более сложные представле- ния из области арифметики. Появление A-машин на опреде- ленной стадии эволюции любого мозга я считаю неизбежным. Впрочем, быть может, имеются и другие способы счета. Поэтому на более позднем этапе эволюции мозга могут появиться, скажем, В-машины, которые ведут себя похоже, но не идентично A-машинам. Но наш эксперимент, кажется, наводит на мысль, что д$же простейшая В-машина должна быть намного сложнее A-машины, и поэтому маловероятно, чтобы мозг смог ее обнаружить раньше, чем у него появится множество A-машин. Этот коротенький мысленный экспери- мент напоминает мне первые эксперименты Стэнли Миллера и Гарольда Юри, в ходе которых ученые исследовали простей- шие реальные химические соединения. Начав с нескольких элементов: водорода, кислорода, углерода и фосфора,—они обнаружили, что вначале эти химические вещества, взаимо- действуя друг с другом, образуют простые молекулы, и только затем возникают пептиды, сахара, нуклеотиды и т. д. Безусловно, когда образовались эти соединения, до появле- ния тигров, дятлов или пришельцев с Андромеды было еще далеко. Случай из жизни. Когда-то, еще в школе, меня поразило, что минус, умноженный на минус, дает плюс. Как странно, что два отрицания уничтожают друг друга, как будто два 235
ложных утверждения могут дать одно верное или высказыва- ние «это утверждение ложно» может стать правдой. Я задумался, а не существует ли что-то подобное арифметике, но где используется еще один знак? Почему бы не сделать так, чтобы числа были не двух, а трех видов, подумал я. Я стал упорно придумывать новые таблицы умножения. Увы, каждая система приводила либо к невозможной арифметике (например, к такой, где единица равна двум), либо к арифметике вообще без знака или с лишним знаком при числах. Наконец, я сдался. Если бы у меня хватило настойчивости продолжать, то я, быть может, открыл бы арифметику комплексных чисел, как Гаусс, или арифметику спиновых матриц, как Паули. Но никому до сих пор не удалось открыть арифметики с тремя знаками — вероятно, потому, что ее вообще не существует. Попробуем, к примеру, создать новую систему чисел, в которой все, как в обычной, за исключением того, что там нет одного числа, скажем 4. Эта арифметика не будет работать. Все в ней окажется неверным. Придется выбирать, сколько будет «дважды два». Если мы решим, что это 5, то тогда 5 должно быть четным числом, значит, четными будут 7 и 9. А сколько же тогда будет «5 плюс 5»? Может, 8 или 9, или 10? Следовательно, чтобы создать совершенно новую арифметическую систему, нам придется изменить свойства всех остальных чисел. Когда мы это сделаем, то обнаружим, что изменились только названия чисел, а их свойства оста- лись такими же, как у чисел в обычной арифметике. Проблемы возникают и в том случае, если мы будем считать равными друг другу два разных числа, например 139 и 145. Но тогда, чтобы было возможным вычитание, придется приравнивать 6 и 0, а 4+5 должно быть равно 3. При этом сумма двух положительных чисел оказывается меньше каж- дого из них, что уже совсем плохо согласуется с общим представлением об арифметике. (По существу, этот путь ведет к созданию модульной арифметики, находящей приме- нение в некоторых разделах математики, но в повседнев- ной жизни такая арифметика более чем бесполезна.) И так будет всегда: оказывается, невозможно ни отбро- сить число, ни ввести новое. Нельзя изменить свойства ни одного произведения, ни одной суммы и ни одного простого числа. Что придает арифметике такую необычайную жесткость? Нельзя ни проделать в ней «дырку», ни растянуть ее, ни согнуть хоть чуточку. Приходится принимать ее такой, как она есть,— целиком, все или ничего, без малейших изменений, потому что арифметика похожа на изолированный остров в «универсуме процессов». А-машина—всегда одна и та же, 236
совершенная и законченная — существует, входя составной частью во все другие процессы, которые могут породить бесконечную цепь разнообразных вещей. Иногда я думаю, не опасно ли заставлять детей так много заниматься арифметикой: ведь если посмотреть на нее с такой точки зрения, она уводит в совершенно особенный абстрактный мир. Конечно, кое-кого она увлекает, но боль- шинство детей считают ее скучной, для них она источник бесконечной зубрежки и бессмысленной работы — что-то вро- де куска холодного и бесформенного пластилина, которому невозможно придать определенную форму. Из всего сказанного я делаю вывод, что при любом поиске среди простейших процессов в конце концов находится нечто, что не просто напоминает арифметику, но действитель- но является таковой. При этом изобретательность и вообра- жение роли не играют—важна только «география» этого мира вычислений, который подчинен гораздо более жестким ограничениям, чем реальная жизнь. Утверждение. Все процессы или формализмы, похожие на арифметику, либо тождественны ей, либо безмерно сложнее. Поэтому мы легко находим общий язык, говоря о числах. Но какое отношение все это имеет к внеземному разуму? Только то, что в своем развитии он, по всей видимости, тоже должен был исследовать множество возможных процессов, начиная с самых простых, и в результате обнаружить те же самые «острова» простых и эффективных идей. Наконец, возникает вопрос, почему происходят именно такие процессы и не существуют ли наряду с ними какие-то другие процессы, хотя и похожие? Точно ответить на этот вопрос весьма трудно, ибо значение понятия похожий зави- сит от того, в каком смысле мы его употребляем. Один из возможных ответов мог бы сводиться к следующему. Очевидно, что из небольшого количества правил можно вывести чрезвычайно сложную систему следствий и зависи- мостей. Но обратное утверждение было бы неверным: с помощью небольшого числа правил обычно невозможно описать нечто достаточно большое и сложное. Это простой закон арифметики — не так уж много можно предложить небольших наборов правил! Поэтому нельзя надеяться, что взяв конкретный набор из небольшого числа простейших правил, получив из него сложную систему следствий и слегка изменив эту систему, мы сможем затем описать полученный результат снова небольшим числом правил. Такой изме- ненной системе будут присущи не твердые закономерности, а какие-то волшебные свойства. Короче говоря, небольших совокупностей правил недостаточно, чтобы охватить непре- рывное разнообразие возможных систем. 237
Причины и предложения Если наш способ мыслить—случайный результат эволю- ционного процесса, то разум инопланетян, возможно, абсо- лютно не похож на наш. В таком случае общение нереально. Но хотя каждая эволюция—это цепь случайностей, на каждой ее стадии сначала «проигрываются» самые простые варианты. Поскольку на Земле в ходе эволюции человека развились достаточно сложные языки и эти языки, вероятнее всего, строятся на сравнительно простых принципах, не исключено, что другой разум может использовать подобные же принципы. Более того, я утверждаю, что многие аспекты языка (в частности, грамматика) были практически неизбеж- ны. Правда, столь смелое утверждение может многим пока- заться абсурдным. Почему в фразе «Скоро пойдет дождь» грамматика застав- ляет нас употреблять слово «дождь» обязательно в мужском роде и единственном числе? Почему вообще мы не можем сказать этих слов, не указав посредством окончаний род и число существительного, словно дождь — это не явление природы, а актер на сцене? Грамматике безразлично, идет ли речь о реальном действующем лице или нет: мы либо находим его, либо воображаем, что оно есть. Я берусь утверждать, что мы ищем или воображаем причину для каждого различия, изменения или движения. Порой именно грамматика языка навязывает нам подобный подход1; однако, на мой взгляд, причина этого не только в языковых формах, но и в самом способе мышления. Я думаю, что задолго до того, как наши предки научились говорить, у них уже возникли специальные механизмы мозга для представления объектов, различий и причин; эти механизмы позднее легли в основу нашего языка (и грамматики в том числе). В частности, я полагаю, что во многих мыслительных процессах человека используются сле- дующие символьные представления. Символы объектов. Они обозначают вещи, идеи и процес- сы. В разных языках они чаще всего соотдетствуют суще- ствительным. Наше мышление представляет каждую ситу- ацию— реальную или воображаемую — через отдельные объ- екты и связи между ними. Символы различий. Обозначая различия между объектами или изменения в объекте, они имеют в языке в основном глагольную форму. Сравнивая два объекта или отмечая 1 В оригинале эти рассуждения иллюстрируются типичным ан- глийским выражением: It soon will start to rain (Скоро пойдет дождь), где безличное местоимение it отражает присутствие такого вообража- емого действующего лица-причины.— Прим. ред. 238
изменения, произошедшие в одном объекте, мысль человека отмечает различия. Символы причины. Отметив различие, человек находит его причину, т. е. нечто, ответственное за изменение. При этом мы используем весьма тонкий прием, представляя причины примерно в той же грамматической форме, как и объекты. Структура сложных предложений. Для описаниях слож- ных ситуаций наше мышление выработало еще один прием, который позволяет оперировать сложным выражением или описанием так, будто оно — отдельный компонент другого описания. В языке этому соответствует встраивание в фразу, например, сложноподчиненных и вводных предложений, а также причастных и деепричастных оборотов. Такой прием встраивания, когда прежние мысли включаются в текущий мыслительный процесс как отдельные объекты, и придает нашему мышлению особую силу. Именно это позволяет нам повторно использовать те же механизмы мозга, заменяя подчас всю концептуальную картину мира компактным симво- лом. Это позволяет нам легко создавать гигантские постро- ения из наших идей подобно тому, как дети строят домики и башни из кубиков. Благодаря этому мы можем основывать новые идеи на старых. По существу, именно такой механизм обеспечивает нашу способность мыслить. То же относится и к созданным нами вычислительным машинам. Все языки имеют структуры, допускающие повторное использование, благодаря тому что в самом характере мышле- ния заложен механизм повтора. Этим и обусловлено беско- нечное многообразие мысли. Если бы внеземные разумные существа не обладали подобной способностью, они не могли бы обращаться к более ранним результатам мышления. Без этой способности обращать символы к символам вообще невозможно возникновение интеллекта, сколь бы разнообра- зен и утончен ни был репертуар всех прочих навыков. Критик. Рассуждая таким путем, вы, пожалуй, придете к выводу, что ийопланетяне тоже говорят по-английски, если уж они должны использовать существительные, глаголы и сложноподчиненные предложения. А если они вообще мыслят иначе — не прибегая к понятиям объектов и действий? — Я думаю, что мы мыслим, пользуясь понятиями объек- тов и причин неслучайно. В любом случае подобная форма представления порождает вопрос о том, кто или что является причиной? А такое восприятие вещей в их эволюции неизбеж- но приводит к поискам зависимостей, которые помогают предвидеть, а значит, и контролировать как внешний мир, так и свой внутренний. Возможно, именно поэтому мы вырастаем с верой в себя; быть может «я» в фразе «Я это здорово придумал» идет именно от такого механизма мышле- 239
ния. Ведь если вам приходится искать причину того, что вы сами делаете, то этой причине надо дать имя. Вы назовете это «я», я назову—«вы». Критик. А так ли уж важны зависимости? Почему бы каким-нибудь инопланетянам не воспринимать картину мира как единое целое, не разбивая на части? Может, лучше видеть мир каким он есть—целостно, как непрерывный поток изменений во времени и пространстве, а не строить произвольно мысленные фрагментарные копии, лишь прибли- женно напоминающие реальность? — В стремлении к более верному, целостному видению мира, безусловно, есть здравый смысл. Но поклонение еще не открытым сверхчувственным способам познания может скрыть от нас возможности обычных способов раздельного восприятия вещей. Каждое живое существо расплачивается энергией (и, следовательно, питанием) за любой механизм, которым обладает его мозг. Подобно тому как фразовая структура языка позволяет нам последовательно концентри- ровать внимание на каждом фрагменте описания, так и наша способность различать отдельные вещи дает нам возможность разбивать любые ситуации на части и затем последовательно сосредотачивать всю мощь мозга на решении каждой части задачи. Энтузиасты «целостного восприятия мира» не понима- ют, какой ценой пришлось бы расплачиваться за то, чтобы «увидеть все сразу»,— мы просто были бы не в состоянии хоть что-нибудь увидеть достаточно отчетливо. Высказывается немало суждений относительно того, что в мозге мог бы использоваться голографический принцип орга- низации памяти. Но во-первых, этому пока нет эксперимен- тальных подтверждений, а во-вторых, мы мало бы что при этом выиграли. Голограммы не позволяют хранить больше информации, чем при других способах организации памяти: специалистам по ЭВМ известны другие, причем более эффек- тивные способы дублирования информации в памяти, которые обеспечивают ее более надежную защиту от «помех». Правда, голограммы позволяют упростить некоторые виды распозна- вания, например в случае, когда надо понять, содержит ли некое изображение копии других вполне определенных изоб- ражений. Но в то же время голографическая форма записи сильно затрудняет поиск решения;, например, когда нужно установить, содержит ли картина два более мелких фрагмен- та, которые каким-то образом связаны между собой. По моему мнению, в действительности голограмма — наихудший способ представления отношения между объектами, изобра- женными на ней, поскольку в сущности память и обучение полезны лишь тогда, когда они дают информацию о связях вещей, которые хотя бы частично можно предсказывать. 240
Вряд ли нам бы понравилось, если бы наша память с одинаковой силой помнила все — в том числе и случайные признаки ситуации. Если какая-то сцена на фотографии содержит 50 признаков, то вряд ли есть смысл с равным вниманием воспринимать весь квадриллион возможных соче- таний этих характеристик. Поэтому необходимы способы выделять и группировать только самые полезные из предска- зуемых сочетаний характеристик. Короче говоря, если бы число взаимосвязанных характеристик, по которым люди различают объекты, не было ограниченным, мы просто не могли бы узнавать уже известное, а значит, не могли бы учиться на собственном опыте, не могли бы хранить и накапливать знания. Причины и цели Каким образом нам помогает опыт, если не встречается двух абсолютно совпадающих задач? Любой опыт был бы бесполезен, если бы мы не умели различать, что в мире изменилось, а что осталось прежним. Знания нельзя было бы использовать, если бы они не были выражены в виде связей между прогнозируемыми характеристиками и теми действи- ями, которые мы можем предпринять для установления этих связей. Только при наличии таких связей можно предвидеть, какие действия помогут избавиться от нежелательных свойств. Сказав «х—причина у», мы, по сути, говорим, что х может подсказать нам, какие действия приводят к у. Живот- ное сможет приспособиться к условиям окружающей среды, если сумеет установить причинную связь событий, т. е. если найдет фрагменты прогноза, которые помогут ему сделать выбор оптимального варианта. Но прогноз будет неприменим, если зависимостей окажется слишком много. Что же такое причина? Само понятие причины включает определенный элемент стилизации: объяснение причины должно быть крат- ким, ибо некомпактное объяснение не позволяет строить прогноз. Мы считаем, что х является причиной у, если видим, что у зависит от х больше, чем от чего-либо другого. Но мы не будем считать х причиной у, если х будет состоять из бесконечного потока объяснений, касающихся всего на св^те и не приводящих ни к какому итогу. Причем это относится не только к процессам, но и к объектам. В мире, где все происходящее в большей или меньшей степени зависит от всего остального, нельзя выделить ни объектов, ни вещей, ни причин. В таком мире понятие объект теряет смысл, так как это понятие присваивается предмету по набору свойств, которые 241
либо остаются неизменными, либо меняются предсказуемым образом, несмотря на то что все вокруг меняется. Когда мы двигаем объект, меняется его расположение, но цвет, вес, материал, размер и форма остаются неизменными1. Не правда ли, это так удобно, что наш мир позволяет нам менять положение вещей, не изменяя их прочих характеристик?! В противном случае число изменений, которые нам пришлось бы учитывать, росло бы по экспоненте в зависимости от числа свойств объекта. В такой ситуации поиск причины происходящего оказался бы бессмысленным. Чтобы оперировать сложными объектами, мозг должен уметь описывать их с помощью подструктур, в пределах которых можно проследить результат некоторых действий. Знать причину явления — это значит хотя бы в принципе представлять, что меняет его или влияет на него, не меняя при этом всего остального. Это свойство позволяет нам менять один объект, не нарушая других. Чтобы разумное существо могло обнаруживать причины, вызывающие изменения в окружающем его мире, оно должно иметь органы чувств, регистрирующие изменения, которые предсказуемым образом связаны с действиями, каковые это существо может предпринять. К счастью, в ходе эволюции развился механизм согласованных сочетаний сенсор — эффектор, поскольку практически в любых условиях выжива- емость существа значительно возрастает, если его действия основываются на хорошем прогнозе. Поэтому естественно ожидать, что в ходе эволюции должны были возникнуть механизмы, которые отражают причинно-следственные связи, действующие в окружающей нас среде. Самыми мощными оказались механизмы, которые позволяют нам прогнозиро- вать результаты цепочки событий и действий, т. е. заранее планировать свою деятельность. Когда задачу нельзя решить сразу, она кажется трудной. В самом общем виде решение задачи можно представить как систему действий, которые постепенно «приводят к постав- ленной цели». В конце 50-х годов А. Ньюэлл и Г. Саймон разработали теорию, которую они назвали «универсальный решатель задач», где развит метод постепенного движения к цели—путем нахождения действий, которые каждую высо- котрудную задачу заменяют совокупностью более простых. Разумеется, никем не доказано, что любой интеллект (в 1 Удивительным свойствам константности вое приятия'нами цве- та и формы при перемещении или изменении характера освещения посвящено много исследований, тогда как неизменность веса, матери- ала и т. д. обеспечивается физическими законами сохранения, кото- рые являются следствием однородности пространства.— Прим. ред. 242
том числе и инопланетный) должен использовать тот же принцип. Однако другой общей теории решения задач пока нет, и вряд ли она может возникнуть; во всяком случае трудно представить, чтобы разум, каким бы он ни был, не воспользовался идеей цели. Надежность коммуникации Прежде чем рассуждать о том, как общаются инопланетя- не, следует подумать, как это делаем мы, люди. Есть ли хоть слово, которое значит одно и то же по меньшей мере для двух людей? Каждый из нас, вероятно, задавался вопросом: могут ли два человека, придавая разные значения словам, никогда не почувствовать этого в общении? Что это значит, когда всё, что кажется мне зеленым или синим, вам же представляется зеленым и синим? Теория уникальности убеж- дает нас не бояться такого положения вещей, по крайней мере для технических понятий, поскольку одно из двух словесно неразличимых понятий должно быть гораздо сложнее другого и потому с первого раза их отличие не воспринимается. Уникальность простых идей означает, что мы вполне можем понять друг друга. Пока трудно судить, к чему может привести теория уникальности, ибо еще не ясно, как именно этот принцип выделяет каждое отдельное понятие. Но в целом данная теория подтверждает основанное на математике и физике интуитивное предположение Ханса Фрюденталя, высказанное в его книге об общении с внеземными цивилизациями [2]. Достаточно вспомнить те несложные модели, которые он предлагает использовать при обсуждении с инопланетянами вопросов социального и административного устройства обще- ства. Впрочем, возникает проблема, связанная с тем, что интроспекция — плохой помощник при решении вопроса о том, какие из- наших простых понятий действительно про- сты,—ведь для понимания многих вещей, кажущихся нам простыми, используются механизмы мозга, сложность кото- рых мы не в состоянии оценить. Например^ мы без усилий можем стоять на двух ногах, однако инопланетянам это может показаться поразительным' Какие еще идеи могут выделяться как «острова» в океане всех возможных идей, являясь в этом смысле всеобщими? По-видимому, это матема- тические понятия рациональности, линейной аппроксимации, вероятности и простейшие процессы, напоминающие работу программ ЭВМ. Без них невозможен обмен информацией о производстве и торговле, об основах биологии и даже о многих принципах мышления — объектах, целях, памяти. Впрочем, принцип уникальности, вероятно, работает лишь до 243
определенного предела, так как более сложные идеи допуска- ют варианты, и здесь общение скорее всего будет затруднено. Заключение Сегодня мало что можно добавить к сказанному с доста- точной научной обоснованностью. Однако ожидаемое увели- чение вычислительной мощности компьютеров, вероятно, откроет возможности для более глубокого исследования таинственного мира элементарных вычислительных процес- сов. Тогда мы, быть может, найдем новые уникальные идеи, которые разделят с нами братья по разуму. Подобное исследование позволит получить новые данные о происхожде- нии жизни, выявив элементарные схемы, по которым могло бы идти эволюционное развитие простейших форм. Об авторе. Марвин Минский, один из пионеров исследова- ний в области искусственного интеллекта, является почетным профессором факультета электротехники и вычислительной техники Массачусетского технологического института. В кон- це 50-х годов М. Минский вместе с Джоном Маккарти создал в МТИ лабораторию искусственного интеллекта, которой руководил в течение нескольких лет. М. Минский длительное время интересовался проблемами внеземного разума, прини- мал участие в очень представительной конференции по связи с внеземными цивилизациями, которая проходила в 1971 г. в Ереване. 1. Ernst G.. Newell A. GPS: a Case Study in Generality and Problem Solving.— New York: Academic Press, 1969. 2. Freudenthal H. LINCOS: Design of a Language for Cosmic Intercour- se.— Amsterdam: North-Holland, 1960. 3. Lenat D. The Nature of Heuristics. Artificial Intelligence, vol. 19, 1982. 4. Turing A. On Computable Numbers. With an Application to the Entscheidungs-problem. Proceedings of the London Mathematical Soci- ety, vol. 2, 1937; перепечатано в: Davis M. (ed.). The Undecidable.— New York: Raven Press, 1965. Благодарности. Настоящая статья представляет собой перерабо- танный вариант статьи Марвина Минского, опубликованной в сборни- ке «Инопланетяне. Наука и внеземной разум» (Extraterrestrials: Science and Alien Intelligence), изданном под редакцией Эдварда Рэгиса-младшего в издательстве Кембриджского университета в США (©от 13 марта 1983 г. и 10 декабря 1984 г.). Книга вышла в свет летом 1985 г. (Статья перепечатана с разрешения редактора и издательства «Кембридж юниверсити пресс».)
Краткий словарь терминов по искусственному интеллекту Доска объявлений. Условное название механизма, обеспечивающего передачу информации между отдельными модулями, входящими в систему. Доска объявлений представляет собой ту область памяти системы, к которой могут обращаться все модули. И-параллелизм, ИЛИ-параллелизм, параллелизм потока данных. Различные методы организации параллельных вычислений при пере- ходе к совокупности процессоров. Мультимножество. Формальный математический объект, отлича- ющийся от множества тем, что в нем допустимо повторение элемен- тов. Предикаты и демоны. Предикат—специальная логическая функция, проверяющая выполнение некоторого условия, накладываемого на ее аргументы. Демон—процедура, которая автоматически вызывается при заранее заданных условиях. Семантическая сеть. Граф, вершины которого представляют объек- ты, а дуги — отношения. Хорошим примером семантической сети может служить генеалогическое древо. Сценарий. Структура представления знаний (разновидность фрейма), используемая для описания последовательности связанных событий. Слоты сценария характеризуют отдельные события (место, где происходит событие, кто в нем участвует, чем оперирует и т. д.). События сценария связаны между собой причинно-следственной связью. Теговая архитектура памяти. Применяется в системах искусствен- ного интеллекта. При теговой архитектуре каждое слово памяти содержит поле — метку, описывающую данные, хранимые в осталь- ной части слова, в частности тип данных и формат. Унификация. Метод сопоставления с образцом. В процессе унифика- ции переменные, входящие в образцы, принимают такие значения, при которых два образца становятся тождественными. Фрейм. Структура представления знаний, используемая для описания характеристик объектов и организованная по принципу «слот и его значение». 245
Эвристика. Не имеющий формального обоснования метод, который повышает эффективность принятия решения. В системах искусствен- ного интеллекта эвристики часто используются для ускорения реше- ния задач большой сложности. Элемент дробления. В системах параллельных вычислений указывает на степень сложности отдельных фрагментов программы, связанных с каждым процессором. Например, если процессор А выполняет операцию сложения, а процессор В—операцию сортировки, то элемент дробления кода процессора А меньше, чем процессора В.
Содержание Предисловие редактора перевода........................... 5 От составителя.......................................... 13 Р. Шенк, Л. Хантер. Познать механизмы мышления. Пер. Н. В. Селивановой ..................................... 15 Дж. Р. Андерсон, Б. Дж. Рейзер. Учитель Лиспа. Пер. Б. М. Гинзбурга........................................ 27 У. Л. Джонсон, Э. Солоуэй. PROUST (автоматический отладчик программ на языке Паскаль). Пер. Б. М. Гинзбурга....... 48 П. Г. Уинстон. Лисп совершает революцию. Пер. А. В. Жожи- кашвили ............................................... 71 К. Хьюитт. Открытые системы. Пер. Н. В. Селивановой..... 85 Д. X. Баллард, К. М. Браун. Зрение: биология бросает вызов технике. Пер. Р. М. Абдусаматова...................... 103 Дж. Е. Хинтон. Обучение в параллельных сетях. Пер. Р. М. Абдусаматова.................................. 124 Дж. А. Фелдман. Сетевые модели. Пер. Н. В. Селивановой.. 137 Дж. К. Стивенс. Перспективы нейроинженерии. Пер. В. Л. Ду- нина-Барковского ..................................... 148 Р. X. Майклсен, Д. Мичи, А. Буланже. Экспертные системы. Пер. Ю. А. Кузьмина ................................ 162 Б. Томпсон, У. Томпсон. Анатомия экспертных систем. Пер. Ю. А. Кузьмина........................................ 183 М. Ф. Диринг. Архитектура машин для искусственного интел- лекта. Пер. А. В. Жожикашвили......................... 209 М. Минский. Общение с внеземным разумом. Пер. Н. В. Сели- вановой .............................................. 231 Краткий словарь терминов............................... 245
Научно-популярное издание Реальность и прогнозы искусственного интеллекта Сборник научно-популярных статей Научный редактор А. Н. Кондрашова Младший редактор И. Б. Ильченко Художник С. А. Бычков Художественный редактор Н. М. Иванов Технический редактор И. И. Володина Корректор Т. И. Стифеева ИБ № 6193 Сдано в набор 22.05.86. Подписано к печати 26.12.86. Формат 84х 108‘/32« Бумага кн.-журнал. Печать высокая. Гарнитура тайме. Объем 4,13 бум. л. Усл. печ. л. 13,86 в т. ч. вкл. 0,84. Усл. кр.-отт. 17,65. Уч.-изд. л. 15,27. Изд. № 9/4929. Тираж 50 000 экз. Зак. 2596. Цена 85 коп. Издательство «Мир» 129820, ГСП, Москва И-1 ГО, 1-й Рижский пер., 2 Ордена Октябрьской Революции и ордена Трудового Красного Знамени МПО «Первая Образцовая типография» им. А. А. Жданова Союзполиграфпрома при Государственном комитете СССР по делам издательств, полиграфии и книжной торговли. 113054, Москва, Валовая, 28.