Baixe o app para aproveitar ainda mais
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
Compartilhar