raciocínio não monotônico e abdução
DESCRIPTION
Raciocínio Não Monotônico e Abdução. Gustavo Lacerda Jacques Robin CIn-UFPE. Agente baseado em conhecimento dedutivo ou abdutivo. Ambiente. Base de Conhecimento Intencional (BC I ): regras, classes, formulas lógicas universalmente quantificadas. Sensores. Não Monotônica. Ask. - PowerPoint PPT PresentationTRANSCRIPT
Raciocínio Não Monotônico e AbduçãoRaciocínio Não Monotônico e Abdução
Gustavo LacerdaGustavo Lacerda
Jacques RobinJacques Robin
CIn-UFPECIn-UFPE
Agente baseado em conhecimentoAgente baseado em conhecimentodedutivo ou dedutivo ou abdutivoabdutivo
Am
bie
nte
Sensores
Atuadores
Base de Conhecimento Extensional (BCE): fatos, objetos
formulas lógicas instanciadas
Máquina de inferênciadedutiva ou abdutiva
Base de Conhecimento Intencional (BCI):regras, classes, formulas lógicas
universalmente quantificadas
Ask
Tell RetractAsk
Não Monotônic
a
Tipologia de raciocínio não monotônicoTipologia de raciocínio não monotônico
Raciocínio sobre ações e mudanças em ambientes não Raciocínio sobre ações e mudanças em ambientes não estacionáriosestacionários Axiomatização em lógica monotônica de raciocínio não monotônico temporal: Cálculo situacional Cálculo de eventos
Revisão não monotônica via retract de base de conhecimento extensional armazenando apenas fatos presentemente verdadeiros Manutenção da verdade da base de conhecimento depois de um retract
Raciocínio hipotético com informação parcial em ambientes Raciocínio hipotético com informação parcial em ambientes inacessíveisinacessíveis Negação por falha em programação em lógica Herança com sobrescrita em hierarquias de classes Abdução Revisão das crenças hipotéticas Causas da necessidade de tal revisão:
Recepção sensorial ou comunicativa de novos fatos confirmados, e que contradiz hipótese default ou abduzida
Tal contradição pode ser direta ou indireta via dedução
Ações, Situações e EventosAções, Situações e Eventos
denota estados resultantes de ações
Ontologia: tudo são termos lógicos
* situações: A função Result(a,s) denota a situação que resulta quando a ação a é executada na situação s.
* fluentes: funções e predicados que variam de uma situação para outra. e.g. ~Holding(G1, S0) quer dizer que o agente não está com o ouro na situação inicial S0.
* predicados eternos: e.g. Gold(G1) (não se escreve a situação)
Cálculo de Situações
Ações, Situações e EventosAções, Situações e Eventos
Cálculo de Situações
Além de ações individuais, nós podemos falar sobre seqüências de ações.
Executar uma seqüência vazia não muda a situação:Result([],s) = s.
Executar outras seqüências: executar a primeira ação e depois executar o resto na situação resultante:Result([a|seq],s) = Result(seq, Result(a,s)).
Duas coisinhas a lembrar:Duas coisinhas a lembrar:
TodaToda situação, exceto situação, exceto SS00, é o resultado de , é o resultado de uma ação ou sequência de ações a partir de uma ação ou sequência de ações a partir de SS00..
Na nossa notação, a situação é Na nossa notação, a situação é sempresempre o o último argumentoúltimo argumento
Ações, Situações e EventosAções, Situações e Eventos
Cálculo de Situações
Ações, Situações e EventosAções, Situações e Eventos
Cálculo de Situações
Projeção: dado um estado inicial e uma seqüência de ações, deduzir o estado final.
Planejamento: dado um estado inicial e um estado final desejado, responder a pergunta: “que sequência de ações vai resultar no estado desejado?”.
ou seja, quais valores de seq satisfazemAt(G1, [1,1], Result(seq,S0))?
(o objetivo sendo que o ouro G1 esteja na posição [1,1])
Ações, Situações e EventosAções, Situações e Eventos
Cálculo de Situações
Axiomas de Possibilidade: que ações são possíveis numa dada situação.
e.g. “o agente pode se mover entre locais adjacentes”
At(Agent,x,s) /\ Adjacent(x,y)=> Poss(Go(x,y),s).
e.g. “se o agente está segurando alguma coisa, ele pode soltar”
Holding(g,s) => Poss(Release(g),s).
Ações, Situações e EventosAções, Situações e Eventos
Cálculo de Situações
Axiomas de Consequências: quais propriedades (fluentes) vão ser “setadas” como resultado de executar a ação.
e.g. Poss(Go(x,y),s) => At(Agent,y,Result(Go(x,y),s)).
e.g. Poss(Grab(g),s) =>Holding(g,Result(Grab(g),s)).
Ações, Situações e EventosAções, Situações e Eventos
Cálculo de Situações
Agora vamos tentar usar um plano no mundo Wumpus:digamos que o objetivo é pegar o ouro G1, que está em [1,2], com o agente começando em [1,1].
A ação Go([1,1],[1,2]) funciona, e podemos dizer que o agente chegou lá:
At(Agent[1,2],Result(Go([1,1],[1,2]),S0))
Agora, precisamos mostrar que é possível o agente pegar o ouro, ou seja…
Ações, Situações e EventosAções, Situações e Eventos
Cálculo de Situações
• Queremos mostrar que é possível o agente pegar o ouro.
• Já sabemos que o agente está em [1,2]• Só resta confirmar que o ouro também está lá…
“o ouro está em [1,2] na nova situação”At(G1,[1,2],Result(Go([1,1],[1,2]),S0))
• Infelizmente, nada no nosso KB justifica essa conclusão.
• O problema é que os axiomas de consequências dizem o que muda, mas não dizem o que fica igual.
• Neste caso, a posição do ouro (antes de pegá-lo)• Este é o famoso frame problem.
Ações, Situações e EventosAções, Situações e Eventos
Frame Problem: Como representar as coisas que não mudam?
Possíveis Soluções:
Axiomas de Frame: para cada ação, para cada fluente, nós dizemos se/quando a ação não influencia o fluente.Desvantagem: o número de axiomas vai ser O(AF).
Axiomas de Estado Sucessor:Ação é possível =>
(fluente é verdadeiro no estado resultante (a ação tornou o fluente verdadeiro \/ o fluente já era verdadeiro )
Os problemas das ramificaçõesOs problemas das ramificaçõese da qualificaçãoe da qualificação
Ramificação:Se o agente está segurando uma mala, e o agente move, então a mala move com ele.Se dentro da mala tem uma banana, ela também move.E assim por diante...e.g.: em cima da p.333
Qualificação:para modelar o mundo real, uma regra precisa de muitas condições. Sempre vão existir os casos imprevisíveis, aonde as regras vão estar erradas ou incompletas.e.g.: Se a gosma do Wumpus melar o ouro, a ação “Grab” pode não funcionar.
Exemplificar os dois no Wumpus com lógica (pegar exemplo do AIMA)
Limitações do cálculo situacionalLimitações do cálculo situacional
Assume que o agente é o único causador de mudança do mundo
Representa tempo de maneira pontual e não intervalar, indiretamente via situações.
Representa a topologia do tempo, mas não a geometria, ou seja a ordem “antes e depois” é preservada, porém situações não diferenciam entre um intervalo de 1s e de 1 semana.
“Cálculo de Eventos” supera essas limitações.
Cálculo situacional x de eventosCálculo situacional x de eventos
Situation Calculus
At(o,x,S0) ((o = Agent x = [1,1]) (o = G1 x = [1,2])).
Holding(o,SO).
Gold(G1) Adjacent([1,1],[1,2]) Adjacent([1,2],[1,1]).
AIMA pp.330-334
Event Calculus
T = holdsholds(at(Agent,[1,1],T0). holds(at(G1,[1,2],T0).Agent G1.
Initiates(Go(x,y),At(Agent,y),t).
Initiates(Grab(g),Holding(g),t).
Regras do Mundo Wumpus
Cálculo de eventosCálculo de eventos
No Cálculo de Eventos, os predicados não são do domínio. Ver abaixo.
Eventos Discretos: como ações, mas não precisam ser causadas por um agente
Initiates(e,f,t) indica que o evento e no tempo t causa o fluente f a ser verdade.
Terminates(w,f,t) indica que o evento e no tempo t causa o fluente f a não ser verdade.
Happens(e,t) indica que o evento e acontece no tempo t.
Clipped(f,t,t2) diz que f é terminado por algum evento entre t e t2.
Ontologia
Ontologia do cálculo de eventosOntologia do cálculo de eventos
Eventos Líquidos: Eventos que não acontecem imediatamente.
E(e,i) quer dizer que um evento tipo e ocorreu dentro do intervalo i.
T(e,i) quer dizer que um evento tipo e ocorreu exatamente no intervalo i.
Estados: Além de descrever processos de mudança contínua, eventos líquidos podem descrever processos de constância contínua.
T(In(Shankar,NewYork),Today) quer dizer que Shankar passou o dia inteiro em NewYork.
Intervalos: Podemos falar sobre as possíveis relações entre dois intervalos de tempo: Meet, Before, After, During, Overlap.
Fluentes e objetos: O objeto “USA” é um evento que começou em 1776. Sua propriedade “President” é um fluente, que representamos assim:T(President(USA) = GeorgeWashington, AD1790).
Limitações do cálculo de eventosLimitações do cálculo de eventos
Eficiência: para cada situação, você calcula o mundo inteiro novamente. Alto custo de memória e de processamento.Solução: sistemas de planejamento especializados.
Raciocinar sobre crenças e Raciocinar sobre crenças e conhecimentoconhecimento
Seção 10.4 do AIMA Quando o agente raciocina sobre suas ações, ele
pode: usar proposições sobre crenças e proposições, tanto de outros agente quanto dele mesmo.
Ações podem ter precondições e efeitos de conhecimento.
Por exemplo: a ação “discar o telefone de alguém” tem o conhecimento desse número como precondição; enquanto que a ação “procurar um número na lista telefônica” tem o efeito de saber o número.
Raciocinar sobre crenças e Raciocinar sobre crenças e conhecimentoconhecimento
Seção 10.4 do AIMA
Problema ao representar crenças: transparência referencial, ou seja, a gente sempre pode substituir um termo por outro que tenha o mesmo valor.
(Superman = Clark) |=
Believes(Lois,Flies(Superman)) Believes(Lois, Flies(Clark))
Uma solução é usar a lógica modal epistêmica / doxástica, que usa operadores referencialmente “opacos”.
Num agente com um mínimo de racionalidade,(K(A B), K(A)) K(B)
(A, K(A B)) ou (K(A), A B) são suficientes para concluir B, mas não para concluir K(B).
Nós temosBLois(Flies(Superman)), mas não temos
BLois (Superman = Clark)
Então não podemos concluir que BLois(Flies(Clark)) (que bom!)
Raciocinar sobre crenças e Raciocinar sobre crenças e conhecimentoconhecimento
Outra solução é usar aspas, com o unique string axiom e uma função de denotação: então temos
den(“Superman”) = den(“Clark”) = Objeto4892,
enquanto que “Superman” “Clark”.
Raciocinar sobre crenças e Raciocinar sobre crenças e conhecimentoconhecimento
Refletir mudanças do ambiente em base Refletir mudanças do ambiente em base de conhecimento instantânea com de conhecimento instantânea com
retractretract Codificar atualização do modelo do agente de um ambiente não estacionário usando: retract(old fact) e tell(new fact), no lugar de tell(new fact, new situation)
Porém, surge o problema da manutenção da verdade O que foi deduzido a partir do fato retirado, tem que ser por
sua vez retirado
Executamos uma regra tipo Go(x,y):Com esse tipo de sistema, acontece o seguinte: tell(At(Agent,y)) retract(At(Agent,x)) simultaneamente
Regra de ramificação do ouro andando junto ao agente quando está segurando o ouro permitiu prova a partir de At(Agent,x), Holding(G1).
Precisamos retrair também At(G1,y).
Exemplo do problema da manutenção da Exemplo do problema da manutenção da verdade no Mundo do Wumpusverdade no Mundo do Wumpus
Parece ser eficiente em relação ao cálculo de eventos, já que não faz cópia de toda base para cada modificação do ambiente.
Porém pode levar a um processo em cadeia, no qual se desfaz a maioria das deduções passadas. Repô-las pode ter um custo equivalente.
Abordagem ingênua para manutenção de verdade: retrair tudo o que foi deduzido após a inclusão do fato que foi retraído
recomeçar dedução de tudo que foi deduzido depois desse ponto (via resolução ou encadeamento de regras para frente)
isto é INEFICIENTE
Manutenção da verdadeManutenção da verdadebaseada em justificativabaseada em justificativa
Abordagem JTMS (Justification-Based Truth Maintenance System): cada frase na KB é anotada com uma justificação (as frases a partir da qual ela foi inferida)
Quando o Retract é executado, todas as frases que usavam a frase retraída como justificativa são re-avaliadas: se não passarem, elas serão retraídas também, recursivamente...
E tudo o que não é mais justificável vai ser retraído nessa reação em cadeia.
Porém as frases retraídas não são deletadas, pois elas podem voltar a ser consideradas no futuro. Desta maneira a cadeia de inferências é mantida caso a frase volte a ser considerada True.
Vantagem: mais rápido que o sistema ingênuo quando há hipóteses que são consideradas True e False alternadamente.
Limitações: mudança de contexto é ineficiente
Além de permitir a retração de informação incorreta, TMSs em geral podem acelerar a análise de múltiplas hipóteses. Por exemplo, se a cidade das olimpíadas de 2048 mudar de Bucharest para Sibil, a cadeia pode ser re-usada.
Cada frase é rotulada com o conjunto de assunções que a torna verdade. Desta maneira é fácil verificar se uma frase é deduzível ou não: é equivalente a testar “set containment”.
Manutenção da verdadeManutenção da verdadebaseada em suposiçãobaseada em suposição
CircunscriçãoCircunscriçãoSeção 10.7 do AIMA
Versão mais poderosa da hipótese do mundo fechado
Bird(x) Abnormal(x) Flies(x)
Se Abnormal for circunscrito, um raciocinador circunscritivo pode assumir Abnormal(x) a menos que Abnormal(x) seja sabido.
Republican(Nixon) Quaker(Nixon).Republican(x) Abnormal2(x) Pacifist(x).Quaker(x) Abnormal(x) Pacifist(x).
Como o sistema resolve isso?* Dois modelos preferidos: Abnormal1(Nixon) e Abnormal2(x). O sistema fica corretamente indeciso sobre esta frase.* Porém, podemos usar circunscrição priorizada, aonde uma regra é dada mais importância que a outra.
Lógica defaultLógica default
Seção 10.7 do AIMA
Usa regras default para gerar conclusões não-monotônicas.
Bird(x) : Flies(x)/Flies(x).
quer dizer se x é um pássaro, e “x voa” é consistente com a KB, então “x voa” pode ser concluído por default.
Obviamente, a conclusão default estará sujeita a revisão.
AbduçãoAbdução
Abdução
CPCI CPEC NCEC |= CPEE
ConhecimentoPrévio Causalem Intenção
X co(X) ca(X) e(X)
ConhecimentoPrévio em Extensão:• Efeitos Observados
e(a), e(b), ...• Causais Observadas
Incompletasco(a), co(b), ...
Novo Conhecimentoem Extensão:
Causas Hipotéticasca(a), ca(b) ...
Viés sobre Hipóteses:
X ca(X)
Abdução: exemploAbdução: exemplo
A partir de:A partir de: Conhecimento prévio causalcausal em intenção:
X,Y,T loc(agent,X,Y,T) orientation(0,T) do(forward,T) loc(wall,X+1,Y) loc(agent,X,Y,T+1)
Conhecimento prévio em extensão incompleto de causas: loc(agent,4,1,1) orientation(0,1) do(forward,1)
Conhecimento prévio em extensão de efeitos observados: loc(agent,4,1,2)
Abduzir:Abduzir: Novo conhecimento em extensão de causacausa hipotética:
loc(wall,5,1)
Aplicações práticas da abdução em IAAplicações práticas da abdução em IA
Tirado de p. 1 e 13-14 de Kakas-Denecker (KD), Seção 1.3 de Kakas-Kowalski-Toni (KKT)
Diagnóstico de Falha (Diagnóstico médico): aqui a teoria descreve o comportamento “normal” do sistema. Quando se tem a observação que o comportamento está anormal, busca-se o componente anormal que explica esse comportamento anormal do sistema.
Visão de Alto Nível: as hipóteses abduzíveis são os objetos a serem reconhecidos, e observações são descrições parciais dos objetos.
Raciocínio Legal: para encontrar casos similares.
Engenharia de Software: para resolver inconsistências em requirementos de sistemas
Constraint Solving Problems: Quebra-cabeças lógicos, N-Queens, problemas de planejamento no mundo dos blocos, etc.
Formulações lógicas da abduçãoFormulações lógicas da abdução
Seções 1-3 de KD Seções 1.2-1.3 de KKT
Dada uma teoria conhecida P, uma explicação abdutiva para um query Q é um conjunto de átomos abduzíveis tal que:
Visão de derivação:(P Q) (P | False) (P IC)
Visão de consistência:(P Q) (P IC | False)
Esta escolha vai depender do que você quer fazer
Viés sobre hipóteses abdutivas: Viés sobre hipóteses abdutivas: objetivosobjetivos pp. 4-6 de KKT
Encontrar conjunto de hipótese mais conciso e mais geral
Encontrar causas explicando os efeitos observados, no lugar de encontrar co-efeitos das mesmas causas sub-jacentes
Encontrar causas mais profundas (básicas), no lugar de causas intermediárias, efeitos dessas causas profundas
Encontrar um número mínimo que causas que expliquem o máximo de observações
Considerar apenas instâncias de um conjunto pré-definido de predicados chamado de abduzíveis. Geralmente escolhidos dentro dos predicados sem definição intencional na base de conhecimento
Podem ser estratificados em níveis de preferências
Viés sobre hipóteses: predicados Viés sobre hipóteses: predicados abduzíveisabduzíveis
Exemplo:
grass-is-wet rained-last-nightgrass-is-wet sprinkler-was-onshoes-are-wet grass-is-wet
Para a observação shoes-are-wet:A explicação {grass-is-wet} não é básicaenquanto {rained-last-night} e {sprinkler-was-on} são.
A explicação {rained-last-night, sprinkler-was-on} não é mínima.
Viés sobre hipóteses abdutivas: Viés sobre hipóteses abdutivas: restrições de integridaderestrições de integridade
Excluir hipóteses que: Violam diretamente um conjunto pré-definido de restrições de integridades
Cuja inclusão na base de conhecimento permite deduzir fatos que violam uma dessas restrições
Logicamente:
Exemplo:At(Wumpus(x)) At(Wumpus(y) x = ysprinkler choveu false
Viés sobre hipóteses abdutivas: Viés sobre hipóteses abdutivas: minimizaçãominimização
Excluir conjunto de hipóteses que podem ser explicadas em termos de (i.e., deduzidas a partir de) outras hipóteses igualmente válidas Exemplo: grassIsWet, quando sabemos sprinkler-was-on
Preferir conjunto de hipóteses com maior número de efeitos observados (corroboração) Exemplo: formigasDeAsas corrobora chuva e não sprinkler
Preferir conjunto de hipóteses mais geral Exemplo:
Preferir conjunto de hipóteses mais conciso: quanto menos pre-requisitos, mais plausível é que as hipóteses sejam verdade. Exemplo:
DeduçãoDedução
Dedução
CPEC CPCI |= NCEE
ConhecimentoPrévio Causalem Intenção
X c(X) e(X)
ConhecimentoPrévio em Extensão:Causas Observadas
c(a), c(b), ...
Novo Conhecimentoem Extensão:
Efeitos Previstose(a), e(b) ...
Dedução
CPDI CPEE |= NCEC
ConhecimentoPrévio Diagnóstico
em IntençãoX e(X) c(X)
ConhecimentoPrévio em Extensão:Efeitos Observados
e(a), e(b), ...
Novo Conhecimentoem Extensão:
Causas c(a), c(b) ...
Dedução: exemplosDedução: exemplos
A partir de:A partir de: Conhecimento prévio causalcausal em intenção:
X,Y,T loc(agent,X,Y,T) orientation(0,T) forward(T) loc(wall,X+1,Y) loc(agent,X+1,Y,T+1)
Conhecimento prévio em extensão de causas observadas: loc(agent,1,1,1) orientation(0,1)
forward(1) loc(wall,2,1)
Deduzir:Deduzir: Novo conhecimento em extensão de efeito previsto:
loc(agent,2,1,2).
A partir de:A partir de: Conhecimento prévio diagnósticodiagnóstico em intenção:
X,Y,T loc(agent,X,Y,T) smell(stench,T) smelly(X,Y).
X,Y smelly(X,Y) loc(wumpus,X+1,Y) loc(wumpus,X-1,Y) loc(wumpus,X,Y+1) loc(wumpus,X,Y-1)).
Conhecimento prévio em extensão de efeito observado
smell(stench,3) loc(agent,2,2,3)
Deduzir:Deduzir: Novo conhecimento em extensão de causa hipotética:
loc(wumpus,3,2) loc(wumpus,1,2) loc(wumpus,2,3) loc(wumpus,2,1)).
InduçãoIndução
Novo ConhecimentoCausal Hipotético
em IntençãoX i(X) e(X)
Indução
CPCI NCCI CPEC |= CPEE
ConhecimentoPrévio em Extensão:• Efeitos Observados
e(a), e(b), ...• Causais Observadas
c(a), c(b), ...
Conhecimento PrévioCausal em Intenção
IncompletoX c(X) i(X)
Viés sobre Hipóteses:
X,Y i(X) Y(X)
Indução: exemploIndução: exemplo
A partir de:A partir de: Conhecimento prévio em extensão:
loc(wall,1,1) loc(wall,0,1) loc(wall,1,2) loc(0,2) ... ... loc(wall,4,5) loc(wall,4,4) loc(wall,3,5) loc(wall,3,4) ... ...
Viés sobre hipótese: P1,P2,P3,P4 {>,<,=}, C {, }, Q1,Q2,Q3 {,}: Q1U1,U2,U3,U4 Q2V1,V2,V3,V4 Q3W P1(U,V1) P2(U,V2) P3(U,V3) P4(U,V4) loc(W,U,V)
Induzir:Induzir: Novo conhecimento em intenção:
X,Y X<1 X>4 Y<1 Y>4 loc(wall,X,Y)
Variação: Variação: Conhecimento prévio em intenção:
X,Y,H,W X<1 X>H Y<1 Y>W loc(wall,X,Y)