Основы теории экспертных систем



СОДЕРЖАНИЕ

Введение 2

1 Основы теории экспертных  систем 5

1.1 Классификации экспертных  систем 8

1.2 Этапы разработки  экспертных систем 11

1.3 Инструментальные средства  разработки экспертных систем 13

2 Описание предметной  области 15

3 Описание экспертной  системы 17

4 Алгоритм работы экспертной  системы 20

5 Реализация пользовательского  интерфейса 24

6 Результат работы  экспертной системы 26

Заключение 29

Список используемых источников 30

Приложение А 31

 

ВВЕДЕНИЕ

Искусственный интеллект, как научная дисциплина, состоит из нескольких крупных течений. Одно из них – экспертные системы.

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

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

Экспертные системы имеют одно большое отличие от других систем искусственного интеллекта: они не предназначены для решения каких–то универсальных задач, как например нейронные сети или генетические алгоритмы. Экспертные системы предназначены для качественного решения задач в определенной разработчиками области, в редких случаях – областях.[1]

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

Первую экспертную систему, которую назвали Dendral, разработали в Стэнфорде в конце 1960–х г.г. Эта была экспертная система, определяющая строение органических молекул по химическим формулам и спектрографическим данным о химических связях в молекулах.

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

1) существуют эксперты в данной области, которые решают задачу  

     значительно лучше, чем начинающие специалисты;

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

    будет оценить качество разработанной ЭС;

3) эксперты способны вербализовать (выразить на естественном языке)

    и объяснить используемые ими методы, в противном случае трудно    

    рассчитывать на то, что знания экспертов будут "извлечены" и 

    вложены в ЭС;

4) решение задачи требует только рассуждений, а не действий;

5) задача не должна быть слишком трудной (т.е. ее решение должно

    занимать у эксперта несколько часов или дней, а не недель);

6) задача хотя и не должна быть выражена в формальном виде, но все

    же должна относиться к достаточно "понятной" и  

    структурированной области, т.е. должны быть выделены основные

    понятия, отношения и известные (хотя бы эксперту) способы

    получения решения задачи;  

7) решение задачи не должно в значительной степени использовать

    "здравый смысл" (т.е. широкий спектр общих сведений о мире и о

     способе его функционирования, которые знает и умеет использовать

     любой нормальный человек), так как подобные знания пока не

     удается (в достаточном количестве) вложить в системы

    искусственного интеллекта.[2]

 

 

 

 

Применение ЭС может  быть оправдано одним из следующих факторов:

– решение задачи принесет значительный эффект, например экономический;

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

–   использование ЭС целесообразно в тех случаях, когда при передаче информации эксперту происходит недопустимая потеря времени или информации[3];

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

Целью проекта является подбор растения в подарок, учитывая особенности внешности, характера, рода деятельности и вкусовых предпочтений получателя.

Для достижения данной цели были поставлены следующие задачи:

    1. выявить предпочтения дарящего и получателя;
    2. изучить классификацию растений;
    3. выявить ассоциативные соответствия между данными, полученными от пользователя и различными представителями царства растений;
    4. разработать систему в среде CLIPS;
    5. разработать понятный для пользователя интерфейс обращения к системе.

 

 

 

 

 

 

1   Основы теории экспертных систем

1.1 Классификации экспертных систем

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

Рисунок 1 – Классификация  экспертных систем

По назначению классификацию экспертных систем можно провести следующим образом:

– диагностика состояния систем, в том числе мониторинг (непрерывное отслеживание текущего состояния);

– прогнозирование развития систем на основе моделирования прошлого и настоящего;

– планирование и разработка мероприятий в организационном и технологическом управлении;

– проектирование или выработка четких предписаний по построению объектов, удовлетворяющих поставленным требованиям;

– автоматическое управление (регулирование);

– обучение пользователей и др[4].

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

Классификация экспертных систем по методам представления знаний делит их на традиционные и гибридные. Традиционные экспертные системы используют, в основном, эмпирические модели представления знаний и исчисление предикатов первого порядка. Гибридные экспертные системы используют все доступные методы, в том числе оптимизационные алгоритмы и концепции баз данных[5].

По степени сложности экспертные системы делят на поверхностные и глубинные. Поверхностные экспертные системы представляют знания в виде правил «ЕСЛИ–ТО». Условием выводимости решения является безобрывность цепочки правил. Глубинные экспертные системы обладают способностью при обрыве цепочки правил определять (на основе метазнаний) какие действия следует предпринять для продолжения решения задачи. Кроме того, к сложным относятся предметные области в которых текст записи одного правила на естественном языке занимает более 1/3 страницы.

Классификация экспертных систем по динамичности делит экспертные системы на статические и динамические. Предметная область называется статической, если описывающие ее исходные данные не изменяются во времени. Статичность области означает неизменность описывающих ее исходных данных. При этом производные данные (выводимые из исходных) могут и появляться заново, и изменяться (не изменяя, однако, исходных данных)[4].

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

– подсистема моделирования внешнего мира;

– подсистема связи с внешним окружением.

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

 

 

 

 

1.2 Этапы разработки экспертной системы

В ходе работ по созданию ЭС сложилась определенная технология их разработки, включающая шесть следующих этапов, изображенных на рисунке 1:

Рисунок 2 – Этапы разработки ЭС

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

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

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

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

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

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

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

На этапе опытной эксплуатации проверяется пригодность экспертных систем для конечного пользователя. Пригодность экспертных систем для пользователя определяется в основном удобством работы с ней и ее полезностью. Под полезностью ЭС понимается ее способность в ходе диалога определять потребности пользователя, выявлять и устранять причины неудач в работе, а также удовлетворять указанные потребности пользователя (решать поставленные задачи). В свою очередь, удобство работы с ЭС подразумевает естественность взаимодействия с ней (общение в привычном, не утомляющем пользователя виде), гибкость ЭС (способность системы настраиваться на различных пользователей, а также учитывать изменения в квалификации одного и того же пользователя) и устойчивость системы к ошибкам (способность не выходить из строя при ошибочных действиях неопытного пользователях)[6].

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

Рисунок 3 – Структура статической ЭС

Основные компоненты экспертной системы:

–  решатель (интерпретатор);

– рабочая память (РП), называемая также базой данных (БД);

– база знаний (БЗ);– компоненты приобретения знаний;

– объяснительный компонент;

– диалоговый компонент.

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

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

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

Компонент приобретения знаний автоматизирует процесс наполнения ЭС знаниями, осуществляемый пользователем–экспертом.

Объяснительный компонент объясняет, как система получила решение задачи (или почему она не получила решение) и какие знания она при этом использовала, что облегчает эксперту тестирование системы и повышает доверие пользователя к полученному результату.

Диалоговый компонент ориентирован на организацию дружественного общения с пользователем как в ходе решения задач, так и в процессе приобретения знаний и объяснения результатов работы[5].

 

 

 

 

 

1.4 Инструментальные средства разработки экспертных систем

На проектирование и создание одной экспертной системы ранее требовалось 20–30 человек–лет. В настоящее время имеется ряд средств, ускоряющих создание. Эти средства называют инструментальными или инструментарием. Использование инструментальных средств разработки экспертных систем сокращает время, затрачиваемое на их создание, в 3–5 раз.

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

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

Системы типа оболочки экспертных систем создаются, как правило, на основе какой–нибудь экспертной системы, достаточно хорошо зарекомендовавшей себя на практике. При создании оболочки из системы–прототипа удаляются компоненты, слишком специфичные для области ее непосредственного применения, и оставляются те, которые не имеют узкой специализации. Примером может служить система EMYCIN, созданная на основе прошедшей длительную «обкатку» системы MYCIN. В EMYCIN сохранен интерпретатор и все базовые структуры данных – таблицы знаний и связанные с ними механизм индексации. Оболочка дополнена специальным языком, улучшающим читабельность программ, и средствами поддержки библиотеки типовых случаев и заключений, выполненных по ним экспертной системой[3].

 

Инструментальные средства категории языки программирования высокого уровня избавляют разработчика от необходимости углубляться в детали реализации системы – способы эффективного распределения памяти, низкоуровневые процедуры доступа и манипулирования данными. Одним из наиболее известных представителей таких языков является OPS5. Этот язык прост в изучении и предоставляет программисту гораздо более широкие возможности, чем типичные специализированные оболочки. Следует отметить, что большинство подобных языков так и не было доведено до уровня коммерческого продукта и представляет собой скорее инструмент для исследователей[7].

Средства программирования поддерживающие несколько парадигм включают несколько программных модулей, что позволяет пользователю комбинировать в процессе разработки экспертной системы разные стили программирования. Среди первых проектов такого рода была исследовательская программа LOOP, которая допускала использование двух типов представления знаний: базирующегося на системе правил и объектно–ориентированного. На основе этой архитектуры во второй половине 1980–х годов было разработано несколько коммерческих программных продуктов, из которых наибольшую известность получили KEE, KnowledgeCraft и ART. Эти программы предоставляют в распоряжение квалифицированного пользователя множество опций и для последующих разработок, таких как КАРРА и CLIPS, и стали своего рода стандартом. Однако освоить эти языки программистам далеко не так просто, как языки, отнесенные к предыдущей категории.

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

 

 

2  Описание предметной  области 

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

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

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

Подцарство низшие содержит два типа растений: водоросли и  лишайники. Водоросли делятся на зеленые, бурые, эвгленовые и харовые. Лишайники делятся на накипные, листовидные и кустистые.

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

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

Папоротникообразные делятся  на: папоротники, плауны и хвощи.

 

 

В состав голосеменных входят следущие классы: хвойные, гинкговые, гистовые.

Покрытосеменные (или  цветковые) делятся на: двудольные и  однодольные[11].

Схема классификаций  растений представлена на рисунке 4:


Рисунок 4 – Схема классификации растений

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

 

 

 

 

 

 

 

 

  1. Описание экспертной системы

Экспертная система  выбора растения в качестве подарка  написана в среде CLIPS. В проекте описывается царство растений. Создается класс rastenie, в котором будут перечисленны свойства необходимые для принятия решения.

(defclass rastenie

      (is–a USER) ;; пользовательский класс

(role concrete)

(pattern–match reactive)

(slot carstvo(type SYMBOL)  (create–accessor  read–write));подцарство растений

(slot tip(type SYMBOL)   (create–accessor  read–write))     ;; тип

(slot klass (type SYMBOL)   (create–accessor  read–write))       ;;  класс

(slot vid (type SYMBOL) (create–accessor  read–write))       ;; конкретный представитель

)

Первые три слота — системные. Они нужны объектно–ориентированной надстройке CLIPS (COOL — CLIPSobject–oriented language). Эти слоты COOL извещают о том, что rastenie  – это пользовательский класс; sokovizimalkaявляется конкретным классом, т.е. возможно создание экземпляров этого класса.

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

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

 

 

 

 

 

Следующие четыре слота  представляют свойства и члены данных класса:

– слот carstvo содержит иформацию о подцарстве царства растений, может принимать значения niz или vys (низшие или высшие);

– слот tip принимает одно из значений: vodorosli, lishainiki, mhi, paporotnikoobraznye, golosemennye, cvetkovye, в зависимости от определенного подцарства и выбранного типа растения;

– слот klass принимает одно из восемнадцати значений: zelenye, burye, evglenovye, harovye, nakipnye, listovidnye, kustistye, antocerotovye, pechenochnye, listostebelnye, paporotniki, plauny, hvoshi, hvoinye, gingkovye, gistovye, dvudolnye, odnodolnye, соответствующих определенному классу растений;

– слот vid принимает одно из 58 значений, соответствующих названию вида растения определенного класса.

Формируется экземпляр класса:

(definstances r (PPK of rastenie

(carstvo 0)

(tip 0)

(klass 0)

(vid 0) ))

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

Имея определение класса и экземпляр класса можно составить правила и функции осуществления подбора растения.

Функция vybor (?question ?answer)  принимает параметры номер вопроса и ответ пользователя. На основе полученных данных  изменяет значения слотов экземпляра классов.

Правила (rule–sys1)– (rule–sys58) производят анализ указанных параметров и определяют конечный результат (выбор растения).

Правило rule–print записывает результат работы системы(предлагаемое растение) в файл out.txt.

Описание классов и функция vybor содержатся в файле vybor.clp, все правила – в result.clp.

 

 

 

 

 

 

  1. Алгоритм работы экспертной системы

Работу системы можно  разбить на три этапа:

    1. получение данных от пользователя;
    2. анализ полученных данных;
    3. вывод результата.

Получение данных от пользователя производится по схеме вопрос–ответ. Всего пользователь отвечает на четыре вопроса. Каждый следующий вопрос зависит от ответа на предыдущий.

После получения ответов  на каждый вопрос вызывается функция vybor, которая изменяет значения слотов экземпляра класса rastenie.

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

При ответе на первый вопрос определяется в каком подцарстве (низшем или высшем) необходимо искать нужное растение. На рисунке 5 представлена блок–схема подбора растения в подцарстве низшие.

Описание блоков рисунка 5:

1 – начало

2 –  выбор типа

3 –  вопрос для соответствующего типа

4 –  выбор класса

5 –  вопрос для соответствующего класса

6 – выбор вида

7 – соответствующий  результат

 

 

Рисунок 5 – Блок–схема подбора растения в подцарстве низшие

 

 

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

Описание блоков рисунка 6:

1 – начало

2 –  выбор типа

3 –  вопрос для соответствующего типа

4 –  выбор класса

5 –  вопрос для соответствующего класса

6 – выбор вида

7 – соответствующий  результат 

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

Рисунок 6 – блок–схема определения растения в подцарстве высшие

 

 

  1. Реализация пользовательского интерфейса

Для реализации пользовательского  интерфейса использовались: HTML, CSS, JavaScript, PHP5.

Для связи пользовательского  интерфейса и средой clips использовалось расширение РНР5 phlips версии 0.5.1.

Интерфейс реализован на языке текстовой разметки HTML. Для визуального оформления и навигации применены CSS стили и JavaScript библиотека Jquery.

Вызов функций CLIPS производился при помощи следующих функций РНР:

clips_clear() ─ очистка экспертной системы

clips_load ( string file ) ─ загрузка файла среды CLIPS

clips_function_call ( string function_name [, string arguments] ) – вызов  функции среды CLIPS

clips_run() – запуск правил среды CLIPS

Основы теории экспертных систем