Языки ориентированные на разработку экспертных систем

Российский  госсударственный университет  инновационных технологий и предпринимательства 

ПЕНЗЕНСКИЙ  ФИЛИАЛ 

Кафедра управление инновационными ресурсами 
 
 
 
 
 
 

Доклад

по  дисциплине:

«Информационная поддержка принятия решения»

на  тему:

Языки ориентированные  на разработку экспертных систем 
 
 
 
 
 
 
 
 
 
 
 
 
 

Выполнил:

студент гр. 07с1 Андрианов А.А.

Проверил:

Кочегаров И.И. 
 
 
 
 

Пенза, 2012г.

     Содержание

     Введение…………………………………………………………………….3

    1.Четыре  категории инструментальных программ, применяемые при проектировании………………………………………….4

     1.1 Оболочки экспертных систем…………………………………………4

     1.2 Языки программирования высокого  уровня………………………….4

     1.3 Среда программирования, поддерживающая  несколько парадигм…5

     1.4 Дополнительные модули………………………………………………5

     2.Языки  программирования высокого уровня……………………………7

     2.1Языки  описания порождающих правил……………………………….7

     2.2Объектно-ориентированные  языки…………………………………...10

     2.3Языки  логического программирования экспертных  систем………..12

     Заключение………………………………………………………………..14

     Список  источников………………………………………………………..16 
 
 
 
 
 
 

     Введение

     Экспертная  система (ЭС, expert system) — компьютерная программа, способная частично заменить специалиста-эксперта в разрешении проблемной ситуации. ЭС начали разрабатываться исследователями искусственного интеллекта в 1970-х годах, а в 1980-х получили коммерческое подкрепление.

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

     Похожие действия выполняет программа-мастер (wizard). Мастера применяются как в системных программах, так и в прикладных для интерактивного общения с пользователем (например, при установке ПО). Главное отличие мастеров от ЭС — отсутствие базы знаний; все действия жестко запрограммированы. Это просто набор форм для заполнения пользователем.

     Другие  подобные программы — поисковые или справочные (энциклопедические) системы. По запросу пользователя они предоставляют наиболее подходящие (релевантные) разделы базы статей (представления об объектах областей знаний, их виртуальную модель). Например, в Википедии аналогами статических визардов являются её структуры (типы данных, в терминологии ООП - классы и интерфейсы) - категории, списки, шаблоны, порталы, которые по названию объекта выдают пользователю все его имеющиеся для данной структуры Википедии аттрибуты. 
 
 
 

     1.Четыре  категории инструментальных  программ, применяемые  при проектировании.

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

     1.1 Оболочки экспертных  систем

       Оболочки экспертных систем (expert system shells). Системы этого типа создаются, как правило, на основе какой-нибудь экспертной системы, достаточно хорошо зарекомендовавшей себя на практике. При создании оболочки из системы-прототипа удаляются компоненты, слишком специфичные для области ее непосредственного применения, и оставляются те, которые не имеют узкой специализации. Примером может служить система EMYCIN, созданная на основе прошедшей длительную "обкатку" системы MYCIN. В EMYCIN сохранен интерпретатор и все базовые структуры данных — таблицы знаний и связанный с ними механизм индексации. Оболочка дополнена специальным языком, улучшающим читабельность программ, и средствами поддержки библиотеки типовых случаев и заключений, выполненных по ним экспертной системой. Дальнейшим развитием оболочки EMYCIN явились системы S.1 и М.4, в которых механизм построения цепочки обратных рассуждений, заимствованный в EMYCIN, объединен с фреймоподобной структурой данных и дополнительными средствами управления ходом рассуждений. 

     1.2 Языки программирования  высокого уровня

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

     1.3 Среда программирования, поддерживающая несколько  парадигм

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

     1.4 Дополнительные модули

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

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

     2.Языки программирования высокого уровня 

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

     2.1Языки описания порождающих правил

     Но, естественно, возможности языков высокого уровня также не беспредельны —  каждый из них имеет свои ограничения. Например, в языке OPS5 возможности динамической памяти ограничены размещением векторов в рабочей памяти, что не позволяет строить в ней рекурсивные структуры данных, такие как графы или деревья. При разработке системы MORE  из-за этого возникли серьезные сложности . Некоторые типы структур управления ходом выполнения, например рекурсивные и итерационные циклы, также с трудом реализуются в этом языке. В общем, это та цена, которую приходится платить за относительную простоту программного кода на языке OPS5 и эффективность его выполнения. В ранних моделях систем, основанных на порождающих правилах, до 90% времени работы уходило на выполнение операций сопоставления условий. Но позднее Форджи обратил внимание на возможные источники низкой эффективности такого упрощенного подхода. Алгоритм сопоставления RETE, предложенный Форджи и реализованный в языках описания порождающих правил семейства OPS, базируется на двух наблюдениях.

  • В левых частях порождающих правил, которые размещаются в рабочей памяти, часто встречаются повторяющиеся условия. Если одно и то же условие встречалось в N правилах, то при прежнем упрощенном подходе выполнялось N операций сопоставления. Это пример внутрицикловой итерации (within-cycle iteration).
  • Простейший подход при сопоставлении условий предполагает просмотр в каждом цикле всех элементов рабочей памяти, хотя содержимое рабочей памяти от цикла к циклу изменяется очень мало. Форджи назвал это межцикловой итерацией (between-cycle iteration).

     Предложенный  Форджи алгоритм значительно снижает количество внутрицикловых итераций за счет использования сети сортировки, имеющей древовидную структуру. Выражения в левой части порождающих правил компилируются и включаются в эту сеть, а алгоритм сопоставления довольно просто определяет конфликтующее множество, просматривая состояние сети в текущем цикле. Количество межцикловых итераций сокращается за счет обработки множества лексем, которые являются индикаторами удовлетворения условий, размещенных в рабочей памяти. Это множество лексем отображает изменения, происходящие в рабочей памяти от цикла к циклу, и таким образом позволяет выявить те условия, которые подлежат проверке. Поскольку никаких других процессов управления, кроме цикла распознавание-действие, в системе не существует, то обработать полученное в результате конфликтующее множество не представляет особого труда. Механизм разрешения конфликтов выполняет это, не обращая внимания на другие аспекты текущего контекста вычислений. Совершенно очевидно, что попытка использовать рекурсивные структуры данных потребует серьезного усложнения описанного процесса обработки правил. Точно так же и изменение режима управления приведет к тому, что механизм разрешения конфликтов вынужден будет анализировать дополнительную информацию. Разработчики языков, подобных OPS, всегда вынуждены искать компромисс между мощностью выразительных средств языка и эффективностью выполнения программного кода. До сих пор в среде исследователей предметом оживленных дискуссий является вопрос о том, удалось ли разработчикам OPS5 найти такой компромисс. Разработанные позже языки КЕЕ, КАРРА и CLIPS унаследовали от OPS5 синтаксис и механизм активизации правил. Все эти языки используют различные версии алгоритма RETE при формировании множества конфликтующих правил. Преодоление недостатков программирования порождающих правил лежит не на пути усложнения существующих языков программирования, а скорее на пути объединения их с другими парадигмами программирования, позволяющими использовать рекурсивные структуры данных и управления. Примером такого объединения может служить комбинирование порождающих правил и фреймов, что позволяет сопоставлять условия, специфицированные в правилах, с содержимым слотов фреймов . Для решения проблем управления в последнее время все чаще используется включение наборов правил в более мощную вычислительную среду, которая позволяет работать со списками заявок и с множеством источников знаний . 
 
 

     2.2Объектно-ориентированные языки

     Мы  уже обращали внимание на то, что формат правил хорошо согласуется с представлением знаний в форме "при выполнении условий Сь ..., С„ выполнить действие А", но менее подходит для описания сложных объектов и отношений между ними. Языки объектно-ориентированного программирования предоставляют в распоряжение программиста альтернативную программную среду для организации знаний в терминах декларативного представления объектов предметной области. Все, связанное с процедурной стороной решения проблем, распределяется между этими объектами, которые в таком случае располагают собственными процедурами и могут общаться друг с другом посредством протоколов передачи сообщений. Другим приятным аспектом объектно-ориентированного программирования является возможность использования таких стилей представления знаний, которые не встречаются в исчислении предикатов и в порождающих правилах. Вместо "размывания" знаний об объекте предметной области между множеством правил или аксиом, на которые они ссылаются, эти знания концентрируются в едином месте — в программном описании объекта. Эта концентрация является виртуальной в том смысле, что нет необходимости, чтобы вся информация об объекте предметной области хранилась в соответствующем ему программном объекте, но любая команда или запрос к этому объекту может быть реализована только через посылку сообщения этому объекту.

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

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

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

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

     2.3Языки логического программирования экспертных систем

     Критически  оценивая первый опыт применения инструментальных средств типа оболочек при проектировании экспертных систем, в частности опыт использования EMYCIN, многие исследователи полагали, что более перспективным является альтернативный подход, основанный на логическом программировании. Например, предполагалось, что порождающие экспертные системы, аналогичные MYCIN, могут быть довольно просто реализованы на языке PROLOG . Правила можно представить в виде фраз Хорна, в которых головной (позитивный) литерал соответствует заключению, а прочие (негативные) литералы будут соответствовать условиям.

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

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

  • индексированную базу данных фраз, которые можно использовать для представления правил, процедур или данных;
  • универсальный механизм сопоставления, который позволяет выполнять сопоставление данных и шаблонов, включающих переменные, и возвращать подстановку, которая может обеспечить их совпадение;
  • стратегию управления (поиск в глубину — depth-first search), основанную на правилах нисходящего поиска (фразы, которые размещены в базе данных ближе к "голове", обрабатываются первыми) и вычислении слева направо (подцели обрабатываются в том порядке, в котором они перечислены в списке).

     Действительно, дедуктивную порождающую систему  довольно ПРОСТО эмулировать на языке PROLOG. Можно без особого труда  разработать и простой интерпретатор, реализующий стратегию построения прямой цепочки вывода. Модификация рабочей памяти выполняется операторами assert и retract, которые добавляют или удаляют формулы из базы данных. Мы уже знаем , как можно организовать локальное управление ходом процесса в системе, основанной на фреймах, как организовать обработку значений по умолчанию и исключений, хотя эти методы и не вписываются в стандартную логику. Успешный опыт применения идей логического программирования, в частности создание программы МЕСНО продемонстрировал ряд явных отклонений от синтаксиса исчисления предикатов первого порядка и его процедурной интерпретации в стандартной версии PROLOG. Некоторые семантические и синтаксические ограничения в программах МЕСНО и PLANNER до сих пор не преодолены в системах, базирующихся на языках логического программирования. 
 
 
 
 
 

     Заключение 

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

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

     • Потребность в решении должна соответствовать затратам на ее разработку. Суммы затрат и полученная выгода должны быть реалистическими.

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

     Проблема  может быть решена с использованием символических методов рассуждения.

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

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

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

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

     Список  источников 

  1. Автоматизированное  проектирование информационно-управляющих  систем. Проектирование экспертных систем на основе системного моделирования: [Монография]/ Науч. ред.: Куликов Г.Г. – Уфа: Уфим. гос. авиац. техн. ун-т, 1999. – 223 с.
  2. Инжиниринг информационных и деловых процессов: Сб. науч. тр. / М-во общ. и проф. образования Рос. Федерации. Моск. гос. ун-т экономики, статистики и информатики; [Редкол.: Ю.Ф. Тельнов (отв. ред.) и др.]. – М.: Моск. гос. ун-т экономики, статистики и информатики, 1998. – 137 с.
  3. Информатика: учебник / Под. ред. проф. Н.В. Макаровой. – М.: Финансы и статистика, 1997. – 768 с.
  4. Компьютерные технологии обработки информации: Учеб. пособие / С.В. Назаров, В.И. Першиков, В.А. Тафинцев и др.; Под ред. С.В. Назарова. – М.: Финансы и статистика, 1995. – 248 с.
  5. Красилов А.А. Основы информатики. Определение и концепции // Учебное пособие, МФТИ, – М., 1990. – 80 с.
  6. Красилов А.А., Горельков А.Л. Стили программирования. – М., МФТИ, 1986. – 83 с.
  7. Попов Э.В. Экспертные системы. Решение неформализованных задач в диалоге с ЭВМ. – М.: Наука, 1987. – 288 с.
  8. Справочник. Искусственный интеллект. В 3-х книгах. – М., Радио и связь, 1990.
  9. Уотермен Д. Руководство по экспертным системам: Пер. с англ. – М.: Мир, 1989. – 388 с., ил.
  10. Уотермен Д. Руководство по экспертным системам: Пер. с англ. – М.: Мир, 1989.
  11. Уотермен Д. Руководство по экспертным системам: Пер. с англ. – М.: Мир, 1989.
  12. Гаврилова Т. А., Хорошевский В. Ф. Базы знаний интеллектуальных систем. Учебник. — СПб: Питер, 2000.
  13. Субботін С. О. Подання й обробка знань у системах штучного інтелекту та підтримки прийняття рішень: Навчальний посібник. — Запоріжжя: ЗНТУ, 2008. — 341 с.
  14. http://ru.wikipedia.org/ Википедия – свободная энциклопедия
  15. http://knowledge.allbest.ru/programming/d-2c0a65625b3ac68b5c53b88521216c37.html
  16. http://otherreferats.allbest.ru/programming/00070280_0.html
  17. http://knowledge.allbest.ru/programming/2c0a65625b3ac68b5c53b88521216c37_0.html
  18. http://life-prog.ru/view_ekspertnie_systemi.php?id=7
  19. http://www.itfru.ru/index.php/expert-systems
  20. http://www.aiportal.ru/articles/expert-systems/design-tools.html
  21. http://www.coolreferat.com/%D0%AD%D0%BA%D1%81%D0%BF%D0%B5%D1%80%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_6
Языки ориентированные на разработку экспертных систем