Методы представления знаний в экспертных системах

Методы представления знаний, основанные на аппа­рате фреймов.

Одна из разновидностей аппарата семантических сетей связана с концепцией фрейма. Основная идея фреймового подхода к представлению знаний — более жесткое, чем при подходе, основанном на семантической сети, выделение объектов и ситуаций проблемной среды и их свойств, т. е. все, что касается объекта или ситуации и важно с позиций решаемых задач, не «размывается по сети», а представляется во фрейме.

Название фрейм произошло от английского «frame», что означает «каркас, рамка». Фрейм состоит из слотов, получивших свое название от английского слова «дыра».Структура слота имеет следующий вид:

{<имя слота><f1> < V1>; < f2> < V2>; ... ; < fN > < VN>;

<q1>;<q2 >;...;<qm > }.

Где fi - имена атрибутов, характерных для данного слота;

V i - значения этих атрибутов или множества их значений;

qi - ссылки на другие слоты.

Рассмотрим пример слота:

{<автомобиль><номерной знак> < крт 20-70, мяу 65-79>; <состояние> < исправен, в ремонте>; < тип > < газ24, газ24>; <колонна>;<гараж>;<водитель > }.

имена слотов часто называют ролями или ролевыми метками.

Для упорядочивания информации, хранящейся в отдельных слотах , используется более крупная структурная единица - фрейм. Фрейм имеет следующую структуру:

{<имя фрейма><имя слота> < значение слота>

<имя слота> < значение слота> ... }.

Каждый фрейм - готовая структура, которая при том или ином заполнении слотов значениями превращается в описание конкретного факта, события, явления или процесса. Различают фрейма - прототипы, хранящие знания о предметной области и конкретные фреймы, заполняющие эти единицы знания конкретными знаниями.

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

Продукционный подход

Данный метод представления знаний относится к процедурным методам. Он ориентирован на использование процедур и условий их применения. Знания представляются на языке продукций. Основным элементом языка является продукция представляющая следующую конструкцию ( следует заметить, что в разных системах синтаксис записи продукций может быть различным):

( i ), P; A Þ B; ( j ), Q

Словесно эта запись может быть интерпретирована так:

«Если выполняется условие P и имеет место А , то надо сделать В и изменить условие продукции с номером j на условие Q» . ( i ) - номер написанной продукции.

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

P = ù (P1vP2v P3 v P4)

Где P1 - тиреотоксикоз;

P2 - сахарный диабет;

P3 - декомпенсированная форма аддиссоновой болезни (надпочечники) ;

P4 - тяжелая форма коронарной недостаточности.

Пусть также:

A - гипотериоз

В - прием тиреодина по 0.3 г.

Q - увеличение значения q 0.3 г.

Предикат P5 ( q< 1) оценивает допустимость очередного приема тиреодина, т.к. суточная норма q не должна превышать 1 г.

Тогда продукция в целом будет иметь вид:

( i ), P, P5 ; A Þ B; ( i ), Q.

Смысл данной продукции может быть сформулирован словесно:

«Если у больного гипотериоз, нет противопоказаний к приему лекарства, его суточная норма еще не достигнута, то необходимо принять 0.3 г. Тиреодина и учесть этот факт в суточной норме». Считается, что по истечению суток какая-то другая продукция, следящая за течением времени, возвращает значение q к нулю.

Представление знаний с использованием фреймов и продукций.

Каждый из способов представления знаний - фреймы и продукционный подход - имеют свои достоинства и недостатки. Так фреймы позволяют хорошо структурировать знания, но не позволяют описывать процедуры их обработки, Использование языка продукций наоборот, не позволяет задавать структуру знаний. Проблема может быть решена путем совместного использования фреймов и продукций. При этом продукции выступают как часть фрейма, т.е. его отдельные слоты, к которым может передаваться управление. Рассмотрим конкретный пример.

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

Конкретный фрейм

{< компьютер >

{<начало>;<begin><_>;<установка>}

{< МАТ_ПЛАТА >;<name><start, M2N, M2N1394, GA-9456ZM-S2, finish>;

<частота><_ , 3800, 3000, 1800, _ >; <ОЗУ><_,4, 2, 2,_> <PRICE><_868,775,632,_>; <результат>}

{<hdd>>;<name><start, HD160hj, hd321KJ, HD501LJ, finish>;

<ЕМКОСТЬ><_,160, 320, 500, _>; <price><_,337,469,765, _>; <результат>}

{<монитор>;<name><start, L1753S-BF,L1950TR-F,206BF,finish>;

<size><_, 17, 19, 20, _>;

<price><_, 1148, 1658, 1632,_>; <результат>}

{<принтер>;<name><start,LBP2900, PIXMA IP1800,PIXMA IP3300, ML2015, finish>;

<тип><_, лазерный,струйный, струйный ,лазерный,_>;

<формат><_, а4, а4, а4,а4, _>;

<price><_, 653, 291, 398, 571, _>; <результат>}

{<окончание>;<end><_>;<завершение>}

{<установка>;<продукция1>< (1) true; true Þs:= 0. >}

{<результат>;<продукция2>

< (1) name= start; true Þpm:=10000; tname:=nil.

(2) price< pm; (name<> start)and(name<> finish) Þ

tname:= name; (2) pm:= price.

(3) name=finish;tname<> nilÞ print(tname, pm);s:=s+ pm. >}

{< завершение >;<продукция3>< (1) true; true Þ print(s) >}}.

В примере имя фрейма и ролевые метки - имена слотов выделены жирным шрифтом. Пусть компьютер состоит из:

· материнской платы, который характеризуется именем name (тип платы), тактовой частотой, объемом оперативной памяти, и ценой;

· жесткого диска, который характеризуется именем name (название HDD), емкостью, ценой

· монитора, который характеризуется именем name (название монитора), размером экрана, ценой.

· принтера, который характеризуется именем name (название принтера), его типом действия, форматом печати, ценой.

Кроме того, имеются слоты с ролевыми метками начало, окончание, установка, результат, завершение, которые с помощью продукций обеспечивают выбор конфигурации м минимальной ценой. Процесс извлечения знаний рассмотрим на примере следующего фрейма запроса:

фрейм запроса

{< компьютер >

{<начало>;<begin><_>;<установка>}

{< МАТ_ПЛАТА >;<name>< ?>;

<частота><? >; <ОЗУ><,4>; <price><?>; <результат>}

{<hdd>>;<name><?>;<ЕМКОСТЬ>< 320>; <price><?>; <результат>}

{<монитор>;<name><?>;<size><?>; <price><?>; <результат>}

{<принтер>;<name><?>;

<тип><струйный>;<формат>< а4>; <price><?>; <результат>}

{<окончание>;<end><_>;<завершение>}

В этом фрейме не все значения атрибутов слотов имеют конкретные значения, указаны лишь те, по которым согласно требованиям будет определяться оптимальная конфигурация компьютера. Пусть эти требования следующие:

· объем оперативной памяти -4Gb;

· емкость жесткого диска -320 Gb;

· тип принтера -струйный;

· формат печати - А4.

Значения атрибутов, которые подлежат определению, обозначены знаком вопроса.

Процесс извлечения знаний происходит следующим образом:

В начале по имени фрейма запроса компьютер ищется соответствующий ему конкретный фрейм. Затем идет последовательная обработка слотов и их атрибутов. Слот начало обеспечивает начальные установки. Он состоит из атрибута begin с безразличным значением (обозначается знаком подчеркивания). Этот атрибут не несет в себе никакой информации и служит лишь для формального соблюдения структуры слота. Далее следует ссылка на другой слот с именем установка. Управление передается слоту с этим именем. Значением атрибута этого слота с названием продукция1 есть продукция, которая безусловно (условия выполнения продукции определены как true) обнуляет цену с именем S.

Обработка слота МАТ_ПЛАТА состоит в последовательном выборе значений атрибутов. Сначала выбираются и анализируются все первые по порядку значения, затем - вторые и так далее, пока не будет рассмотрено все множество значений. У атрибута name начальным и конечным значениями являются соответственно константы start и finish. Эти константы имеют вспомогательное значение. Рассмотрим их использование для этого слота, для других принцип остается аналогичным. Наложением слота МАТ_ПЛАТА из фрейма запроса на слот конкретного фрейма происходит попытка последовательного согласования значений атрибутов обоих фреймов. Первые значения будут безусловно согласованы, т.к. в конкретном фрейме стоят символы подчеркивания, указывающие на безразличность значений. При этом значение name будет конкретизировано константой start. Происходит обращение к ссылке на слот с именем результат. Этот слот вызывается и анализируется атрибут с именем продукция2. Значением этого атрибута является множество продукций, которые последовательно выполняются. Поскольку значением name является start , то выполняется продукция с меткой (1). При этом текущему значению минимальной цены устройства присваивается заведомо максимальное значение pm:=10000, а текущему имени устройства с минимальной стоимостью присваивается значение константы «ничего» : tname:=nil. Это указывает на то , что имя устройства пока не найдено. Очевидно, что продукции с метками (2) и

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

name= M2N

частота=3800

price=868

После этого удачного согласования происходит аналогично описанному выше обращение к продукциям слота результат. При этом будет выполняться продукция с меткой (2). Параметрам будут присвоены следующие значения:

pm:= 868

tname:= = M2N

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

Другие атрибуты слота МАТ_ПЛАТА указанным требованиям не удовлетворяют, поэтому обращения к продукции (2) происходить не будет. Обработка значения

name= finish будет происходить аналогично случаю start , только здесь будет выполняться продукция (3), которая суммирует с общей суммой набора стоимость выбранного устройства и выводит на печать выбранное устройство и его стоимость. Условием выполнения этой продукции будет tname<> nil, т.е. если ни одно из устройств не выбрано, то суммирование не выполняется.

Обработка слотов с именами HDD, монитор и принтер будет выполняться аналогично обработке слота МАТ_ПЛАТА. В завершение с помощью слота окончание (аналогично слоту НАЧАЛО) управление передается продукции3 слота завершение, которая выводит на печать суммарную стоимость оптимальной конфигурации компьютера.

Предлагаю ознакомиться с аналогичными статьями: