Ошибки в тестах! |
Системы представления знаний
Традиционно, системы представления знаний (СПЗ) для ИС используют следующие основные виды моделей: фреймы, исчисления предикатов, системы продукций, семантические сети, нечеткие множества. Рассмотрим эти модели подробно.
Фреймы предложены в 1975 году Марвином Минским [ 2.1 ] . Фрейм (рамка в переводе с англ.) - это единица представления знаний, запомненная в прошлом, детали которой могут быть изменены согласно текущей ситуации. Фрейм представляет собой структуру данных, с помощью которых можно, например, описать обстановку в комнате или место встречи для проведения совещания. М.Минский предлагал эту модель для описания пространственных сцен. Однако с помощью фреймов можно описать ситуацию, сценарий, роль, структуру и т.д.
Фрейм отражает основные свойства объекта или явления. Структура фрейма записывается в виде списка свойств, называемых во фрейме слотами. Рассмотрим запись фрейма на языке FRL (Frame Representation Language) [ 2.2 ] - языке, похожем на LISP, но только внешне из-за наличия скобок.
Например, фрейм СТОЛ может быть записан в виде 3 слотов: слот НАЗНАЧЕНИЕ ( purpose ), слот ТИП ( type ) и слот ЦВЕТ ( colour ) следующим образом:
(frame СТОЛ (purpose (value(размещение предметов для деятельности рук))) (type (value(письменный))) (colour (value (коричневый))))
Во фрейме СТОЛ представлены только ДЕКЛАРАТИВНЫЕ средства для описания объекта, и такой фрейм носит название фрейм -образец. Однако существуют также фреймы -экземпляры, которые создаются для отображения фактических ситуаций на основе поступающих данных и ПРОЦЕДУРАЛЬНЫХ средств (демонов), например, следующих:
IF-DEFAULT - по умолчанию
IF-NEEDED - если необходимо
IF-ADDED - если добавлено
IF-REMOVED - если удалено
Слот IS-A или AKO (A Kind Of) определяет иерархию фреймов в сети фреймов. Такая связь обеспечивает наследование свойств. Слот isa указывает на фрейм более высокого уровня, откуда неявно наследуются свойства аналогичных слотов.
Рассмотрим фрагмент описания из "мира блоков" ( рис. 2.1) в виде фреймов.
(frame (name (Cube)) (isa (Block World)) (length (NULL)) (width (IF-DEFAULT (use length))) (height (IF-DEFAULT (use length)))) (frame (name (B1)) (isa (Cube)) (color (red)) (length (80))) (frame (name (B2)) (isa (Cube)) (color (green)) (length (65)) (who_put (value (NULL)) (IF_NEEDED (askuser))))
Слот isa указывает на то, что объекты B1 и B2 являются подтипом объекта Cube и наследуют его свойства, а именно, length = width = height. Демон IF_NEEDED запускается автоматически, если понадобится узнать, кто поставил B2 на стол. Полученный ответ ( Робби ) будет подставлен в значение слота who_put. Аналогично работают демоны IF-ADDED и IF-REMOVED.
Допустим, однорукому роботу Робби дается приказ "Возьми желтый предмет, который поддерживает пирамиду". На языке представления знаний (ЯПЗ) вопрос записывается так:
(object ? X (color (yellow)) (hold ? Y (type (pyramid))))
Программа сопоставления с образцом находит в базе знаний описание объектов:
(frame (name (B3)) (type (block)) (color (yellow)) (size (20 20 20)) (coordinate (20 50 0)) (hold (P2)))
и
(frame (name (P2)) (type (pyramid)) ...)
Ответ получен X = B3, Y = P2 и Робби выдается команда take(object=B3).
Таков общий механизм представления знаний в виде фреймов. Реализация этого механизма потребует решения других, более сложных проблем, например, автоматического ввода знаний для трехмерных объектов, работы с трехмерными быстродвижущимися объектами (своеобразный тест на реакцию) и т.д. Эти проблемы ждут своего эффективного решения.