Структура продукционной системы

Рис. 4.6 Сеть фреймов

на фрейм Ребенок. Наследование слота «любит» из фрейма Ребенок.

Запрос 2. Каков возраст учеников?

Ответ: 6-17 – значение слота «возраст» берется из фрейма Ученик. Значение из фрейма Ребенок не берется, т.к. значение указано явно в самом фрейме «ученик», относительно которого задается вопрос.

По функциональному назначению различают следующие виды фреймов:

- фреймы – объекты (пример выше);

- фреймы – операции (например, фрейм «процесс синтеза корректирующих устройств», слоты: модель, алгоритм расчета, параметры и т.д.);

- фреймы – ситуации (например, фрейм «Аварийный режим работы аналогового датчика», слоты: напряжение, сила тока и т.д.);

- фреймы – сценарии (например, фрейм «Тушение пожара», слоты: место пожара, средства тушения и т.д.).

Фреймовая модель представления знаний используется в языках FRL (Frame Representation Language) ,KRL (Knowledge Representation Language) и др.

4.2.3 Особенности логического вывода

Во фреймовых языках основной операцией является поиск по образцу. Образец представляет собой фрейм, в котором заполнены не все структурные единицы, а только те, по которым среди фреймов, хранящихся в памяти системы, будут отыскиваться нужные фреймы. Образец может, например, содержать имя фрейма, а также имя некоторого слота во фрейме с указанием значения слота. Такой образец проверяет наличие в памяти системы фрейма с данным именем и данным значением слота, указанного в образце. В образце может быть указано имя некоторого слота и его значение. Тогда процедура поиска по образцу должна обеспечить выборку всех фреймов, в которых содержится слот с таким именем и таким значением слота, как у образца. Наконец, может быть задана некоторая логическая функция от имени фрейма, каких-то имен слотов и значений слотов. Таким образом, логический вывод в сети фреймов основан на операции сопоставления.

Другими процедурами, характерными для фреймовых языков, являются процедуры наполнения слотов данными, а также процедуры введения в систему новых фреймов-прототипов (т.е. новых знаний) и введения новых связей между ними.

Рассмотрим фрагмент описания из "мира блоков" (рис. 4.7) в виде фреймов на языке FRL.

Рис. 4.7 «Мир блоков»

(frame (name (Cube)) (length (NULL)) (width (IF-DEFAULT (use length))) (height (IF-DEFAULT (use length)))) (frame (name (B1)) (AKO (Cube)) (color (red)) (length (80))) (frame (name (B2)) (AKO (Cube)) (color (green)) (length (65))))

Слот AKO указывает на то, что объекты B1 и B2 являются подтипом объекта Cube и наследуют его свойства, а именно, length = width = height. Процедура - демон IF-DEFAULT заполняет значения слотов по умолчанию.

Допустим, роботу дается приказ «Возьми желтый предмет, который поддерживает пирамиду». На языке представления знаний вопрос записывается так:

(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).

Достоинства фреймов как модели представления знаний – возможность структуризации базы знаний благодаря свойствам иерархичности и наследования. Недостатком является сложность организации логического вывода.

 

Лекция 7. Основы построения продукционной системы

Продукционные системы – это системы представления знаний, основанные на правилах типа «условие-действие», называемых продукциями. Продукционная система состоит из базы правил (иногда этот набор правил называют продукционной памятью), интерпретатора правил, реализующего определенный механизм логического вывода, и рабочей памяти, содержащей фактические данные, описание цели и промежуточные результаты, в совокупности определяющие текущее состояние проблемы. Продукционные правила анализируют и преобразуют структуры данных в рабочей памяти, а интерпретатор правил управляет выбором и активизацией определенных правил в каждом цикле работы системы.

Продукционное правило, содержащееся в базе знаний продукционной системы, состоит из двух частей: антецедента и консеквента. Антецедент представляет собой посылку правила (условную часть) и состоит из элементарных предложений, соединенных логическими связками И, ИЛИ. Консеквент (заключение) включает одно или несколько предложений, которые выражают либо некоторый факт, либо указание на определенное действие, подлежащее исполнению. Продукционные правила записываются в виде:

P1, … , Pm ® Q1, … , Qn,

что означает: если предпосылки P1 и … и Pm верны, то выполнить действия Q1 и … и Qn. Предпосылки часто называют условиями, а действия – заключениями.

Предпосылки правил представляются в форме вектора объект атрибут значение, например:

(организм-1, (морфология, палочка)(аэробность, аэробный)).

В данном случае предпосылка состоит в том, что определенный микроорганизм имеет форму палочки и размножается в воздушной среде.

В языке CLIPS, основанном на продукционной системе представления знаний, правило имеет следующий формат:

defrule <наименование правила>

<предпосылка1>

<предпосылкаm>

=>

<действие1>

<действиеn>

Пример правила на языке CLIPS выглядит следующим образом:

defrule diagnosis

(organism (name ?org) (morfhology rod)(aerobicity aerobic))

=>

(assert

(organism

(name ?org)

(identify enterobacteria)

(confidence 0.8)))

С помощью префикса ? в правиле задаются переменные.

Перечень предпосылок в правиле представляет собой образец вектора, которому должно соответствовать состояние рабочей памяти. Действия, такие как (assert) в приведенном выше примере, задают изменения, которые должны быть внесены в состояние рабочей памяти. Например, указанное в приведенном выше правиле действие добавит в рабочую память новый вектор

(organism (name ?org) (identify enterobacteria) (confidence 0.8)).

Таким образом, правило diagnosis означает следующее: если некоторый микроорганизм имеет перечисленные в правиле свойства, то с определенной степенью уверенности этот микроорганизм можно отнести к указанному классу.

Основная функция рабочей памяти – хранить данные в формате векторов объект атрибут значение. Эти данные используются интерпретатором, который в случае присутствия (или отсутствия) определенного элемента данных в рабочей памяти активизирует правила, предпосылки в которых удовлетворяются наличными данными.