Raciocnio No Monotnico e Abduo Gustavo Lacerda Jacques
Raciocínio Não Monotônico e Abdução Gustavo Lacerda Jacques Robin CIn-UFPE
Agente baseado em conhecimento dedutivo ou abdutivo Sensores Base de Conhecimento Intencional (BCI): regras, classes, formulas lógicas universalmente quantificadas Não Monotônica Ask Ambiente Máquina de inferência dedutiva ou abdutiva Tell Ask Retract Base de Conhecimento Extensional (BCE): fatos, objetos formulas lógicas instanciadas Atuadores
Tipologia de raciocínio não monotônico E Raciocínio sobre ações e mudanças em ambientes não estacionários E Axiomatização em lógica monotônica de raciocínio não monotônico temporal: Cálculo situacional E Cálculo de eventos E E Revisão não monotônica via retract de base de conhecimento extensional armazenando apenas fatos presentemente verdadeiros E Manutenção da verdade da base de conhecimento depois de um retract E Raciocínio hipotético com informação parcial em ambientes inacessíveis E Negação por falha em programação em lógica E Herança com sobrescrita em hierarquias de classes E Abdução E Revisão das crenças hipotéticas E Causas da necessidade de tal revisão: Recepção sensorial ou comunicativa de novos fatos confirmados, e que contradiz hipótese default ou abduzida E Tal contradição pode ser direta ou indireta via dedução E
Ações, Situações e Eventos Cálculo de Situações 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(G 1, S 0) quer dizer que o agente não está com o ouro na situação inicial S 0. * predicados eternos: e. g. Gold(G 1) (não se escreve a situação)
Açõ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)).
Ações, Situações e Eventos Cálculo de Situações Duas coisinhas a lembrar: Toda situação, exceto S 0, é o resultado de uma ação ou sequência de ações a partir de S 0. Na nossa notação, a situação é sempre o último argumento
Açõ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 satisfazem At(G 1, [1, 1], Result(seq, S 0))? (o objetivo sendo que o ouro G 1 esteja na posição [1, 1])
Açõ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 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 Eventos Cálculo de Situações Agora vamos tentar usar um plano no mundo Wumpus: digamos que o objetivo é pegar o ouro G 1, 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]), S 0)) Agora, precisamos mostrar que é possível o agente pegar o ouro, ou seja…
Açõ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(G 1, [1, 2], Result(Go([1, 1], [1, 2]), S 0)) • 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 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ções e da qualificação E 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 E 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. E Exemplificar os dois no Wumpus com lógica (pegar exemplo do AIMA)
Limitações do cálculo situacional E Assume que o agente é o único causador de mudança do mundo E Representa tempo de maneira pontual e não intervalar, indiretamente via situações. E 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 1 s e de 1 semana. E “Cálculo de Eventos” supera essas limitações.
Cálculo situacional x de eventos Regras do Mundo Wumpus Situation Calculus Event Calculus At(o, x, S 0) ((o = Agent x = [1, 1]) (o = G 1 x = [1, 2])). T = holds(at(Agent, [1, 1], T 0). holds(at(G 1, [1, 2], T 0). Agent G 1. Holding(o, SO). Gold(G 1) Adjacent([1, 1], [1, 2]) Adjacent([1, 2], [1, 1]). Initiates(Go(x, y), At(Agent, y ), t). Initiates(Grab(g), Holding(g), t). AIMA pp. 330 -334
Cálculo de eventos Ontologia 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, t 2) diz que f é terminado por algum evento entre t 2.
Ontologia do cálculo de eventos E 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. E 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, New. York), Today) quer dizer que Shankar passou o dia inteiro em New. York. E Intervalos: Podemos falar sobre as possíveis relações entre dois intervalos de tempo: Meet, Before, After, During, Overlap. E Fluentes e objetos: O objeto “USA” é um evento que começou em 1776. Sua propriedade “President” é um fluente, que representamos assim: T(President(USA) = George. Washington, AD 1790).
Limitações do cálculo de eventos E Eficiência: para cada situação, você calcula o mundo inteiro novamente. Alto custo de memória e de processamento. ESolução: sistemas de planejamento especializados.
Raciocinar sobre crenças e conhecimento E Seção 10. 4 do AIMA E Quando o agente raciocina sobre suas ações, ele pode: E usar proposições sobre crenças e proposições, tanto de outros agente quanto dele mesmo. E Ações podem ter precondições e efeitos de conhecimento. E Por exemplo: E a ação “discar o telefone de alguém” tem o conhecimento desse número como precondição; E 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 conhecimento E 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))
Raciocinar sobre crenças e conhecimento E Uma solução é usar a lógica modal epistêmica / doxástica, que usa operadores referencialmente “opacos”. E Num agente com um mínimo de racionalidade, (K(A B), K(A)) K(B) E (A, K(A B)) ou (K(A), A B) são suficientes para concluir B, mas não para concluir K(B). Nós temos BLois(Flies(Superman)), mas não temos BLois (Superman = Clark) E Então não podemos concluir que BLois(Flies(Clark)) (que bom!)
Raciocinar sobre crenças e conhecimento E Outra solução é usar aspas, com o unique string axiom e uma função de denotação: então temos den(“Superman”) = den(“Clark”) = Objeto 4892, enquanto que “Superman” “Clark”.
Refletir mudanças do ambiente em base de conhecimento instantânea com retract E Codificar atualização do modelo do agente de um ambiente não estacionário usando: E retract(old fact) e tell(new fact), no lugar de tell(new fact, new situation) EPorém, surge o problema da manutenção da verdade E 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: E tell(At(Agent, y)) E retract(At(Agent, x)) E simultaneamente E Regra de ramificação do ouro andando junto ao agente quando está segurando o ouro permitiu prova a partir de At(Agent, x), Holding(G 1). E Precisamos retrair também At(G 1, y).
Exemplo do problema da manutenção da verdade no Mundo do Wumpus E 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. E 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. E Abordagem ingênua para manutenção de verdade: E retrair tudo o que foi deduzido após a inclusão do fato que foi retraído E recomeçar dedução de tudo que foi deduzido depois desse ponto (via resolução ou encadeamento de regras para frente) E isto é INEFICIENTE
Manutenção da verdade baseada em justificativa E Abordagem JTMS (Justification-Based Truth Maintenance System): E cada frase na KB é anotada com uma justificação (as frases a partir da qual ela foi inferida) E 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 E tudo o que não é mais justificável vai ser retraído nessa reação em cadeia. E 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. E Vantagem: mais rápido que o sistema ingênuo quando há hipóteses que são consideradas True e False alternadamente. E Limitações: mudança de contexto é ineficiente
E 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. Manutenção da verdade baseada em suposição E 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”.
Circunscrição Seção 10. 7 do AIMA E 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) Abnormal 2(x) Pacifist(x). Quaker(x) Abnormal(x) Pacifist(x). Como o sistema resolve isso? * Dois modelos preferidos: Abnormal 1(Nixon) e Abnormal 2(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 default Seção 10. 7 do AIMA E 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. E Obviamente, a conclusão default estará sujeita a revisão.
Abdução Conhecimento Prévio Causal em Intenção X co(X) ca(X) e(X) Conhecimento Prévio em Extensão: • Efeitos Observados e(a), e(b), . . . • Causais Observadas Incompletas co(a), co(b), . . . Abdução CPCI CPEC NCEC |= CPEE Viés sobre Hipóteses: X ca(X) Novo Conhecimento em Extensão: Causas Hipotéticas ca(a), ca(b). . .
Abdução: exemplo E A partir de: E Conhecimento prévio causal em intenção: E 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) E Conhecimento prévio em extensão incompleto de causas: E loc(agent, 4, 1, 1) orientation(0, 1) do(forward, 1) E Conhecimento prévio em extensão de efeitos observados: E loc(agent, 4, 1, 2) E Abduzir: E Novo conhecimento em extensão de causa hipotética: E loc(wall, 5, 1)
Aplicações práticas da abdução em IA E Tirado de p. 1 e 13 -14 de Kakas-Denecker (KD), Seção 1. 3 de Kakas-Kowalski-Toni (KKT) E 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. E 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. E Raciocínio Legal: para encontrar casos similares. E Engenharia de Software: para resolver inconsistências em requirementos de sistemas E Constraint Solving Problems: Quebra-cabeças lógicos, N-Queens, problemas de planejamento no mundo dos blocos, etc
Formulações lógicas da abdução E E Seções 1 -3 de KD Seções 1. 2 -1. 3 de KKT E Dada uma teoria conhecida P, uma explicação abdutiva para um query Q é um conjunto de átomos abduzíveis tal que: E Visão de derivação: (P Q) (P | False) (P IC) E Visão de consistência: (P Q) (P IC | False) E Esta escolha vai depender do que você quer fazer
Viés sobre hipóteses abdutivas: objetivos E pp. 4 -6 de KKT E Encontrar conjunto de hipótese mais conciso e mais geral E Encontrar causas explicando os efeitos observados, no lugar de encontrar co-efeitos das mesmas causas subjacentes E Encontrar causas mais profundas (básicas), no lugar de causas intermediárias, efeitos dessas causas profundas E Encontrar um número mínimo que causas que expliquem o máximo de observações E Considerar apenas instâncias de um conjunto pré-definido de predicados chamado de abduzíveis. E Geralmente escolhidos dentro dos predicados sem definição intencional na base de conhecimento E Podem ser estratificados em níveis de preferências
Viés sobre hipóteses: predicados abduzíveis E Exemplo: grass-is-wet rained-last-night grass-is-wet sprinkler-was-on shoes-are-wet grass-is-wet E Para a observação shoes-are-wet: A explicação {grass-is-wet} não é básica enquanto {rained-last-night} e {sprinkler-was-on} são. E A explicação {rained-last-night, sprinkler-was-on} não é mínima.
Viés sobre hipóteses abdutivas: restrições de integridade E Excluir hipóteses que: E Violam diretamente um conjunto pré-definido de restrições de integridades E Cuja inclusão na base de conhecimento permite deduzir fatos que violam uma dessas restrições E Logicamente: E Exemplo: At(Wumpus(x)) At(Wumpus(y) x = y sprinkler choveu false
Viés sobre hipóteses abdutivas: minimização E Excluir conjunto de hipóteses que podem ser explicadas em termos de (i. e. , deduzidas a partir de) outras hipóteses igualmente válidas E Exemplo: grass. Is. Wet, quando sabemos sprinkler-was-on E Preferir conjunto de hipóteses com maior número de efeitos observados (corroboração) E Exemplo: formigas. De. Asas corrobora chuva e não sprinkler E Preferir conjunto de hipóteses mais geral E Exemplo: E Preferir conjunto de hipóteses mais conciso: quanto menos prerequisitos, mais plausível é que as hipóteses sejam verdade. E Exemplo:
Dedução Conhecimento Prévio Causal em Intenção X c(X) e(X) Conhecimento Prévio em Extensão: Causas Observadas c(a), c(b), . . . Dedução CPEC CPCI |= NCEE Novo Conhecimento em Extensão: Efeitos Previstos e(a), e(b). . . Conhecimento Prévio Diagnóstico em Intenção X e(X) c(X) Conhecimento Prévio em Extensão: Efeitos Observados e(a), e(b), . . . Dedução CPDI CPEE |= NCEC Novo Conhecimento em Extensão: Causas c(a), c(b). . .
Dedução: exemplos E A partir de: E Conhecimento prévio causal em intenção: E 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) E Conhecimento prévio em extensão de causas observadas: E loc(agent, 1, 1, 1) orientation(0, 1) forward(1) loc(wall, 2, 1) E Deduzir: E Novo conhecimento em extensão de efeito previsto: Eloc(agent, 2, 1, 2). E A partir de: E Conhecimento prévio diagnóstico em intenção: E X, Y, T loc(agent, X, Y, T) smell(stench, T) smelly(X, Y). E 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)). E Conhecimento prévio em extensão de efeito observado E smell(stench, 3) loc(agent, 2, 2, 3) E Deduzir: E Novo conhecimento em extensão de causa hipotética: E loc(wumpus, 3, 2) loc(wumpus, 1, 2) loc(wumpus, 2, 3) loc(wumpus, 2, 1)).
Indução Conhecimento Prévio Causal em Intenção Incompleto X c(X) i(X) Conhecimento Prévio em Extensão: • Efeitos Observados e(a), e(b), . . . • Causais Observadas c(a), c(b), . . . Indução CPCI NCCI CPEC |= CPEE Viés sobre Hipóteses: X, Y i(X) Y(X) Novo Conhecimento Causal Hipotético em Intenção X i(X) e(X)
Indução: exemplo E A partir de: E Conhecimento prévio em extensão: E 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) . . . E Viés sobre hipótese: E P 1, P 2, P 3, P 4 {>, <, =}, C { , }, Q 1, Q 2, Q 3 { , }: Q 1 U 1, U 2, U 3, U 4 Q 2 V 1, V 2, V 3, V 4 Q 3 W P 1(U, V 1) P 2(U, V 2) P 3(U, V 3) P 4(U, V 4) loc(W, U, V) E Induzir: E Novo conhecimento em intenção: E X, Y X<1 X>4 Y<1 Y>4 loc(wall, X, Y) E Variação: E Conhecimento prévio em intenção: E X, Y, H, W X<1 X>H Y<1 Y>W loc(wall, X, Y)
- Slides: 40