slide1
Download
Skip this Video
Download Presentation
Логическое программирование

Loading in 2 Seconds...

play fullscreen
1 / 22

Логическое программирование - PowerPoint PPT Presentation


  • 163 Views
  • Uploaded on

Логическое программирование. Факультет Прикладной математики и физики Кафедра Вычислительной математики и программирования Московский авиационный институт (государственный технический университет). Экспертные системы. Экспертные системы.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Логическое программирование' - kenda


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

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

Факультет Прикладной математики и физики

Кафедра Вычислительной математики и программирования

Московский авиационный институт (государственный технический университет)

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

пользователь

Механизм логич. вывода

База знаний (множество правил)

эксперт

Рабочая память

(пары атрибут-значение)

Инженер по знаниям

slide6
Представление знаний
  • Дерево И-ИЛИ
  • Каждый узел дерева транслируется в продкукционное правило
    • ЕСЛИ цвет - рыжевато-коричневый И узор – тёмные пятна И класс – млекопитающее И отряд – хищник ТО животное - обезьяна
  • Листья дерева соответствуют элементарным фактам, которые являются исходными для решения задачи
slide7
Процесс логического вывода

Разрешение конфликта

Конфликтное множество

Отбор применимых правил

Применяемое правило

Цель получена?

Применение правила

База знаний

Рабочая память

slide8
Критерии разрешения конфликтов
  • Первое по тексту правило
  • Система приоритетов
  • Правило с максимальным (минимальным) числом посылок
  • Правило с максимальным числом заключений
  • ...
slide10
Поиск и механизм логического вывода
  • Какой механизм поиска (в глубину/в ширину/эвристический) используется в прямом и обратном выводе?
  • Рассмотренные алгоритмы вывода использовали простейший метод поиска без возвратов (полу-случайным спуском)
  • Возможно использовать алгоритмы поиска в глубину и в ширину с обоими методами вывода
  • Но нужно помнить про размер пространства состояний и отдельного состояния!
slide11
Почему продукционные ЭС?
  • Естественное представление правил – правила могут формулироваться даже экспертами самостоятельно
  • Возможность контроля непротиворечивости базы знаний на этапе добавления правил
  • Прозрачный и простой механизм логического вывода
  • Очевидный механизм объяснений
slide12
Реализация экспертных систем на Прологе
  • 2 варианта реализации:
    • Напрямую кодирование правил на Прологе
    • Создание «оболочки» экспертной системы со специализированным языком представления знаний
slide13
ЭС с обратным выводом – 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), read(yes).

color(X) :- write(‘Цвет: ‘), read(X).

...

?- animal(X).

slide14
ЭС с обратным выводом – 1.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), 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.

slide15
ЭС с обратным выводом – 2.0

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.

slide16
ЭС с прямым выводом
  • Известно свойство, что прямой вывод эмулируется при помощи обратного перестановкой посылок и заключений правил
  • Для реализации на Прологе:
    • В качестве рабочей памяти будем использовать базу фактов Пролога
      • (хотя можно делать и более «правильно»)
    • Вывод нового факта – модификация базы
    • Исходно все факты заносятся в базу фактов
slide17
ЭС с прямым выводом – 1.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).

slide18
ЭС с прямым выводом – 1.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(хищник)).

slide19
ЭС с прямым выводом – простейшая оболочка

:-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).

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

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).

slide21
Механизм вывода

frule(Atr,Val,Todo) :- rule(if(eq(Atr,Val),Todo)).

frule(Atr,Val,[]) :- rule(eq(Atr,Val)).

infer(Atr,Val,AVL,[av(Atr,V)|AVL]) :- asked(Atr,V), !, V=Val.

infer(Atr,Val,AVL,[av(Atr,V)|AVL]) :- ask(Atr,Q), write(Q), read(V), asserta(asked(Atr,V)), !, V=Val.

infer(Atr,Val,AVL,AVL) :- member(av(Atr,V),AVL), !, Val=V.

infer(Atr,Val,AVL,[av(Atr,Val)|AVR]) :- frule(Atr,Val,Todo), inferl(Todo,AVL,AVR).

inferl([],AVL,AVL):-!.

inferl(and(A,B),AVL,AVR) :- inferl(A,AVL,AV1), inferl(B,AV1,AVR), !.

inferl(or(A,B),AVL,AVR) :- inferl(A,AVL,AV1); inferl(B,AV1,AVR), !.

inferl(eq(A,V),AVL,AVR) :- infer(A,Val,AVL,AVZ), !, Val=V, AVR=AVZ.

infer(A,V) :- infer(A,V,[],R),write(R).

slide22
Мораль
  • Продукционные экспертные системы являются достаточно эффективным классом экспертных систем, применимым на практике (как реляционные базы данных).
  • На Прологе легко реализуются прототипы экспертных систем и оболочки для создания экспертных систем
  • Можно использовать непосредственно Пролог как язык представления знаний, для продукционных систем оказывается более эффективным реализация специализированных ЯПЗ поверх синтаксиса Пролога
ad