Representação do Conhecimento e Raciocínio José Júlio Alves Alferes 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 • Sistemas Periciais • Semantic Web (http://www.w3.org) – Web de Conhecimento 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 • Linguagem concebida para representar conhecimento • 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:xN→xR – 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) : da_prenda(X) da_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 1a 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 1a 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 duma extensão pode reduzir-se ao encontrar duma 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 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 (semimonotonicidade) • 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 – W ={italiano v francês} francês:vinho/vinho} • Não garantia de consistência entre justificações. – D = {:utilizável(X), partido(X)/utilizável(X)} – W ={partido(esq),partido(dir)} • Não cumulatividade – D = {:p/p, pvq:p/p} – deriva p v q, mas ao juntar p v q deixa de derivar