Логическое программирование

37
Ю У р Г У М ехМ ат С П Логическое программирование Презентация 11 Экспертные системы

Upload: judith-williamson

Post on 01-Jan-2016

71 views

Category:

Documents


1 download

DESCRIPTION

Логическое программирование. Презентация 1 1 Экспертные системы. Содержание. Системы искусственного интеллекта Что такое экспертная система, ее функции Логические правила вывода Прямой и обратный вывод Формирование объяснений Учет неопределенностей Примеры простейших ЭС Общие выводы. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Логическое программирование

Ю У р Г У

МехМат

С П

Логическое программирование

Презентация 11Экспертные системы

Page 2: Логическое программирование

Ю У р Г У

МехМат

С ПСодержание

Системы искусственного интеллекта Что такое экспертная система, ее функции Логические правила вывода Прямой и обратный вывод Формирование объяснений Учет неопределенностей Примеры простейших ЭС Общие выводы

2

Page 3: Логическое программирование

Ю У р Г У

МехМат

С ПИскусственный интеллект

Языки логического программирования создавались как языки искусственного интеллекта

Искусственный интеллект – раздел информатики, изучающий человеческие

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

Знания, анализ ЕЯ, эмоции, …

Слабый ИИ – системы, использующие способы рассуждений Представление знаний + Поиск

3

Page 4: Логическое программирование

Ю У р Г У

МехМат

С ПМетоды ИИ4

Page 5: Логическое программирование

Ю У р Г У

МехМат

С ПСистемы, основанные на знаниях5

Для уточнения архитектуры системы важно определиться с: Представлением знаний (статических и динамических) Используемым механизмом логического вывода (алгоритмом поиска)

Page 6: Логическое программирование

Ю У р Г У

МехМат

С ППролог как язык ИИ Особенности языков ИИ – оперирование образами

а не числовыми и т.п. данными Основан на логике предикатов – естественный способ представления знаний

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

Встроенный механизм поиска с возвратом С возможностью изменения (метаинтерпретаторы)

Проект ЭВМ 5 поколения Множество потенциальных областей для применения:

Представление знаний Машинное обучение Распознавание естественного языка /машинный перевод Распознавание образов / классификация Робототехника Экспертные системы

6

Page 7: Логическое программирование

Ю У р Г У

МехМат

С П

Определение понятия экспертной системы Экспертная система - это программа, которая ведет себя подобно эксперту в

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

Система, способная заменить или упростить работу специалиста в какой-то конкретной предметной области

Примеры: MYCIN PROSPECTOR CYC Яндекс-Гуру

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

7

Page 8: Логическое программирование

Ю У р Г У

МехМат

С П

Функции, выполняемые экспертной системой

Экспертная система - это программа, которая ведет себя подобно эксперту в некоторой, обычно узкой, прикладной области.

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

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

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

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

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

8

Page 9: Логическое программирование

Ю У р Г У

МехМат

С ПФундаментальные функции

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

области - возможно, при этом возникнет необходимость иметь дело с неопределенностью

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

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

9

Page 10: Логическое программирование

Ю У р Г У

МехМат

С П

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

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

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

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

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

оболочкой экспертной системы или командным интерпретатором.

10

Page 11: Логическое программирование

Ю У р Г У

МехМат

С ПСтруктура в упрощенном виде…11

В классической продукционной экспертной системе: База знаний представляет собой множество правил ЕСЛИ-ТО (продукций) Рабочая память представляет собой множество пар атрибут-значение (троек объект-атрибут-значение), описывающих состояние решаемой задачиПроцесс логического вывода – это поиск в пространстве состояний множествакомбинаций рабочей памяти, переходы в котором задаются правилами.

Page 12: Логическое программирование

Ю У р Г У

МехМат

С П

Классификация экспертных систем (некоторые критерии)По назначению ЭС делятся на: ЭС общего назначения. Специализированные ЭС:

1. проблемно-ориентированные для задач диагностики, проектирования, прогнозирования 2. предметно-ориентированные для специфических задач, например, контроля ситуаций на атомных электростанциях.

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

времени. Время реакции в таких системах может задаваться в миллисекундах, и эти системы реализуются, как правило, на языке С++.

По типу использования различают: Изолированные ЭС. ЭС на входе/выходе других систем. Гибридные ЭС или, иначе говоря, ЭС интегрированные с базами данных и другими программными продуктами

(приложениями).

По сложности решаемых задач различают: Простые ЭС - до 1000 простых правил. Средние ЭС - от 1000 до 10000 структурированных правил. Сложные ЭС - более 10000 структурированных правил.

По стадии создания выделяют: исследовательский, демонстрационный, промышленный, коммерческий образец ЭС…

12

Page 13: Логическое программирование

Ю У р Г У

МехМат

С П

Критерии отличия ЭС от прочих программ ИИ Критериями выделения экспертных систем являются следующие:

1) отражает ли функционирование программы подход к проблемы со стороны человека;

2) может ли программа объяснить свои действия способом понятным человеку;

3) может ли взаимодействовать с оператором посредством диалога, подобного диалогу на естественном языке.

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

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

Часто к экспертным системам предъявляют требования работы в условиях неполноты и неопределённости главной функции. Тогда требуются рассуждения с использованием вероятностного подхода.

13

Page 14: Логическое программирование

Ю У р Г У

МехМат

С ПМодели знаний В зависимости от способов классификации и размещения информации Базы Знаний различают: продукционную, сетевую и фреймовую модели представления знаний. Сетевая модель основана на представление знаний в виде сети, вершины которой соответствуют понятиям, а дуги - отношениям между ними. В основе фреймовой модели лежит логическая группировка атрибутов объекта, при этом для хранения и обработки логические группы описываются во фреймах. Продукционная модель основывается на правилах вида «если-то» и позволяет помещать фрагменты фактического знания в правила языка Пролог. Именно так строятся ЭС, базирующиеся на правилах. При реализации ЭС, базирующейся на логике, БЗ представляется совокупностью утверждений в виде фактов. Вывод экспертного заключения при этом строится на основе стандартных средств работы со списками.

14

Page 15: Логическое программирование

Ю У р Г У

МехМат

С П

Представление знаний с помощью правил вывода

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

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

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

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

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

if предварительное условие Р then заключение С;if ситуация S then действие А;if соблюдаются условия С1 и С2 then условие С не соблюдается.

15

Page 16: Логическое программирование

Ю У р Г У

МехМат

С ПСвойства правил вывода

Обычно правила вывода оказываются наиболее естественной формой представления знаний, а также обладают перечисленными ниже дополнительными положительными свойствами: Модульность. Каждое правило определяет небольшой, относительно независимый фрагмент знаний. Наращиваемость. Новые правила могут вводиться в базу знаний относительно независимо от других правил. Модифицируемость (как следствие модульности). Существующие правила можно изменять относительно независимо от других правил. Прозрачность. Использование правил обеспечивает прозрачность системы. Это свойство является одним из важных отличительных свойств экспертных систем. Под прозрачностью системы подразумевается ее способность объяснять свои решения и заключения. Правила вывода позволяют легко найти ответ такие типы вопросов пользователя:1. Вопросы, в ответ на которые необходимо предоставить объяснение последовательности рассуждений: «Как было получено это заключение?»2. Вопросы, в ответ на которые необходимо предоставить объяснение предпосылок конкретного действия: «Для чего потребовалась эта информация?»

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

16

Page 17: Логическое программирование

Ю У р Г У

МехМат

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

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

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

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

17

Page 18: Логическое программирование

Ю У р Г У

МехМат

С П

Пример1: система MYCIN для медицинских консультаций Одно из правил вывода из системы MYCIN для медицинских консультаций. Параметр 0,7 указывает, до какой степени можно доверять этому правилу

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

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

18

Page 19: Логическое программирование

Ю У р Г У

МехМат

С П

Пример: экспертная система по распознаванию животных

19

Условия работы ЭС: Каждое животное идентифицируется по уникальному набору присущих ему

признаков Задавая последовательно вопросы о наличии/отсутствии определенного

признака, можно идентифицировать животное.

Представление знаний: Дерево И-ИЛИ Каждый узел дерева транслируется в продкукционное правило ЕСЛИ цвет - рыжевато-коричневый И узор – тёмные пятна И класс –

млекопитающее И отряд – хищник ТО животное – обезьяна Листья дерева соответствуют элементарным фактам, которые являются

исходными для решения задачи

Page 20: Логическое программирование

Ю У р Г У

МехМат

С П 20

Page 21: Логическое программирование

Ю У р Г У

МехМат

С ППроцесс логического вывода21

Page 22: Логическое программирование

Ю У р Г У

МехМат

С ПМеханизм логического вывода22

Page 23: Логическое программирование

Ю У р Г У

МехМат

С П

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

Но иногда более естественным способом является формирование рассуждений в противоположном направлении, от части "if" к части "then".

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

Какой механизм поиска (в глубину/в ширину/эвристический) используется в прямом и обратном выводе?Рассмотренные алгоритмы вывода использовали простейший метод поиска без возвратов (полу- случайным спуском)Возможно использовать алгоритмы поиска в глубину и в ширину с обоими методами выводаНо нужно помнить про размер пространства состояний и отдельного состояния!

23

Page 24: Логическое программирование

Ю У р Г У

МехМат

С ППочему продукционные ЭС?

Естественное представление правил – правила могут формулироваться даже экспертами самостоятельно

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

Прозрачный и простой механизм логического вывода Очевидный механизм объяснений Есть два варианта реализации ЭС на Прологе:

Напрямую кодирование правил на Прологе Создание «оболочки» экспертной системы со

специализированным языком представления знаний

24

Page 25: Логическое программирование

Ю У р Г У

МехМат

С ПЭС с обратным выводом – v.1.0

animal(обезьяна) :-class(млекопит), type(хищник), color(рыжкор), pattern(темпятна).

animal(тигр) :-class(млекопит), type(хищник), color(рыжкор), pattern(темполосы).

% (...)class(млекопит) :-

has(волосы); prop(даетмолоко).% (...)type(хищник) :- prop(ест_мясо).type(хищник) :- has(острые_зубы), has(когти), has(вперед_см_глаза).% (...)has(X) :- write('У животного есть '), write(X), write(' (введите да/нет):

'), read(да).prop(X) :- write('Животное обладает тем свойством, что '), write(X), write('

(введите да/нет): '), read(да).pattern(X) :- write('Животное имеет характер окраски: (текстом): '), read(X).color(X) :- write('Цвет животного (текстом): '), read(X)....?- animal(X).

В чем недостаток этого решения?

25

Page 26: Логическое программирование

Ю У р Г У

МехМат

С ППример запуска

Проблема:

При выводе вопросы задаются многократно

(предыдущие ответы пользователя не сохраняются)

?- animal(X).У животного есть волосы (введите да/нет): да.Животное обладает тем свойством, что ест_мясо (введите да/нет): да.Цвет животного (текстом): темполосы.У животного есть острые_зубы (введите да/нет): да.У животного есть когти (введите да/нет): да.У животного есть вперед_см_глаза (введите да/нет): да.Цвет животного (текстом): рыжкор.Животное имеет характер окраски: (текстом): темполосы.Животное обладает тем свойством, что даетмолоко (да/нет): нет.У животного есть волосы (введите да/нет): да.Животное обладает тем свойством, что ест_мясо (введите да/нет): да.Цвет животного (текстом): рыжкор.Животное имеет характер окраски: (текстом): темполосы.

X = тигр

26

Page 27: Логическое программирование

Ю У р Г У

МехМат

С ПЭС с обратным выводом – v.1.1

% ЭС с обратным выводом – v.1.1

:-dynamic fact/1.:-dynamic nfact/1.

animal(обезьяна) :-class(млекопит), type(хищник), color(рыжкор), pattern(темпятна).

animal(тигр) :-class(млекопит), type(хищник), color(рыжкор), pattern(темполосы).

% ...class(млекопит) :- has(волосы); prop(даетмолоко).type(хищник) :- prop(ест_мясо).type(хищник) :- has(острые_зубы), has(когти), has(вперед_см_глаза).% ...has(X) :- fact(has(X)), !.has(X) :- nfact(has(X)), !, fail.has(X) :- write('У животного есть '), write(X), write(' (да/нет): '), read(Z), assert_fact(Z, has(X)).

assert_fact(yes, X) :- asserta(fact(X)).assert_fact(no, X) :- asserta(nfact(X)).

color(X) :- fact(color(Z)), !, Z=X.color(X) :- write('Цвет животного (текст): '), read(Z), asserta(fact(color(Z))), !, Z=X.

prop(X) :- write('Животное обладает тем свойством, что '), write(X), write(' (да/нет): '), read(да).

pattern(X) :- write('Животное имеет характер окраски: (текстом): '), read(X).

%?- animal(X).

27

Page 28: Логическое программирование

Ю У р Г У

МехМат

С ПРезультат запуска

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

?- animal(X).

У животного есть волосы (да/нет): нет.

Животное обладает тем свойством, что даетмолоко (да/нет): нет.

У животного есть волосы (да/нет): нет.

Животное обладает тем свойством, что даетмолоко (да/нет): нет.

No

28

Page 29: Логическое программирование

Ю У р Г У

МехМат

С ПЭС с обратным выводом – v.1.2

animal(обезьяна) :-class(млекопит), type(хищник), color(рыжкор), pattern(темпятна).

animal(тигр) :-class(млекопит), type(хищник), color(рыжкор), pattern(темполосы).

% (...)

class(млекопит) :- has(волосы), asserta((class(млекопит):-!)).class(млекопит) :- prop(даетмолоко), asserta((class(млекопит):-!)).

type(хищник) :- prop(ест_мясо), asserta((type(хищник):-!)).type(хищник) :- has(острые_зубы), has(когти),

has(вперед_см_глаза), asserta((type(хищник):-!)).

has(X) :- fact(has(X)), !.has(X) :- nfact(has(X)), !, fail.has(X) :- write(‘У него есть ‘), write(X), read(Z), assert_fact(Z,has(X)).

assert_fact(yes,X) :- asserta(fact(X)).assert_fact(no,X) :- asserta(nfact(X)).

color(X) :- fact(color(Z)), !, Z=X.color(X) :- write(‘Цвет ‘), read(Z), asserta(fact(color(Z))), !, Z=X.

29

Page 30: Логическое программирование

Ю У р Г У

МехМат

С ПЭС с прямым выводом

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

Для реализации на Прологе: В качестве рабочей памяти будем использовать базу фактов Пролога (хотя можно

делать и более «правильно») Вывод нового факта – модификация базы Исходно все факты заносятся в базу фактов

30

Page 31: Логическое программирование

Ю У р Г У

МехМат

С ПЭС с прямым выводом – v.2.0.

solve(X) :- repeat, rule(_), animal(X).

rule(1) :- class(млекопит), type(хищник),color(рыжкор), pattern(темпятна), asserta(animal(обезьяна)).

rule(2) :- class(млекопит), type(хищник),color(рыжкор), pattern(темполосы), asserta(animal(тигр)).

rule(3) :- has(волосы), asserta(class(млекопит)).

rule(4) :- prop(даетмолоко), asserta(class(млекопит)).

rule(5) :- prop(ест_мясо), asserta(type(хищник)).

rule(6) :- has(острые_зубы), has(когти),has(вперед_см_глаза), asserta(type(хищник)).

…color(рыжкор).pattern(темполосы).prop(даетмолоко).has(острые_зубы).has(когти).has(вперед_см_глаза).?- solve(X).

31

Page 32: Логическое программирование

Ю У р Г У

МехМат

С ПЭС с прямым выводом – v.2.1

solve(X) :- repeat, rule(_), animal(X).

rule(1) :- class(млекопит), type(хищник),color(рыжкор), pattern(темпятна), !,retract((rule(1):-_)), asserta(animal(обезьяна)).

rule(2) :- class(млекопит), type(хищник),color(рыжкор), pattern(темполосы), !,retract((rule(2):-_)), asserta(animal(тигр)).

rule(3) :- has(волосы), !,retract((rule(3):-_)), asserta(class(млекопит)).

rule(4) :- prop(даетмолоко), !,retract(rule(4):-_)), asserta(class(млекопит)).

rule(5) :- prop(ест_мясо), !,retract((rule(5):-_)), asserta(type(хищник)).

rule(6) :- has(острые_зубы), has(когти),has(вперед_см_глаза), !,retract((rule(6):-_)), asserta(type(хищник)).

32

Page 33: Логическое программирование

Ю У р Г У

МехМат

С П

ЭС с прямым выводом – простейшая оболочка:-op(60,xfx,'--->').

[class(млекопит), type(хищник), color(рыжкор), pattern(темпятна) ] --->animal(обезьяна).

[class(млекопит), type(хищник), color(рыжкор), pattern(темполосы) ] --->animal(тигр).

[has(волосы)] ---> class(млекопит).[prop(дает_молоко)] ---> class(млекопит).[prop(ест_мясо)] ---> type(хищник).[has(зубы),has(когти), has(вперед_см_глаза)] ---> type(хищник)....

run :- animal(X), write(X), !.run :-Cond ---> Act,test(Cond),retract(Cond--->Act),asserta(Act),run.

test([]).test([A|T]) :- call(A), test(T).

33

Page 34: Логическое программирование

Ю У р Г У

МехМат

С ПСпециализированный ЯПЗ

rule anumal eq обезьяна

if class eq млекопит and type eq хищник

and color eq рыжкор and pattern eq темпятна.

rule anumal eq тигр

if class eq млекопит and type eq хищник

and color eq рыжкор and pattern eq темполосы.

rule type eq млекопит

if gives_milk eq y or has_hair eq y.

gives_milk ask ‘Оно даёт молоко? '.

eats_meat ask ‘Оно ест мясо? '.

color ask ‘Цвет? '.

:- op(10,yfx, and), op(15,yfx,or), op(5,xfx,eq), op(5,xfx,neq).

:- op(20,xfx, if).

:- op(25,fx, rule).

:- op(20,xfx, ask).

34

Page 35: Логическое программирование

Ю У р Г У

МехМат

С П

Запоминание новых фактов: экспертная система с памятью (полный пример – на стр. с заданием к л.р.)

% в начале работы читаем файл с базой знаний

старт:-

exists_file('animals.dat'),

retractall(_),

consult('animals.dat'),

(…).

% в конце работы – сохраняем знания в файл

game_iteration :-

write(‘Задумай животное…'),

% (…)

question('Хочешь продолжить ?'),!,

game_iteration;

tell('animals.dat'),

listing(факты/4),

told,

write('До встречи!').

35

Page 36: Логическое программирование

Ю У р Г У

МехМат

С ПВыводы

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

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

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

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

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

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

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

36

Page 37: Логическое программирование

Ю У р Г У

МехМат

С ПДоп. Литература по теме

Братко И. Алгоритмы искусственного интеллекта на языке PROLOG, 3-е издание. : Пер. с англ. — М. : Издательский дом "Вильямc", 200-1. — 640 с.

[http://www.twirpx.com/file/20446/] Новицкая Ю. В. Функциональное и логическое программирование.

Электронное учебное пособие

[http://courses.edu.nstu.ru/index.php?show=14&curs=331]

37