Выше уже затрагивался вопрос о процессах, которые манипулируют системами фреймов. Далее я не буду касаться тех аспектов, которые связаны с длительным управлением процессами мышления, включая такие проблемы, как многоцелевое управление, распределение времени между задачами, распределение памяти, энергетических и других видов ресурсов.
В значительно более короткие промежутки времени — назовем их эпизодами — деятельность механизмов человеческого мышления и понимания, как я это себе представляю, направлена на то, чтобы отыскать подходящий в данной ситуации (будь то планирование или распознавание образов) фрейм и заполнить задания отсутствия его терминалов конкретными данными. Это дает нам возможность представить крупные проблемы в виде совокупности более мелких, а также затрагивает все обычные вопросы эвристического программирования, например:
ПОИСК СВЕРХУ — ВНИЗ ИЛИ ГОРИЗОНТАЛЬНЫЙ. Следует ли вначале обойти все терминалы или же попытаться осуществить полное заполнение пробелов одного, центрального терминала? В действительности, ни тот, ни другой вариант не следует считать достаточно хорошим. Человек обычно стремится «семь раз отмерить и один раз отрезать», однако всегда должна существовать возможность немедленной обработки субфреймов, вызванных интересным или неожиданным событием.
ЦЕНТРАЛЬНОЕ УПРАВЛЕНИЕ. Должен ли фрейм после своей активации взять на себя управление и руководить заполнением своих собственных пробелов, или же эта операция должна вестись под руководством какого-то центрального процесса? И здесь ни одна из этих двух стратегий не является наилучшей. Ни демон, ни любой другой локальный процесс не может обладать знаниями обо всей ситуации в целом, достаточными для принятия правильных решений; однако ни один «руководитель» верхнего уровня не может знать требуемое количество подробностей.
Видимо, оба вопроса следует попытаться решить на основе, предложенной У.Мартином(1974) в противовес идее о «поддержке» и задуманной как стратегия обращения с ошибками и неудачами. Нельзя ни передавать управление подчиненным структурам, ни полностью сосредоточить его на верхнем уровне; поэтому нам требуется такой интерпретатор, который имел бы доступ и к целям верхнего уровня, и к работе отдельных демонов. Терминалы различных типов нуждаются в различных типах процессов, поэтому одной стратегией здесь не обойтись. Заполнение пробелов терминала стены фрейма комнаты предусматривает поиск и заполнение конкретными данными субфрейма «стена» более низкого уровня, в то время как конкретизация терминала «дверь» предусматривает присоединение фрейма комнаты к фрейму дома. Для включения в каждый фрейм данных относительно действий подобного типа каждый терминал мог бы указывать интерпретатору на те инструкции, где сказано, как собирать нужную информацию и как реагировать в случае трудностей и различного рода неожиданностей.
Итак, процесс конкретизации фреймов должен объединять в себе элементы поиска на дереве решений и активации демонов: управление поиском на дереве решений зависит от результатов проверок, которые могут выполняться с помощью демонов.
После того, как фрейм комнаты будет включен в работу, он может проверить, например, основное свойство стены. Такие проверки будут производиться на дереве, узлы которого образованы всевозможными фреймами стены, а его структура обеспечивает удобный нелинейный порядок для выяснения того, какие задания отсутствия могут быть сохранены, а какие требуют дополнительного рассмотрения.
В модели, использующей демоны, предполагается, что определенные терминалы вызванного фрейма активируют связанные с ними демоны с целью наблюдения за развертыванием событий во внешнем мире. Круглый предмет, находящийся высоко на центральной стене (а на боковой — имеющий вид эллипса), по предположению, должен быть часами, и это должно получить свое подтверждение в виде найденной цифры или радиальной линии (стрелки). Если такое подтверждение не будет получено, то «наблюдатель» всё же «увидит» часы, но описать их подробно не сумеет. Четырехугольник, расположенный на уровне глаз, может представлять собой картину или окно; в таких случаях дальнейший анализ, как правило, необходим.
Цель работы системы зрительного восприятия заключается не в том, чтобы постоянно отыскивать все находящиеся вокруг нас предметы; ее главной задачей является помощь в выработке ответов на вопросы путем объединения визуальной информации с предположениями, вырабатываемыми внутренними процессами. Однако в любом случае мы должны иметь возможность правильно ориентироваться в пространстве относительно нашего ближайшего окружения, что, кстати говоря, требуется для ответа на большинство из встающих перед нами вопросов. Поэтому определенная часть процесса конкретизации будет выполняться независимо от каких бы то ни было специальных вопросов или целей. Ясно, что нам требуется такой механизм, который умел бы «идти на компромисс» и позволял бы легко заменять «слабые» задания отсутствия при выявлении демонами непредвиденных обстоятельств.
Структура управления «продукциями» А.Ньюэлла и Г.Саймона (1972) образуется последовательным расположением (в некоторой памяти) локальных правил поведения. В системах, подобных языку CONNIVER (А.Макдермотт, Дж.Суссман, 1972), существуют явные структуры управления высших уровней; однако и здесь многое зависит от того, какие утверждения (аналогичные «продукциям») активны в данный момент; такой вид управления полностью явным уже не назовешь. Обе эти системы характеризуются высокой степенью локального процедурального управления. Все, что удается заметить, сопоставляется со своим «образцом-предшественником», который вызывает другой субфрейм, подключает его к процессу поиска и выполняет некоторые предписанные им функции.
Здесь существует еще одна проблема: процессы, являющиеся общими для многих систем, должны быть централизованы. Это способствует и экономии ресурсов, и возможности их усовершенствования, что достигается в процессе отладки. Слишком большая автономия мешает системе быстро и правильно реагировать при появлении новых целей высокого уровня.
Ниже предлагается один из вариантов, с помощью которого, по всей вероятности, можно будет преодолеть подобные затруднения. Фрейм представляется в виде «пакета» данных в процедурах, в таком же виде представляются и цели высокого уровня. Когда вызывается какой-либо фрейм, его пакет добавляется к «среде» текущей программы и определяемые им процессы получают непосредственный доступ к тем данным, которые им нужны, не ухудшая при этом возможности работы с остальными знаниями системы. Теперь следует рассмотреть два вопроса: как в деталях реализуется эта идея и насколько она хороша.
Рассмотрим базу данных, в которой множества фактов и демонов объединены в пакеты; любое их число может быть немедленно активировано или к ним в любой момент можно организовать доступ. Пакет может (рекурсивно) содержать любое число других пакетов. Это означает, что если один пакет активируется, то и все содержащиеся в нем пакеты также активируются, это открывает доступ к любым данным, за исключением тех которые были особым образом модифицированы или аннулированы. Таким образом, активация небольшого числа соответствующих пакетов приводит к созданию в системе той среды, которая требуется для проведения вычислений и которая содержит только необходимые для достижения заданной цели данные и процедуры. Конечно, в некоторых случаях может оказаться необходимым дополнить активную группу новыми пакетами для того, чтобы иметь возможность найти выход из какой-то особой ситуации, но неудобство такого рода во много раз меньше, чем бремя постоянного перебора ненужных знаний или бесполезной активации демонов.
Фрейм начинает процесс согласования с проверки любых сведений, которыми он уже располагает и которые могли быть получены в процессе его активации или проверки предыдущих гипотез. После этого, если разрабатываемая гипотеза еще не принята, но и не отклонена, фрейм начинает задавать вопросы, чтобы получить больше сведений о текущей ситуации. Характер этих вопросов будет меняться в зависимости от проблемной среды: программа, работающая в области медицины, может потребовать проведения некоторых лабораторных исследований, визуальная программа — дать указание более внимательно изучить некоторую область пространства. Иногда один вопрос может положить начало целому процессу распознавания: «Это может быть коровой — посмотреть, есть ли у нее вымя».
Последовательность, в которой задаются вопросы, определяется дополнительной информацией, хранящейся во фрейме. Эта информация указывает, какие основные черты следует выявлять в рамках данной проверки, каким образом на нее может повлиять уже имеющаяся информация и во что обойдется ответ на каждый вопрос. При выявлении каждой новой черты ее описание добавляется к пакету информации вместе с указанием на то, откуда получена эта информация и насколько она надежна. Этот пакет может быть использован и при переходе к другой гипотезе. Когда встречается незатребованная информация, она проверяется и пускается в дело.
Конечно, на практике невозможно добиться для такой системы идеального согласования. Для каждого возможного вида нарушений в дополнительных данных фрейма содержатся указания на то, следует ли это нарушение рассматривать как тривиальное, серьезное или фатальное (т.е. отклоняющее возможность использования этого фрейма). Такие индивидуальные черты, как размер обуви, пропорции тела или давление крови будут иметь перечни с указанием диапазона своего нормального изменения, а также данные других возможных значений с указанием на возможные последствия. Иногда какая-то черта может не способствовать ни принятию, ни опровержению выдвинутой гипотезы, но сама она может быть объяснена с помощью этой гипотезы; это также должно быть отмечено во фрейме. Если анализируемая ситуация содержит нечто необычное, не предусмотренное текущим фреймом (например, оленьи рога), то система будет рассматривать этот факт как серьезное нарушение, а сами невписывающиеся в обычную схему данные будут оцениваться в соответствии с информацией того пакета, который связан с этими данными, ибо ясно, что фрейм гипотезы не может содержать сведений о том, что делать со всякими не вписывающимися в него деталями.
Изредка какая-либо деталь будет получать для себя сильное подтверждение: если подобный факт удается заметить, то не нужно будет волноваться относительно правильности выбранного пути. Однако подобное случается крайне редко, поэтому обычная процедура состоит в том, чтобы выявленные детали накапливать до тех пор, пока либо не будет достигнут некоторый уровень приемлемости и гипотеза сможет перейти в разряд принятых, либо пока какое-то явное нарушение или совокупность более мелких нарушений не укажут на необходимость поиска другой гипотезы. (В настоящий момент я представляю себе уровень приемлемости в виде простой «копилки»: каждая согласованная черта увеличивает счет в этой «копилке», а каждая не согласованная, но тривиальная — его уменьшает. Возможно, что здесь может понадобиться и более сложная схема, но пока я не вижу для этого причин). В зависимости от ситуации уровень приемлемости может колебаться в значительных пределах: лишь один беглый взгляд может убедить меня в том, что стол по-прежнему находится на своем месте, тогда как счет в тысячу долларов заслуживает тщательной проверки, прежде чем его следует оплатить.
Иногда может случиться так, что, за исключением двух-трех серьезных нарушений, вся собранная нами модель довольно хорошо согласуется с реальной ситуацией. В таком случае система должна попытаться объяснить имеющиеся разногласия. Возможно, корова красная потому, что ее кто-то вымазал краской. Возможно, у больного не наблюдается высокое давление, какое обычно бывает при подобных заболеваниях, поскольку он принимает соответствующие лекарства. Если какое-то несоответствие может, в конце концов, получить удовлетворительное объяснение, то данную гипотезу следует принять. Иногда две модели будут настолько близки друг к другу, что их можно различить только с помощью особого теста или по ряду малозначительных деталей. Наиболее простым выходом из положения будет включение в оба родственных фрейма сведений о подобии, а также инструкций для правильного выбора нужного фрейма. В медицине подобное тестирование именуется дифференциальным диагнозом.
Отметим, что такое использование фреймов придает системе значительную гибкость, особо ценную в путаных и непредвиденных ситуациях. Формально корова может быть представлена как крупное четвероногое, но наша система не встретит особых затруднений, если у коровы не будет одной ноги, хотя во всем остальном эта корова достаточно хорошо вписывается в свой образ. (Заметим, что отсутствие ноги объяснить легко, а вот присутствие лишней — намного труднее.) Если такой системе предъявить нечто, не вписывающееся ни в одно из известных ей понятий, то она может, по крайней мере, указать, к чему близко это нечто, а также его основные отличия от понятия, предложенного в качестве первого приближения. Визуальная система, организованная в соответствии с этими принципами, может легко сориентироваться при встрече с такими высказываниями, как, например, «похожий на человека, только ростом 25 метров и зеленый». При определенных обстоятельствах такие описания могут образовывать ядра новых фреймов распознавания, представляющих собой законные, хотя и не имеющие наименования, концепты.
Важной чертой фреймов распознавания (и тех категорий, которые они представляют) является то, что они могут образовывать иерархические структуры. Благодаря этому система может вырабатывать гипотезы на многих уровнях, от весьма общих до очень конкретных, например: животное некоторого вида, четвероногое средних размеров, собака, колли, кличка Лесси. Каждому уровню соответствует свой фрейм распознавания, однако фреймы, с помощью которых порождаются конкретные гипотезы, включают в себя пакеты фреймов более высоких уровней; так, например, если в системе активирован фрейм «собака», то ей доступна информация фрейма «животное». Конечно, конкретный фрейм может содержать такие сведения, которые будут исключать из рассмотрения некоторые более общие данные: фрейм «утконос» будет включать в себя информацию фрейма «млекопитающее», но должен исключить сведения о живородящем варианте появления своего потомства. Часто общий фрейм будет использовать в качестве образца одно из своих конкретных проявлений; фрейм «млекопитающее» может скорее призвать на помощь фреймы «собака» или «корова», а не пытаться обеспечить соответствие входной фразы некоторой схематической модели идеального, но неконкретного животного. В подобном случае единственное различие между использованием понятий «млекопитающее» и «корова» будет заключаться в том, что во втором варианте переход к какому-либо иному конкретному представлению будет более сложным; в целом же проверке будут подвергаться одни и те же признаки.
Отметим, что подобная организация системы допускает существование большего числа различных иерархических сетей, которые могут перекрывать друг друга в самых различных (и интересных!) сочетаниях; так, например, с точки зрения зоосистематики дракон «комодо» должен быть пресмыкающимся, однако у него имеется четыре ноги и по своим повадкам он ближе к повадкам собаки, а не змеи. Чтобы решить, как представлять эти запутанные ситуации и что с ними делать, требуются дальнейшие изыскания. Некоторые фреймы следует считать фреймами-«паразитами», поскольку единственное их назначение состоит в том, чтобы прикрепиться к другим фреймам и тем самым изменить эффект от их применения. (Может быть, здесь более подходит термин «вирусный фрейм».) К фрейму «корова» может прикрепиться фрейм «статуя» и тем самым исключить такую его черту, как способность двигаться, изменить вид материала (мясо, скажем, на гипс), а формы оставить нетронутыми. Можно к животному добавить понятие «мифический» и сделать более правдоподобными его возможности самостоятельно летать, перевоплощаться, рассказывать сказки на латинском языке и менее правдоподобным его физическое существование. Тот же механизм может использоваться для более практических целей, например, чтобы учесть возможные осложнения для различных видов болезней. И еще одно замечание: нет ничего необычного в том, если к одному фрейму прикрепятся несколько фреймов-паразитов, взаимно не исключающих друг друга; например, вполне может существовать изваяние мифического животного.