Алексей Чачко - Искусственный разум
Списки для Личного Помощника, коли приводить их полностью, займут оставшиеся страницы книжки; мои издатели наверняка не допустят такого расточительства, хотя не исключено, что они, как и автор, очень любят пирожки. И потому автору остается только надеяться на воображение читателей, на то, что они сами мысленно воспроизведут всю эту громоздкую штуку - семантическую сеть.
Мы выбрали для описания совсем малый мир и встретились с двумя неожиданностями. Сеть оказалась огромной; хотя мы и приучены уже к тому, что машине нужно все разжевать до мелочей, тем не менее размеры сети вызывают удивление. Да и сам мир, подвергнутый смысловому анализу, оказался вовсе не прост: "пирожковая вселенная" полна особенностей, оттенков, названий, граммов и калорий.
Вот такие пирожки! Здесь было бы уместно развить плачевную тему сложности описания мира, но это весьма квалифицированно сделано уже другим автором - Сергеем Швецовым:
Как мудро все в подлунном мире:
У человека две ноги, а не четыре,
У птицы крылья есть, а у собаки хвост...
Как сложен мир и в то же время прост!
Специалисты по Искинту не досужие схоласты, остроумно высмеянные С. Швецовым, а прилежные работники. Наша семантическая сеть вполне рукотворна, изготовить ее под силу двум работникам (аналитику и программисту) за квартал. Сеть будет спрятана в память вычислительной машины, и от нее можно ждать... Действительно, чего можно ждать от вычислительной машины, профессионально ориентированной на печение пирожков?
Молодая неопытная хозяйка прибежала с работы домой и, едва успев снять пальто, обратилась к Личному Помощнику за советом. Она печатает свои вопросы к ЭВМ на пишущей машинке; ответы компьютера печатаются тут же. Вот что из этого получается (реплики хозяйки выделены квадратиками).
1. ▫ Через час ко мне придут гости. Я хочу быстро испечь пирожки. Что делать? ?
Проверьте, есть ли у вас мука, вода, сода и соль. Если есть, напечатайте "Да".
2. ▫ Да ▫
Значит, пресное тесто обеспечено. Займемся теперь начинкой. Что вы хотите взять в качестве начинки?
3. ▫ Я хочу сделать беляши ▫
Беляши - это жареные пирожки с мясом. Проверьте, пожалуйста, есть ли у вас мясо?
4. ▫ Нет ▫
Тогда придется оставить беляши до другого раза. Что вы хотите взять в качестве начинки?
5. ▫ Вермишель яичную ▫
Не уверена, что пирожки с вермишелью окажутся вкусными, назовите лучше другую начинку.
6. ▫ Сырок плавленый ▫
Сырок плавленый - отличная начинка. Обычно гости предпочитают пирожки с грибами, капустой или мясом. Но с плавленым сырком тоже получится вкусно. Итак, печем с плавленым сырком?
7. ▫ Да ▫
Тогда натрите его на крупной терке. Начинка готова. Вы умеете делать пресное тесто?
8. ▫ Да, но у меня есть еще одно яйцо, я хотела бы добавить его в начинку. Можно ▫
Пожалуй, нет. Яйцо в начинке хорошо сочетается с рисом и капустой, но не с сырком плавленым. Лучше добавьте желток яйца в тесто, а белок оставьте для смазки пирожков. Вам нужна помощь в приготовлении теста?
9. ▫ Нет. Я туда долью немного молока ▫
Прекрасно. Займемся разделкой теста. Вы умеете раскатать тонкий лист?
10. ▫ Да, но у меня нет скалки ▫
Возьмите пустую бутылку и катайте ею. Только учтите, лист должен быть тонким.
11. ▫ Хорошо. А что потом делать? ▫
Если вы согласны с тем, чтобы пирожки имели форму конвертов, напечатайте "Да".
12. ▫ Да ▫
Нарежьте из листа квадраты размером с ладонь. Положите в центр каждого квадрата понемногу сыра. Сверните квадрат за уголки - запечатайте конверт. Понятно?
13. ▫ Да ▫
У вас, конечно, есть противень. Смажьте его маслом и выложите на него пирожки. После этого смажьте их сверху белком. У вас есть перышко? Напечатайте "Да" или "Нет".
14. ▫ Нет ▫
Хм, тогда осторожно смажьте их мизинцем. Слегка смажьте, но без пропусков. Хорошенько разогрейте духовку и поставьте пирожки печься. Добивайтесь румяно-золотистого цвета, на это обычно уходит 10-15 минут. Все ясно?
15. ▫ Все ▫
Желаю удачи. Очень прошу сообщить потом, понравились ли пирожки гостям. Мне пригодится ваш опыт. Еще раз - удачи!
Личный Помощник 5 ДУНЯ.
В вашем присутствии, уважаемые читатели, только что состоялся диалог между человеком и вычислительной машиной. Состоялся значительно раньше, чем рассчитывал автор. По плану книги диалогу не место в этой главе. У нас нет еще знаний о том, как машина понимает естественный язык. Мы не разобрались еще в том, как устроен сценарий - особая программа, руководящая ходом человеко-машинного диалога. Мы еще не готовы.
Тщетные жалобы; материал книги вышел из-под контроля автора. Диалог прорывался на эти страницы, еще когда речь шла о программе УЧЕНИК, он требовал подробного рассказа о себе, когда мы обсуждали систему доказательства теорем, и наконец объявился здесь, "как незаконная комета в кругу рассчитанных светил". Нам остается только смириться. Что ж, пронумеруем шаги диалога (шаг состоит из вопроса и ответа) и попробуем обсудить некоторые его любопытные черты.
Начнем с шага 3. Наша хозяйка пожелала делать беляши. ДУНЯ, прежде чем отозваться, проверяет, являются ли беляши пирожками, то есть на формальном языке:
? беляш -> (входит в состав) -> пирожки.
Способов проверки, естественно, два: или начать с понятия "беляш" и обратиться к спискам-рецептам, авось беляши относятся к образцам, или начать с понятия "пирожки" и просмотреть списки, содержащие их перечень, авось там среди прочих содержатся беляши.
В нашем случае к успеху привел путь "от беляшей". ДУНЯ убедилась: беляши - это пирожки, и сразу получила из семантической сети сведения об их начинке.
Если бы хозяйка сообщила, что она хочет делать хин-кали, а не беляши, тогда ДУНЕ пришлось бы испытать запись:
? хинкали -> (входит в состав) -*- пирожки с обеих сторон. Оба испытания не обнаруживают согласия между двумя понятиями. ДУНЯ, когда так случается, честно признается: "Я не знаю, являются ли хинкали пирожками". Ее поведение похоже на поведение человека.
Шаг 5 диалога. Теперь хозяйка предлагает в качестве начинки вермишель. Машина вежливо отвергает вермишель. Она опирается на списки продуктов, входящие в семантическую сеть, просматривает все продукты, пригодные для начинки. Вермишели среди них не оказывается.
Означает ли это, что вермишель вовсе не пригодна для начинки пирожков. Да, если набор начинок, включенных в сеть, полный и исчерпывающий. Однако сделать набор полным трудно. Бывают пирожки с орехами, с вишней, с вязигой, с репой, с брынзой, с печенкой, с маком, с яблоками, с самыми диковинными начинками - смесями, попробуй, назови их все.
В семантическую сеть включаются только основные, "чистые", начинки и лишь некоторые смеси. В остальном ДУНЯ копирует рассуждения обычного человека.
Если среднего человека, невеликого знатока географии, спросить, является ли Донецк портом, он станет рассуждать примерно так: "Видимо, речь идет о любых портах - и морских и речных. Я знаю другие, менее важные, чем Донецк, города, являющиеся портами. Если б Донецк был портом, я бы что-нибудь об этом слышал. Скорее всего Донецк не порт!"
Аналогично ДУНЯ решает, что скорее всего вермишель не начинка, и просит хозяйку выбрать что-нибудь подходящее. Шаг 14 диалога подтверждает сообразительность ДУР1И.
Хозяйка призналась, что у нее. нет скалки для разделки теста. ДУНЯ посоветовала выход из положения - использовать бутылку. Совет достался ей почти даром: в списки семантической сети, относящиеся к кухонным приборам, входит отношение имеет заместителем; для противня, помните, заменой была сковородка, а для скалки припасена бутылка. Если бы ДУНЯ не нашла заместителя, она отделалась бы стандартной репликой:
"Пожалуйста, одолжите его (ее) у соседки - иначе дело не пойдет!"
Наше обсуждение диалога ДУНИ с хозяйкой показало, как разнообразно используется семантическая сеть в оценках и выводах программы. Если б была возможность посмотреть не один, а хотя бы с полдесятка протоколов диалога, впечатление оказалось бы гораздо более сильным: ДУНЯ утюжит свою сеть вдоль и поперек, напролет и от факта к факту, не торопясь.
Самым удивительным, однако, является не интенсивность движения по сети, а способы этого движения. ДУНЕ свойственна оригинальная, еще не встречавшаяся нам, манера вывода. ДУНЯ обладает негативной логикой.
Вспомните только, как она рассуждает: "неизвестно - значит, скорее всего нет", "других не знаю - значит, этот единственный", "достаточно посмотреть на дело с одного конца, тщательная проверка с обеих сторон необязательна", "начнем хоть как-нибудь, хоть неправильно, там уточним". Обратите внимание, сколько "нет" содержится в названиях дуниных эвристик.
Они не капризные и не упрямые, эти "нет", они полезные, работящие, благодетельные. Они поглощают пустые альтернативы, как фагоциты микробов, они избавляют ДУНЮ от лишней работы и берут на себя ответственность за сомнительные случаи.