Buscar

Linguagens de Programação - Sistemas Especialistas em Prolog

Prévia do material em texto

Sistemas Especialistas em Prolog
Universidade de Bras´ılia
Rodrigo Bonifa´cio
21 de novembro de 2013
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Essa parte do curso e´ baseada no livro Prolog Programming for
Aritificial Intelligence, Ivan Bratko, Addison-Wesley, 1986.
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Sistemas especialistas
Programas que se comportam como especialistas de algum
dom´ınio (bio´logo que classifica animais, atendente de help desk,
chair de comiteˆs de programa, . . . ). Tais programas devem ser
capazes de explicar suas deciso˜es e o processo de infereˆncia; bem
como frequentemente lidam com situac¸o˜es de incerteza e
informac¸o˜es incompletas.
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Caracter´ısticas de um sistema especialista
Sistemas especialistas oferecem
mecanismo de resoluc¸a˜o de problemas (infereˆncia)
interface com o usua´rio (gra´fica ou baseada em shell)
recursos para lidar com incertezas
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Aplicac¸o˜es comuns
1 Diagno´stico me´dico
2 Alocac¸a˜o de recursos (papers, salas, . . . )
3 Localizac¸a˜o de falhas em equipamentos espec´ıficos
4 Externalizac¸a˜o da lo´gica de um jogo
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Arquitetura de um sistema especialista
Prolog Programming for Aritificial Intelligence, Ivan Bratko, Addison-Wesley, 1986.
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Regras de produc¸a˜o usualmente aplicadas para expressar
conhecimento sobre determinado dom´ınio.
Ou seja, em um sistema
especialista, estamos interessados em conhecimentos do tipo:
if morando_brasilia and dificuldade_respirar
then nada_preocupante
else procure_medico_urgente
Vantagens de se modelar conhecimento dessa forma: Modularidade
conhecimento adicionado de forma incremental
e´ poss´ıvel alterar regras existentes de forma isolada
transpareˆncia: facilita a descric¸a˜o do processo de racioc´ınio
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Regras de produc¸a˜o usualmente aplicadas para expressar
conhecimento sobre determinado dom´ınio. Ou seja, em um sistema
especialista, estamos interessados em conhecimentos do tipo:
if morando_brasilia and dificuldade_respirar
then nada_preocupante
else procure_medico_urgente
Vantagens de se modelar conhecimento dessa forma: Modularidade
conhecimento adicionado de forma incremental
e´ poss´ıvel alterar regras existentes de forma isolada
transpareˆncia: facilita a descric¸a˜o do processo de racioc´ınio
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Regras de produc¸a˜o usualmente aplicadas para expressar
conhecimento sobre determinado dom´ınio. Ou seja, em um sistema
especialista, estamos interessados em conhecimentos do tipo:
if morando_brasilia and dificuldade_respirar
then nada_preocupante
else procure_medico_urgente
Vantagens de se modelar conhecimento dessa forma: Modularidade
conhecimento adicionado de forma incremental
e´ poss´ıvel alterar regras existentes de forma isolada
transpareˆncia: facilita a descric¸a˜o do processo de racioc´ınio
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
. . . e ainda mais importante
Regras de produc¸a˜o permitem expressar uma qualificac¸a˜o
probabil´ıstica a uma interpretac¸a˜o lo´gica
se
(a) a infecc¸~ao primariamente bacteriana
(b) o local da cultura foi esterielizado
(c) a entrada do organismo foi gastrointestinal
entao
existe uma evidencia sugestiva (0.7)
que o organismo identificado seja uma variacao
de bacteria.
Obviamente, o processo de construc¸a˜o da base de conhecimento exige a
interac¸a˜o com os especialistas do dom´ınio, na˜o sendo uma tarefa trivial.
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
. . . e ainda mais importante
Regras de produc¸a˜o permitem expressar uma qualificac¸a˜o
probabil´ıstica a uma interpretac¸a˜o lo´gica
se
(a) a infecc¸~ao primariamente bacteriana
(b) o local da cultura foi esterielizado
(c) a entrada do organismo foi gastrointestinal
entao
existe uma evidencia sugestiva (0.7)
que o organismo identificado seja uma variacao
de bacteria.
Obviamente, o processo de construc¸a˜o da base de conhecimento exige a
interac¸a˜o com os especialistas do dom´ınio, na˜o sendo uma tarefa trivial.
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Motor de infereˆncia
Infere novo conhecimento a partir do conhecimento descrito na
base de conhecimento. Duas estrate´gias distintas:
forward-chaining: conforme descrito acima
backward-chaining: a partir das concluso˜es a serem provadas,
o mecanismo retorna ate´ que a conclusa˜o dependa apenas do
que ja´ e´ conhecido (exemplo: SLD resolutions).
Sistemas Especialistas × Logic Programming:
A base de conhecimento em SEs e´ incompleta, no sentido que, no
exemplo acima, na˜o descreve informac¸o˜es sobre os sintomas.
Enquanto infere a falha de um componente, o SE realiza perguntas
aos usua´rios, cujas respostas completam a base de conhecimento.
SEs tambe´m apresentam a habilidade de explicar suas concluso˜es.
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Motor de infereˆncia
Infere novo conhecimento a partir do conhecimento descrito na
base de conhecimento. Duas estrate´gias distintas:
forward-chaining: conforme descrito acima
backward-chaining: a partir das concluso˜es a serem provadas,
o mecanismo retorna ate´ que a conclusa˜o dependa apenas do
que ja´ e´ conhecido (exemplo: SLD resolutions).
Sistemas Especialistas × Logic Programming:
A base de conhecimento em SEs e´ incompleta, no sentido que, no
exemplo acima, na˜o descreve informac¸o˜es sobre os sintomas.
Enquanto infere a falha de um componente, o SE realiza perguntas
aos usua´rios, cujas respostas completam a base de conhecimento.
SEs tambe´m apresentam a habilidade de explicar suas concluso˜es.
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Motor de infereˆncia
Infere novo conhecimento a partir do conhecimento descrito na
base de conhecimento. Duas estrate´gias distintas:
forward-chaining: conforme descrito acima
backward-chaining: a partir das concluso˜es a serem provadas,
o mecanismo retorna ate´ que a conclusa˜o dependa apenas do
que ja´ e´ conhecido (exemplo: SLD resolutions).
Sistemas Especialistas × Logic Programming:
A base de conhecimento em SEs e´ incompleta, no sentido que, no
exemplo acima, na˜o descreve informac¸o˜es sobre os sintomas.
Enquanto infere a falha de um componente, o SE realiza perguntas
aos usua´rios, cujas respostas completam a base de conhecimento.
SEs tambe´m apresentam a habilidade de explicar suas concluso˜es.
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Motor de infereˆncia
Infere novo conhecimento a partir do conhecimento descrito na
base de conhecimento. Duas estrate´gias distintas:
forward-chaining: conforme descrito acima
backward-chaining: a partir das concluso˜es a serem provadas,
o mecanismo retorna ate´ que a conclusa˜o dependa apenas do
que ja´ e´ conhecido (exemplo: SLD resolutions).
Sistemas Especialistas × Logic Programming:
A base de conhecimento em SEs e´ incompleta, no sentido que, no
exemplo acima, na˜o descreve informac¸o˜es sobre os sintomas.
Enquanto infere a falha de um componente, o SE realiza perguntas
aos usua´rios, cujas respostas completam a base de conhecimento.
SEs tambe´m apresentam a habilidade de explicar suas concluso˜es.
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Coletando provas: treˆs cena´rios
Cena´rio 01
Caso o objetivo seja um fato (true), na˜o temos que provar
nada e retornamos void.
Cena´rio 02
Caso o objetivo seja X, existir uma cla´usula X if Y e Y
possuir uma prova PY , retornamos que a prova de X deriva
de PY (proof (X ,PY )).
Cena´rio 03
Caso oobjetivo seja X and Y , X tem prova PX e Y tem
prova PY , retornamos PX & PY
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Coletando provas: treˆs cena´rios
Cena´rio 01
Caso o objetivo seja um fato (true), na˜o temos que provar
nada e retornamos void.
Cena´rio 02
Caso o objetivo seja X, existir uma cla´usula X if Y e Y
possuir uma prova PY , retornamos que a prova de X deriva
de PY (proof (X ,PY )).
Cena´rio 03
Caso o objetivo seja X and Y , X tem prova PX e Y tem
prova PY , retornamos PX & PY
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Coletando provas: treˆs cena´rios
Cena´rio 01
Caso o objetivo seja um fato (true), na˜o temos que provar
nada e retornamos void.
Cena´rio 02
Caso o objetivo seja X, existir uma cla´usula X if Y e Y
possuir uma prova PY , retornamos que a prova de X deriva
de PY (proof (X ,PY )).
Cena´rio 03
Caso o objetivo seja X and Y , X tem prova PX e Y tem
prova PY , retornamos PX & PY
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Considerando a base de conhecimento . . .
clause(grandparent(X,Y) if parent(X,Z) and parent(Z,Y)).
clause(parent(X,Y) if father(X,Y)).
clause(father(adam, bill) if true).
clause(father(bill, carl) if true).
e os operadores:
:- op(1200, xfx, if).
:- op(1000, xfx, and).
:- op(1000, xfx, &).
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Considerando a base de conhecimento . . .
clause(grandparent(X,Y) if parent(X,Z) and parent(Z,Y)).
clause(parent(X,Y) if father(X,Y)).
clause(father(adam, bill) if true).
clause(father(bill, carl) if true).
e os operadores:
:- op(1200, xfx, if).
:- op(1000, xfx, and).
:- op(1000, xfx, &).
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
A consulta
?- solve(grandparent(X,Y), Z).
leva ao resultado:
X = adam,
Y = carl,
Z = proof(grandparent(adam, carl),
(proof(parent(adam, bill),
proof(father(adam, bill), void))
& proof(parent(bill, carl),
proof(father(bill, carl), void))))
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Como escrever em Prolog
Cena´rio 01
Caso o objetivo seja um fato (true), na˜o temos que provar
nada e retornamos void.
Cena´rio 02
Caso o objetivo seja X, existir uma cla´usula X if Y e Y
possuir uma prova PY , retornamos que a prova de X deriva
de PY (proof (X ,PY )).
Cena´rio 03
Caso o objetivo seja X and Y , X tem prova PX e Y tem
prova PY , retornamos PX & PY
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
solve(true, void).
solve((X and Y), (Px & Py)) :- solve(X, Px), solve(Y, Py).
solve(X, proof(X, Py)) :- clause(X if Y), solve(Y, Py).
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
O predicado solve pode ser
reusado em diferentes sistemas
especialistas.
Conclusa˜o importante . . .
Podemos escrever sistemas especialistas reusando solve e
implementando novas bases de conhecimento.
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
O predicado solve pode ser
reusado em diferentes sistemas
especialistas.
Conclusa˜o importante . . .
Podemos escrever sistemas especialistas reusando solve e
implementando novas bases de conhecimento.
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Exemplo: Sistema especialista
para a a´rea me´dica.
?- main.
===============================================================================
Bem vindo ao sistema especialista de consultorios medicos
Uso:
[iniciar.] para iniciar o diagnostico.
[encerrar.] para sair da aplicacao
===============================================================================
Obs.: Baseado no TG de Luciana Santos / Centro Universitario de Vila Velha
===============================================================================
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Exemplo: Sistema especialista
para a a´rea me´dica.
?- main.
===============================================================================
Bem vindo ao sistema especialista de consultorios medicos
Uso:
[iniciar.] para iniciar o diagnostico.
[encerrar.] para sair da aplicacao
===============================================================================
Obs.: Baseado no TG de Luciana Santos / Centro Universitario de Vila Velha
===============================================================================
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Coletando os sintomas:
Voce apresenta o sintoma Dor de garganta [sim/nao]? nao.
Voce apresenta o sintoma Tosse [sim/nao]? sim.
Voce apresenta o sintoma Catarro [sim/nao]? sim.
Voce apresenta o sintoma Dificuldade respiratoria [sim/nao]? nao.
Voce apresenta o sintoma Febre [sim/nao]? sim.
Voce apresenta o sintoma Erupcoes cutaneas [sim/nao]? sim.
As respostas devem enriquecer a base de conhecimento
Necessa´rio o uso dos predicados:
asserta/1, assertz/1
retract/1, retractall/1
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Coletando os sintomas:
Voce apresenta o sintoma Dor de garganta [sim/nao]? nao.
Voce apresenta o sintoma Tosse [sim/nao]? sim.
Voce apresenta o sintoma Catarro [sim/nao]? sim.
Voce apresenta o sintoma Dificuldade respiratoria [sim/nao]? nao.
Voce apresenta o sintoma Febre [sim/nao]? sim.
Voce apresenta o sintoma Erupcoes cutaneas [sim/nao]? sim.
As respostas devem enriquecer a base de conhecimento
Necessa´rio o uso dos predicados:
asserta/1, assertz/1
retract/1, retractall/1
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Diagno´stico
A ma´quina de infereˆncia de um sistema especialista deve inferir
na˜o apenas o diagno´stico, mas tambe´m descrever a prova
: como, a
partir da interac¸a˜o com o usua´rio, foi poss´ıvel concluir o
diagno´stico.
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Diagno´stico
A ma´quina de infereˆncia de um sistema especialista deve inferir
na˜o apenas o diagno´stico, mas tambe´m descrever a prova: como, a
partir da interac¸a˜o com o usua´rio, foi poss´ıvel concluir o
diagno´stico.
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
conclui-se diagnostico(amigdalite) dado que
doenca(amigdalite)
conclui-se doenca(amigdalite) dado que
sintoma(dor_garganta) e
sintoma(dor_pelo_corpo) e
sintoma(cansaco) e
sintoma(febre) e
sintoma(falta_de_apetite) e
sintoma(dificuldade_respiratoria) e
sintoma(dor_de_cabeca)
sintoma(dor_garganta) esta presente
sintoma(dor_pelo_corpo) esta presente
sintoma(cansaco) esta presente
sintoma(febre) esta presente
sintoma(falta_de_apetite) esta presente
sintoma(dificuldade_respiratoria) esta presente
sintoma(dor_de_cabeca) esta presente
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog
Considerac¸o˜es finais
Sistemas especialistas
forte relac¸a˜o com Logic Programming, mas
SEs apresentam rica interac¸a˜o com o usua´rio
SEs aumentam a base de conhecimento dinamicamente
SEs apresentam a prova como resultado da computac¸a˜o
arquitetura util para descrever modularidade e reuso
Rodrigo Bonifa´cio Sistemas Especialistas em Prolog

Continue navegando