Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Архитектура ЭС, основанных на правилах

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

ЭС принято делить на три основных модуля (рис. 34):

· база знаний;

· машина логического вывода;

· интерфейс с пользователем.

База знаний содержит знания, относящиеся к конкретной прикладной области: факты, правила, эвристики, методы.

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

Интерфейс с пользователем обеспечивает двусторонний обмен информацией между пользователем и системой.

Рисунок 34. Три основных модуля экспертной системы

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

Будем рассматривать «если-то» правила:

Если(A), то (B), где A — условие, B — следствие.

Рассмотрим пример правила медицинской экспертной системы MYCIN.

«Если (реакция микроорганизма положительная, и форма микроорганизма — кокк, и структура — звенья), то (с вероятностью 0,7 этот микроорганизм — стрептококк).

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

«Если (класс угрозы — МИГ-21, и местонахождение угрозы — впереди, и близость угрозы — рядом), то (открыть огонь).

«Если-то» правила обладают следующими привлекательными свойствами:

Отражают способ мышления человека.

Являются естественными модулями — удаление старых и добавление новых правил происходит относительно независимо.

Системе легко организовать отчет о своих действиях, выдав в определенном порядке правила, использовавшиеся в процессе вывода.

Правила легко дополнить вероятностной оценкой: если(A), то (B) с уверенностью (F).

Механизм логического вывода для системы, основанной на правилах, является встроенным механизмом языка Пролог.

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

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

Для ЭС существует два типа машин вывода:

1. Логический вывод (дедукция), подобный тому, какой использует Пролог при доказательстве цели.

2. Вывод, основанный на системе продукций.

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

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

Управление в системе продукций имеет линейный характер. Правила упорядочены в линейный список, и система действует по принципу: «найти активное правило и применить его». Этот процесс аналогичен процессу возбуждения нейронов в коре головного мозга.

Будем в дальнейшем рассматривать только логический вывод. Существуют два основных механизма логического вывода:

1. Метод прямой цепочки рассуждений.

2. Метод обратной цепочки рассуждений.

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

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

r. s. t. u. v. w.

y, w ® x. u, z ® y. r ® z.

Запрос: истинно ли x?

Прямой вывод:

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

r ® z. Добавили z.

u, z ® y. Добавили y.

y, w ® x. Добавили x.

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

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

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

Обратный вывод:

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

Нашлиy, w ® x.

w. — истинный факт.

Истинно лиy?

Нашли u, z ® y.

u. — истинный факт.

Истинноли z?

Нашлиr ® z.

r. истинный факт.

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

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

Рассмотрим в качестве примера простую классификационную ЭС, основанную на обратном выводе.

2.2.2. ЭС «Угадай животное»

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

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

dpositive("имеет", "шерсть").

В своих рассуждениях система будет использовать ответы пользователя в предикатах positive и negative. Например, ответ, что животное имеет шерсть, будет считан в предикат positive(«имеет», «шерсть»).

Главная цель имеет вид:

goal

animal_is(X), write(X).

Во время сеанса с пользователем главная цель поочередно сопоставляется с каждым правилом определения животного из базы знаний. Приведем в качестве примера правило определения тигра:

animal_is("тигр"):-

it_is("млекопитающее"),

it_is("плотоядное"),

positive("имеет","желтовато-коричневый цвет"),

positive("имеет","черные полосы").

Легко заметить, что подцели в теле правила имеют разные типы. Цели типа positive и negative — это описание конечных признаков животного, они соответствуют тем вопросам, которые система непосредственно задает пользователю.

Цели типа it_is — это выбор подкатегории. Пользователю не задается вопрос типа «Является ли задуманное животное млекопитающем?». Система находит в базе знаний правило описания млекопитающего

it_is("млекопитающее"):-

positive("имеет","шерсть"),!.

Затем система задает пользователю вопрос «Имеет ли задуманное животное шерсть?». В конечном итоге все подцели сведутся к целям типа positive и negative.

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

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

it_is("плотоядное"):-

positive("имеет","острые зубы"),

positive("имеет","когти"),

positive("имеет","впередсмотрящие глаза").

Затем пользователь получает три новых вопроса: имеет ли животное острые зубы, когти и впередсмотрящие глаза. Если на все три вопроса будет получен ответ «Да», то система приходит к выводу, что задуманное животное — хищник.

/* "Птица, зверь или рыба" */

predicates

animal_is(symbol)

it_is(symbol)

positive(symbol, symbol)

negative(symbol, symbol)

ask(symbol,symbol,symbol)

remember(symbol,symbol,symbol)

clear_facts

run

% описание предикатов базы данных

database

dpositive(symbol,symbol)

dnegative(symbol,symbol)

% цель

goal

clear_facts,

run.

% факты и правила

clauses

% база знаний

animal_is("гепард"):-

it_is("млекопитающее"),

it_is("плотоядное"),

positive("имеет","желтовато-коричневый цвет"),

positive("имеет","темные пятна").

animal_is("тигр"):-

it_is("млекопитающее"),

it_is("плотоядное"),

positive("имеет","желтовато-коричневый цвет"),

positive("имеет","черные полосы").

animal_is("жираф"):-

it_is("копытное"),

positive("имеет","длинную шею"),

positive("имеет","длинные ноги"),

positive("имеет","темные пятна").

animal_is("зебра"):-

it_is("копытное"),

positive("имеет","черные полосы").

animal_is("страус"):-

it_is("птица"),

negative("может","летать"), % не летает

positive("имеет","длинную шею"),

positive("имеет","длинные ноги"),

positive("имеет","черно-белый цвет").

animal_is("пингвин"):-

it_is("птица"),

negative("может","летать"), % не летает

positive("может","плавать"),

positive("имеет","черно-белый цвет").

animal_is("альбатрос"):-

it_is("птица"),

positive("может","хорошо летать").

it_is("млекопитающее"):-

positive("имеет","шерсть"),!.

it_is("млекопитающее"):-

positive("может","давать молоко").

it_is("птица"):-

positive("имеет","крылья"),!.

it_is("птица"):-

positive("может","летать"),

positive("может","нести яйца").

it_is("рыба"):-

positive("может","плавать"),

positive("имеет", "плавники").

it_is("плотоядное"):-

positive("может", "есть мясо"),!.

it_is("плотоядное"):-

positive("имеет","острые зубы"),

positive("имеет","когти"),

positive("имеет","впередсмотрящие глаза").

it_is("копытное"):-

it_is("млекопитающее"),

positive("имеет","копыта"),!.

it_is("копытное"):-

it_is("млекопитающее"),

positive("может", "жевать траву").

/* Поиск в ДБД ответов пользователя. В случае отсутствия информации система задает вопрос и запоминает ответ*/

positive(X, Y):-

dpositive(X, Y),!. % в ДБД есть ответ "да"

positive(X, Y):-

not(dnegative(X, Y)), % в ДБД нет ответа "нет"

ask(X, Y, yes),!. % в ДБД был записан ответ "да"

positive(X, Y):-

not(dnegative(X, Y)), % в ДБД нет ответа "нет"

remember(X,Y,no),!, % в ДБД был записан ответ "нет"

fail.

negative(X, Y):-

dnegative(X, Y),!.

negative(X, Y):-

not(dpositive(X, Y)),

ask(X, Y, no),!.

negative(X, Y):-

not(dpositive(X, Y)),

remember(X,Y,yes),!,

fail.

% задание вопросов и анализ ответов

ask(X, Y, yes):-

!, write(X," ", Y, '\n'),

readln(Reply),

upper_lower(Reply,Reply1),

frontchar(Reply1, 'y', _),

remember(X, Y, yes),!.

ask(X, Y, no):-

!, write(X, " ", Y), nl,

readln(Reply),

upper_lower(Reply,Reply1),

frontchar(Reply1, 'n', _),

remember(X, Y, no),!.

% запись ответов в ДБД

remember(X, Y, yes):-

assertz(dpositive(X,Y)),!.

remember(X, Y, no):-

assertz(dnegative(X,Y)),!.

% очистка ДБД

clear_facts:-

retractall(_).

% запуск программы

run:-

animal_is(X),!, nl,

write("Ваше животное ", X),

nl, save("animal.dat"),clear_facts,

write("Нажмите пробел"),readchar(_).

run:-

nl, write("Ваше животное невозможно определить"),

nl, save("animal.dat"),

clear_facts, write("Нажмите пробел"),

readchar(_).

Задание. Дополнить базу знаний ЭС «Птица, зверь или рыба» следующими правилами:

1. Правилами для определения двух новых подкатегорий «дикое» и «домашнее».

2. Правилом определения домашней кошки.

3. Правилом определения любого животного, отсутствующего в базе знаний.




Поделиться с друзьями:


Дата добавления: 2015-06-27; Просмотров: 627; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.076 сек.