Representação do Conhecimento e Raciocínio José Júlio Alferes Luís Moniz Pereira
O que é? Que dados trata um “agente” inteligente? Não são só factos ou tuplos Como é que um “agente” sabe aquilo que o rodeia? Quais as regras do jogo? Há que representar esse “conhecimento” E que fazer depois com esse conhecimento? Como tirar conclusões a partir dele? Como raciocinar? Repr. do Conhecimento e Raciocínio IA Algoritmos e estruturas de Dados Computação
Para que serve? Matéria de Base em Inteligência Artificial Planeamento Conhecimento Legal Diagnóstico Baseado em Modelos Sistemas Periciais Semantic Web (http://www.w3.org) Web de Conhecimento (http://www.rewerse.com)
Do que trata a disciplina? Abordagens lógicas à repr. do conhecimento Problemática da repr. do conhecimento semântica, expressividade, estruturação, eficácia Formalismos de representação Formas de raciocínio Metodologias Aplicações
Que precisam saber antes? Lógica Computacional Introdução à Inteligência Artificial Programação em Lógica
Bibliografia Vai sendo dada à medida que formos avançando na matéria (artigos, surveys) Para a primeira parte da matéria Reasoning with Logic Programming, J. J. Alferes and L. M. Pereira, Springer LNAI, 1996 Nonmonotonic Reasoning, G. Antoniou, MIT Press, 1996.
Lógica para KRR A Lógica é uma linguagem concebida para representar conhecimento Foi desenvolvida para representar conhecimento matemático O que é apropriado para conhecimento matemático pode não o ser para conhecimento de senso comum
Conhecimento matemático vs senso comum Conhecimento completo vs incompleto " x : x Î N → x Î R irTrabalho → usar_carro Inferências sólidas vs supletivas Face a conhecimento incompleto Em situações de emergência Em taxonomias Em raciocínio legal ...
Monotonicidade da lógica A lógica clássica é monotónica T |= F → T U T’ |= F Esta é uma propriedade de base, que faz todo o sentido para conhecimento matemático Mas não é desejável em representação do conhecimento!
Lógicas não monotónicas Não obedecem àquela propriedade Default Logic Introduz regras supletivas Autoepistemic Logic Introduz operadores (modais) que falam sobre conhecimento e crenças Programação em Lógica
Default logic Proposta por Ray Reiter (1980) irTrabalho → usar_carro Não admite excepções! Regras supletivas irTrabalho : usar_carro usar_carro
Mais exemplos aniversário(X) amigo (X) : dar_prenda(X) dar_prenda(X) amigo(X,Y) amigo(Y,Z) : amigo(X,Z) amigo(X,Z) acusado(X) : inocente(X) inocente(X)
Sintaxe de Default Logic Uma teoria é um par (W,D), onde: W é um conjunto de fórmulas de 1ª ordem D é um conjunto de regras supletivas da forma: j : Y1, … ,Yn g j (pré-requisitos), Yi (justificações) e g (conclusão) são fórmulas de 1ª ordem
Problema da semântica Se j é verdade (onde?) e todos os Yi são consistentes (com o quê?) então g passa a ser verdade (passa? e antes não era?) Conclusões devem: ser conjunto fechado conter W Aplicar regras de D maximamente, sem que fiquem sem suporte
Extensões de Default G(S) é o menor conjunto tal que: W G(S) Th(G(S)) = G(S) A:Bi/C D, A G(S) e Bi S → C G(S) E é extensão de (W,D) sse E = G(E)
Definição quase-indutiva E é extensão sse E = Ui Ei para: E0 = W Ei+1 = Th(Ei) U {C: A:Bj/C D, A Ei, Bj E}
Algumas propriedades (W,D) tem uma extensão inconsistente sse W é inconsistente Se existe extensão inconsistente, então é única Se W Just Conc é consistente, então só há uma extensão Se E é extensão de (W,D), então também é extensão de (W E’,D) para qq E’ E
Semântica Operacional O cálculo de uma extensão pode reduzir-se ao encontrar de uma ordem de aplicação de regras (sem repetições). P = (d1,d2,...) e P[k] é o segmento inicial de P com k elementos In(P) = Th(W {cons(d) | d P}) Conclusões depois de aplicadas as regras em P Out(P) = {Y | Y just(d) e d P } Fórmulas que não podem vir a ser verdadeiras, após aplicação de regras em P
Semântica operacional (cont) d é aplicável em P sse pre(d) In(P) e Y In(P) P é um processo sse dk P, dk é aplicável em P[k-1] Um processo P é: sucedido sse In(P) ∩ Out(P) = {}. Caso contrário é falhado. fechado sse d D aplicável em P → d P Teorema: E é extensão sse existe P, sucedido e fechado, tal que In(P) = E
Cálculo de extensões (Antoniou pág. 39) extension(W,D,E) :- process(D,[],W,[],_,E,_). process(D,Pcur,InCur,OutCur,P,In,Out) :- getNewDefault(default(A,B,C),D,Pcur), prove(InCur,[A]), not prove(InCur,[~B]), process(D,[default(A,B,C)|Pcur],[C|InCur],[~B|OutCur],P,In,Out). process(D,P,In,Out,P,In,Out) :- closed(D,P,In), successful(In,Out). closed(D,P,In) :- not (getNewDefault(default(A,B,C),D,P), prove(In,[A]), not prove(In,[~B]) ). successful(In,Out) :- not ( member(B,Out), member(B,In) ). getNewDefault(Def,D,P) :- member(Def,D), not member(Def,P).
Teorias normais Toda a regra tem justificações igual a conclusão Têm sempre extensões Se D cresce, então as extensões crescem (semi-monotonicidade) Não dão para tudo: João é recém-licenciado Normalmente os recém-licenciados são adultos Normalmente os adultos, que não recém-licenciados, têm emprego (não se codifica com regra normal!)
Problemas Não garantia de existência de extensões. Deficiências no raciocínio por casos D = {italiano:vinho/vinho francês:vinho/vinho} W ={italiano v francês} Não garantia de consistência entre justificações. D = {:utilizável(X), partido(X)/utilizável(X)} W ={partido(esq) v partido(dir)} Não cumulatividade D = {:p/p, pvq:p/p} deriva p v q, mas ao juntar p v q deixa de derivar