Реферат: Экспертная система по породам дерева

 Теория:

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

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

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

 1. База знаний (БЗ).

2. Механизм вывода (МВ).

3. Система пользовательскогоинтерфейса (СПИ).

 База знаний — центральная часть экспертной системы.Она содержит правила, описывающие отношения или явления, методы и знания длярешения задач из области применения системы. Можно представлять базу знанийсостоящей из фактических знаний и знаний, которые используются для выводадругих знаний. Утверждение «Джон Ф. Кеннеди был 35-м президентомСоединенных Штатов» — пример фактического знания. «Если у вас болитголова, то примите две таблетки цитрамона» — пример знания для вывода.Сама база знаний обычно располагается на диске или другом носителе.

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

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

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

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

 Хорошо разработанныеоболочки экспертных систем обычно содержат механизм для добавления и обновленияинформации в базе знаний.

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

 

 Представление знаний

 

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

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

 Первый способ — этоклассификация и помещение фактов и чисел (фрагментов фактического знания) вправила Турбо-Пролога.

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

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

 Система пользовательского интерфейса

 

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

 1. Обработка данных, полученныхс клавиатуры, и высвечивание вводимых и выводимых данных на экране.

 2. Поддержка диалога междупользователем и системой.

 3. Распознавание ситуациинепонимания между пользователем и системой.

 4. Обеспечение«дружественности» по отношению к пользователю.

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

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

 Консультация должна завершаться ясным утверждением,выдаваемым системой, и объяснением последовательности вывода, приведшей к этомуутверждению.

 Система пользовательскогоинтерфейса должна также распознавать непонимание, между пользователем и системой,возникшее либо из-за ошибки, либо на принципиальной основе. Система должнареагировать соответствующим образом на эту ситуацию. Например, не должнопроизойти сбоя системы, если пользователь вводит 1, когда ожидается«да» или «нет», или когда пользователь задает бессмысленныйвопрос.

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

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

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

 

 Экспертная система направилах

 

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

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

 Работу этого интерпретатораможно описать последовательностью трех шагов:

 1. Интерпретатор сопоставляет образец правила сэлементами данных в базе знаний.

 2. Если можно вызвать болееодного правила, то интерпретатор использует механизм разрешения конфликта длявыбора правила.

 3. Интерпретатор применяетвыбранное правило, чтобы найти ответ на вопрос.

 Этот трехшаговый процессинтерпретации является циклическим и называется циклом«распознавание-действие».

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

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

 2. Избегать противоречащих продукционныхправил.

 3. Конструировать правила,опираясь на структуру присущую предметной области.

 Экспертные системы,базирующиеся на логике

 

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

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

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

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

 1. Система имеет предложенияв базе знаний, которые управляют поиском и сопоставлением. Интерпретаторсопоставляет эти предложения с элементами данных в базе данных.

 2. Если может быть вызваноболее одного правила, то система использует возможности Турбо-Пролога дляразрешения конфликта. Следовательно пользователю/программисту не нужнорассматривать потенциально возможные конфликты.

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

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

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

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

 Структура базы знанийэкспертной системы для выбора породы дерева.

 

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

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

 1) лиственная;

 2) хвойная;

 3) мягкая;

 4) твердая;

 5) очень твердая;

 6) серо-коричневая;

 7) светло-красная;

 8) светлая;

 9) темная;

10) смолистая;

11) очень смолистая;

12) Крупная текстура;

13) Мелкаятекстура.

 

 Каждая характеристика дляконкретной породы либо верна, либо не верна. Для каждой породы справедливыследующие характеристики:

 

 Порода — Характеристики

 Дуб — 1,4,6,13

 Бук — 1,4,7,12

 Осина — 1,3,8,13

 Тис — 1,5,9

 Ель — 2,3,8,10

 Сосна — 2,3,8,11

 Способ использования этойинформации зависит от реализации экспертной системы.

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

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

 

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

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

 Далее нужно объявить предикаты для выполнения вывода (машинавывода) и для взаимодействия с пользователем (система пользовательскогоинтерфейса).

 Все вместе это следующиедекларации:

 

 database

  xpositive(symbol,symbol)

 xnegative(symbol,symbol)

 

 predicates

 

 do_expert_job

 do_consulting

 ask(symbol,symbol)

 dog_is(symbol)

 it_is(symbol)

 positive(symbol,symbol)

 negative(symbol,symbol)

 remember(symbol,symbol,symbol)

 clear_facts

 

 Предикаты базы данныхxpositive и xnegative используются для хранения утвердительных и отрицательныхответов пользователя. Первые четыре предиката нужны для взаимодействия спользователем, а остальные шесть — для механизма вывода.

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

 Правило it_is производит этуидентификацию. Затем правило positive идентифицирует характеристики собаки вкаждом случае.

 И it_is и positiveиспользуются механизмом вывода. Ниже приведено полное продукционное правило длядуба:

 

tree_is(«Дуб»):-

 positive(tree,«Лиственная»),

 positive(tree,«Твердая»),

 positive(tree,«Серо_Коричневая»),

 positive(tree,«Мелкая_текстура»),!.

 Механизм вывода должен иметь правила для управленияданными вводимыми пользователем, для сопоставления их с продукционнымиправилами и сохранения «трассы» (или запоминания) отрицательных иутвердительных ответов. Правила positive и negative используютсядля сопоставления данных пользователя с данными в продукционных правилах.Правило remember (запоминание) производит добавление предложений с ответами yes(да) и no (нет), для использования при сопоставлении с образцом:

 

 positive(X,Y) :-

 xpositive(X,Y),!.

 positive(X,Y) :-

 not(negative(X,Y)),!,

 ask(X,Y).

 

 negative(X,Y) :-

 xnegative(X,Y),!.

 

 remember(X,Y,yes) :-

 asserta(xpositive(X,Y)).

 remember(X,Y,no) :-

 asserta(xnegative(X,Y)),

 fail.

 

 clear_facts :-

 retract(xpositive(_,_)),

 fail.

 clear_facts :-

 retract(xnegative(_,_)),

 fail.

 

 Назначение системыпользовательского интерфейса (СПИ) — связь вводимых пользователем данных ссистемой логического вывода. Главный модуль do_expert_job (выполни экспертнуюработу) и модуль do_consulting (выполни консультацию) осуществляют эту связь.Модуль ask(X,Y) (спроси) запрашивает данные у пользователя и сохраняет ответы вбазе знаний. Кроме того, окно обеспечивает дополнительное удобство во времяконсультации. Система пользовательского интерфейса полностью приведена ниже:

 

 do_expert_job :-

 setup_window,

 do_consulting,

 write(«Press spacebar.»),nl,

 readch(_),

 removewindow,

 exit.

 

 setup_window :-

 makewindow(1,7,7,«ANEXPERT SYSTEM»,1,16,22,58),

 nl,write("* * * * * * ** * * * * * * * * * * * *"),

 nl,write(" A TreeExpert "),

 nl,write(" "),

 nl,write(«This is a treeidentification system. „),

 nl,write(“Please answerthe question about „),

 nl,write(“the dog youwould like by typing in „),

 nl,write(“'yes' or'no'. „),

 nl,write(“* * * * * * ** * * * * * * * * * * * *»),

 nl,nl.

 

 do_consulting :-

 dog_is(X),!,nl,

 write(«the treeyou have indicated is a(n)»,X,"."),nl,

 clear_facts.

 do_consulting :-

 nl,write(«Sorry I can'thelp you! „),

 clear_facts.

 

 ask(X,Y) :-

 write(“ Question :-»,X," it ",Y," ?"),

 readln(Reply),

 remember(X,Y,Reply).

 

 Заметьте, что главный модульdo_expert_job вызывает модули setup_window (установи окно) и do_consulting(выполни консультацию). Консультирующий модуль имеет две альтернативные формы.Первая взаимодействует с механизмом вывода; если результат цикла«распознавание — действие» положительный, то результат сообщаетсяпользователю. Вторая форма сообщает о негативном результате.

 Теперь можно соединитьотдельные компоненты и сформировать полную экспертную систему на правилах длявыбора породы дерева.

 Эта программа проситпользователя выбрать режим консультации или выход из программы. Затемэкспертная система выбирает породу собаки на основании ответов пользователя навопросы, или в конце неудачного поиска выдает сообщение “Sorry!”

Реализация:

domains

database

 xpositive(symbol,symbol)

 xnegative(symbol,symbol)

predicates

 do_expert_bird.

 do_consulting

 ask(symbol,symbol)

 tree_is(symbol)

 positive(symbol,symbol)

 negative(symbol,symbol)

 remember(symbol,symbol,symbol)

 clear_facts

goal

 do_expert_bird.

clauses

 do_expert_bird:-

 makewindow(1,7,7,«Expert System»,1,3,22,71),

 nl,write("---------------------------------------------------"),

 nl,write(" A TreeExpert "),

 nl,write(" "),

 nl,write(" Please answer the questions 'yes' or'no'."),

 nl,write("---------------------------------------------------"),

 nl,nl,

 do_consulting,

 write(«Press spacebar.»),nl,

 readchar(_),

 removewindow,

 exit.

 do_consulting:-

 tree_is(X),!,nl,

 write(«Tree»,X,"."),nl,

 clear_facts.

 do_consulting:-

 nl,write(«Sorry!»),

 clear_facts.

 ask(X,Y):-

 write(" expert>",X," ",Y," ?"),

 readln(Reply),

 remember(X,Y,Reply).

 positive(X,Y):-

 xpositive(X,Y),!.

 positive(X,Y):-

 not(negative(X,Y)),!,

 ask(X,Y).

 negative(X,Y):-

 xnegative(X,Y),!.

 remember(X,Y,yes):-

 asserta(xpositive(X,Y)).

 remember(X,Y,no):-

 asserta(xnegative(X,Y)),

 fail.

 clear_facts:-

 retract(xpositive(_,_)),

 fail.

 clear_facts:-

 retract(xnegative(_,_)),

 fail.

tree_is(«Дуб»):-

 positive(tree,«Лиственная»),

 positive(tree,«Твердая»),

 positive(tree,«Серо_Коричневая»),

 positive(tree,«Мелкая_текстура»),!.

tree_is(«Бук»):-

 positive(tree,«Лиственная»),

 positive(tree,«Твердая»),

 positive(tree,«Светло_Красная»),

 positive(tree,«Крупная_текстура»),!.

tree_is(«Осина»):-

 positive(tree,«Лиственная»),

 positive(tree,«Мягкая»),

 positive(tree,«Светлая»),

 positive(tree,«Мелкая_текстура»),!.

tree_is(«Тис»):-

 positive(tree,«Лиственная»),

 positive(tree,«Очень_твердая»),

 positive(tree,«Темная»),!.

tree_is(«Ель»):-

 positive(tree,«Хвойная»),

 positive(tree,«Мягкая»),

 positive(tree,«Светлая»),

 positive(tree,«Смолистая»),!.

tree_is(«Сосна»):-

 positive(tree,«Хвойная»),

 positive(tree,«Мягкая»),

 positive(tree,«Светлая»),

 positive(tree,«Очень_Смолистая»),!.

tree_is(«Столб»):-

 positive(tree,«Не_дерево»),

 positive(tree,«Очень_Твердый»),!.

еще рефераты
Еще работы по информатике, программированию