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


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



ЗНАЕТЕ ЛИ ВЫ?

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



ТО

С совершенной определенностью (1.0) можно предположить, что каждое из этих правил в данном случае не применимо.

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

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

МЕТАПРАВИЛO002

ЕСЛИ

(1)инфекция относится к классу pelvic-abscess, и

(2)существуют правила, в предпосылках которых упоминается enterobacteriaceae, и

(3)существуют правила, в предпосылках которых упоминается грамполохительная окраска,

ТО

Есть основания предполагать (0.4), что приоритет следует отдать первым из перечисленных правил.

Обратите внимание на то, что в приведенном метаправиле также присутствует коэффициент уверенности меньше единицы.

Последний пример демонстрирует метаправило, которое относится к общей стратегии решения проблем, а не к конкретным проблемам предметной области.

МЕТАПРАВИЛO00З

(1)существуют правила, в предпосылках которых не упоминается текущая цель, и

(2)существуют правила, в предпосылках которых упоминается текущая цель,

ТО

С совершенной определенностью (1.0) можно утверждать, что сначала следует активизировать первые из перечисленных правил.

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

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

ЕСЛИ

(1)х алкоголик,

ТО

сначала следует рассмотреть правила, имеющие отношение к болезни А, а затем правила, имеющие отношение к болезни Б может быть сформулировано более абстрактно:

(1) существует определенная причина X, которая склоняет нас к мысли, что Y относится к категории Z, и

(2)существуют специальные правила, связанные именно с категорией Z,

ТО

Применить эти правила прежде, чем попробовать другие, допустимые в данных условиях.

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

Мы еще вернемся к теме метаправил в главах 12, 15, 18 и 23, а сейчас только отметим, что это довольно продуктивная идея, которой, тем не менее, следует пользоваться осмотрительно. Если программа потратит значительную часть времени на определение того, какими правилами пользоваться, то это может сказаться отрицательно на ее производительности.

Свойство выпуклости в CLIPS: пингвины обретают способность летать (или не обретают)

В языке CLIPS отсутствуют средства определения метаправил. Но в интерпретаторе этого языка имеется возможность анализировать свойство правил, названное разработчиками salience (выпуклость), и отдавать при разрешении конфликтов предпочтение тому правилу, которое характеризуется большим значением этого свойства.

Вспомним пример с классификацией пингвинов, рассмотренный в главе 2. Нужно так организовать систему правил, чтобы то правило, которое имеет отношение именно к пингвинам, имело более высокий приоритет перед более общим правилом, имеющим отношение ко всем птицам. Для этого правилу, касающемуся пингвинов, придается большая "выпуклость", чем правилу, относящемуся ко всем птицам. Это правило как бы выталкивается на авансцену. На языке CLIPS определение правил тогда будет иметь вид

(defrule (bird (type?X))

(assert (yes))

) (defrule

(declare (salience 100))

(bird (type penguin))

=>

(assert (no)))

По умолчанию любое правило имеет нулевое значение свойства salience, если оно явно не задано. Этому свойству можно придавать как положительное значение, "выталкивая" соответствующее правило вперед, а можно присвоить и отрицательное значение, насильно отправляя его в конец очереди.

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

Рекомендуемая литература

Прекрасное изложение базовых принципов применения правил в задачах искусственного интеллекта читатель найдет в книге Нильсона [Nilsson, 1980]. Дэвис и Кинг обобщили большой материал, касающийся продукционных систем, и проанализировали слабые и сильные стороны этой парадигмы программирования [Davis and King, 1977]. Эта работа до сих пор остается наиболее подробной. Современные исследования, касающиеся возможности использовать параллелизм в продукционных системах, описаны в работе Шмольца [Schmolze, 1991].

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

Читателей, интересующихся подробным описанием методики реализации стратегии управления производящими правилами, мы отсылаем к книге Браунстона [Brownston et ai, 1985].

Упражнения

1. Как вы понимаете термин "разрешение конфликтов"?

2. Пусть А — это алфавит {а, b} и пусть в этом алфавите существуют аксиомы ab, bа.

Какие строки будут сформированы следующими порождающими правилами:

(Р1) $a -> $ab

(Р2) $b -> $bа

3. Пусть А — это алфавит {а, b} и пусть в этом алфавите существуют аксиомы аа, bb.

Какой набор порождающих правил может сформировать строки вида аа, bb, aabb, bbaa, aabbaa, bbaabb, aabbaabb, bbaabbaa и т.д.

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

Все Аi являются Вi Все Вi являются Сi Все Аi являются Сi

Все Аi являются Еi Некоторые Аi являются С, Все Сi являются Вi

Все Аi являются Вi

Ни один из Сi не является Вi

Ни один из Сi не является Аi

Эти суждения несложно представить в виде диаграмм Венна. Смоделируйте их с помощью языка CLIPS в виде трех правил.

Вам понадобится единственный шаблон, в котором будет определено, что утверждение (statement) состоит из квантификатора (quantifier), который может принимать одно из трех значений: all (все), some (некоторые) или по (ни один) и двух множеств.

(deftemplate statement

(field quantifier (type SYMBOL))

(field setl (type SYMBOL))

(field set2 (type SYMBOL)))

Так, выражение "Все А1 являются В" примет вид

(statement (quantifier all) (setl As) (set2 Bs))

Проверить, как работает программа, можно на таких фактах:

(deffacts the-facts

(statement (quantifier all) (setl puppies)

(set2 dogs)) (statement (quantifier all) (setl dogs)

(set2 mammals)) (statement (quantifier all) (setl mammals)

(set2 animals)) (statement (quantifier no) (setl sea-cretures)

(set2 dogs)) (statement (quantifier some) (setl sea-cretures)

(set2 mammals)))

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

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

Модифицируйте программу таким образом, чтобы она запрашивала о забытых симптомах. Самый простой способ сделать это — добавить правила, которые в предпосылках имеют только одно условие — жалобы на боль. Такое условие, например, может иметь вид

(sign (symptom pain) (organ abdomen) (site lower))

Действие правила состоит в том, чтобы добавить в рабочую память вопрос, который нужно задать. Затем понадобится правило, которое собственно и задаст вопрос и поместит в рабочую память вектор sign, сформированный в соответствии с полученным ответом. Шаблон для вектора question (вопрос) имеет такой вид:

(deftemplate question

(field symptom (type SYMBOL))

(field organ (type SYMBOL) (default NIL))

(field answer (type SYMBOL) (default NIL)))



Поделиться:


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

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