Пусть задано порождающее правило в форме 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Пусть задано порождающее правило в форме



а1$1...am$m-> b1$'1...bn$'n

В нем a1$1... аm$m часто называют антецедентом (antecedent) правила, а b,$'1... bn$'n консеквентом (consequent) правила, по аналогии с условным выражением логики высказываний (см. главу 8). Условный оператор обычно записывается в виде

p U q1 что означает, "если р, то q", например "если вы упали в реку, то будете мокрым".

Однако часто значок 'U' заменяют значком '->', что вряд ли стоит делать, поскольку последний несет более императивный или разрешающий смысл. Как правило, он говорит не столько о логическом следствии, сколько о том, что нужно сделать, или о том, что можно было бы сделать.

Правило в форме Х->У говорит о том, что можно записать, сгенерировать или породить консеквент У при заданном анцеденте X. Оно не говорит о том, что набор X, У является неразрывно связанной последовательностью, как в примере с купанием в реке. Правила переписывания в теоретической лингвистике называются "порождениями", поскольку правило вида

S->NP+ VP

имеет следующую интерпретацию: "один из способов сформировать предложение S состоит в том, чтобы взять существительное (NР) и добавить к нему глагол (VP)".

Системы порождающих правил для решения проблем

Хотя в приложении к экспертным системам порождающие правила и отличаются от тех правил переписывания, о которых шла речь выше, фундаментальные принципы и формальные свойства их остаются теми же. Но при этом нас интересует не столько сама по се-

бе грамматика символических структур, как в примере с палиндромами, сколько способы представления некоторой проблемы и преобразования этого представления, которое должно привести ее к виду, о котором можно сказать: "Это решение данной проблемы".

Синтаксис представления правил

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

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

подмножества N имен объектов предметной области;

подмножества Р имен свойств, которые рассматриваются в качестве атрибутов объектов;

подмножества V допустимых значений атрибутов.

На практике подмножества N и V перекрываются.

Используемая грамматика, как правило, имеет вид триад объект-атрибут-значение. Триада (v, л, w) существует, если v принадлежит N и л принадлежит Р, w принадлежит V. Например, триада

(ОРГАНИЗМ-1, морфология, палочка)

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

Представленная синтаксическая форма обобщается в том случае, когда нужно для некоторого объекта v представить «вариантов пар атрибут-значение (л1,w1)..., (лn,wn). В таком случае они объединяются в вектор в форме

(v, л1, w1,..., лn, wn).

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

(organism-1 (morphology rod) (aerobicity aerobic)).

В дальнейшем мы будем повсеместно использовать именно такой синтаксис, поскольку CLIPS будет нашим основным программным инструментом.

Имея в своем распоряжении словарь символов и грамматику, регламентирующую порождение символических структур, можно представить в машинном виде исходное состояние интересующих нас проблем. Эти представления соответствуют аксиомам канонической системы — они представляют собой некоторую символическую структуру, которую нужно преобразовывать, применяя имеющиеся правила в определенном порядке.

Теперь перейдем к самим правилам. В этих правилах антецеденты должны соответствовать допустимым символическим структурам, а консеквенты — содержать специальные операторы манипулирования такими структурами. Детали этого процесса станут вам понятны после изучения следующего раздела, где будет описан вычислительный механизм применения таких правил.

Продукционная система (production system) состоит из множества правил (иногда этот набор правил называют продукционной памятьюproduction memory), интерпретатора правил, который решает, когда надлежит применить каждое из них, и рабочей памяти, содержащей данные, описание цели и промежуточные результаты, в совокупности определяющие текущее состояние проблемы. Именно структуры данных в рабочей памяти анализируются и преобразуются порождающими правилами. Обращение к правилам синхронизируется текущими данными, а интерпретатор правил управляет выбором и активизацией определенных правил в каждом цикле.

Схематически правила в продукционной системе имеют такую обобщенную форму:

P1,..., Pm,->Q1,..., Qn

которая читается следующим образом:

если предпосылки Р1 и... и Рт верны, то выполнить действия Q1 и... и Qn.

Предпосылки часто называются условиями, а действия — заключениями, поскольку один из видов действий — сделать заключение, если встретилось такое сочетание условий, которое делает истинным или вероятным определенное порождающее правило, как это было показано в главе 3. Иногда используется и другая терминология, согласно которой предпосылки называются левой частью правила, а действия — правой.

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

(organism-1 (morphology rod) (aerobicity aerobic)).

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

Правило, которое включает такую предпосылку, на языке CLIPS имеет вид, показанный в листинге 5.1.

Листинг 5.1. Оргправило системы MYCIN, записанное на языке CLIPS

(defrule diagnosis

(patient (name Jones)

(organism organism-1))

(organism (name organism-1)

(morphology rod)

(aerobicity aerobic)) => (assert

(organism

(name organism-1)

(identify enterobacteriaceae)

(confidence 0.8)))

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

(defrule <наименование правила> <предпосылка1>

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

<действие 1>

<действие n>

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

(organism (name organism-1)

(identify enterobacteriaceae)

(confidence 0.8)).

Таким образом, правило diagnosis означает следующее: если у определенного пациента обнаружена связь с определенным микроорганизмом, который имеет перечисленные в правиле свойства, то мы можем с определенным шансом на успех предполагать, что этот микроорганизм принадлежит такому-то классу. Это правило не является общим, поскольку применимо только к конкретному пациенту (Jones) и конкретному микроорганизму (organism-1). Гораздо чаще нам придется применять правила, которые пригодны для любого пациента и любого микроорганизма. В такие правила поле имени пациента вовсе не включается.

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

Листинг 5.2. Правило, в котором используются переменные

(defrule diagnosis

(patient (name?pat)

(organism?org))

(organism (name?org)

(morphology rod)

(aerobicity aerobic)) => (assert

(organism

(name?org)

(identify enterobacteriaceae) (confidence 0.8)))



Поделиться:


Последнее изменение этой страницы: 2016-04-07; просмотров: 211; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.69.152 (0.008 с.)