MAC425/5739 Inteligência Artificial Inferência lógica Denis Deratani Mauá (largamente baseado no material de aula do Profs. Paulo Santos e Peter Norvig)
LÓGICA PROPOSICIONAL Assume mundo é composto por fatos! Símbolos: nomes em letras maiúsculas (P, Q, R,...) que podem assumir verdadeiro e falso! Sentenças atômicas: constituídas por elementos sintáticos indivisíveis (símbolo proposicional)! Sentenças complexas: são construídas a partir de sentenças mais simples com a utilização de conectivos lógicos: (não), (e), (ou), (implica), (dupla implicação)! Sentença cujo principal conectivo é : conjunção! Sentença cujo principal conectivo é : disjunção
LP: SINTAXE Sentença SentençaAtômica SentençaComplexa SentençaAtômica Verdadeiro Falso Símbolo Símbolo P Q R... SentençaComplexa Sentença (Sentença Sentença) (Sentença Sentença) (Sentença Sentença) (Sentença Sentença)
LÓGICA DE PRIMEIRA ORDEM Assume mundos compostos por:!objetos: pessoas, casas, números, cores, jogos de futebol, guerras,!relações: vermelho, redondo, número primo, irmão de, maior que, parte de, entre,!funções: pai de, amigo de, soma, triângulo,
LPO: SINTAXE Constantes Jacob, 2, NULO, e,... Predicados IrmãoDe, >,... Funções RaizQuadrada, PaiDe,... Variáveis x, y, a, b,... Conectivos,,,, Igualdade = Quantificadores, Apenas símbolos, não a coisa em si
LPO: SINTAXE Termos = função(termo 1,...,termo n ) ou constante ou variável [referem-se a objetos] Sentenças atômicas = predicado(termo 1,...,termo n ) ou termo 1 = termo 2 Sentenças complexas = S, S 1 S 2, S 1 S 2, S 1 S 2, S 1 S 2, Exemplo:! x B(x, K, R) (T(L(R, x)), T(L(K, x))) [enunciam fatos] ( ) <variáveis> S
SEMÂNTICA EM LÓGICA DE PRIMEIRA ORDEM Relaciona sentenças a modelos a fim de determinar valor-verdade! Interpretação especifica quais objetos, relações e funções são referidos pelos símbolos de constantes, relações e funções Interpretação é, portanto, um mapeamento entre símbolos de constantes objetos símbolos de predicados relações símbolos de funções funções R J R J R J R J... Uma sentença atômica predicado(termo 1,...,termo n ) é verdadeira se e somente se os objetos relativos a termo 1,...,termo n estão contidos na relação relativa à predicado
SUBSTITUIÇÃO Substituição (lista de atribuições): ϴ: Variáveis Termos (variáveis em variáveis, variáveis em constantes, variáveis em funções,...) Dada uma sentença α e uma substituição ϴ, αθ denota o resultado da substituição de ϴ em α: α = P(x, y) ϴ = {x/h, y/f(b)} αθ = P(H, F(B))
INFERÊNCIA Derivar sentenças acarretadas por base de conhecimento Lógica proposicional: Verificação de modelos enumeração é intratável; pode ser feito de forma eficiente (SAT solvers) Provador de teoremas (regras de inferência) busca no espaço de sentenças onde ações são regras de inferência Modus ponens: α β, α β Se Sócrates é humano então Sócrates é mortal, Sócrates é humano Sócrates é Mortal Algoritmo de inferência é correto se deriva sentenças acarretadas Algoritmo de inferência é completo se deriva qualquer sentença acarretada
INFERÊNCIA EM LÓGICA PROPOSICIONAL Modus Ponens: A partir de uma implicação e a premissa da implicação, pode-se inferir a conclusão Eliminação de E: De uma conjunção, pode-se inferir qualquer um dos conjuntores Resolução Unitária: De uma disjunção, se um dos disjuntores é falso, então pode-se inferir que o outro é verdadeiro
INFERÊNCIA Derivar sentenças acarretadas por base de conhecimento Lógica de primeira ordem: Redução à lógica proposicional Em geral é intratável Provador de teoremas (regras de inferência) busca no espaço de sentenças onde ações são regras de inferência Existem algoritmos completos e corretos Acarretamento é semidecidível
REDUÇÃO À INFERÊNCIA PROPOSICIONAL Converta base de conhecimento em lógica proposicional e use inferência proposicional
INSTANCIAÇÃO UNIVERSAL (UI) Toda instância de uma sentença universalmente quantificada é acarretada por ela: v α α{v/g} Para qualquer variável v e termo g Exemplos: x K(x) G(x) E(x, J) K(J) G(J) E(J, J) K(R) G(R) E(R, J) K(F(J)) G(F(J)) E(F(J), J)...
INSTANCIAÇÃO EXISTENCIAL (EI) Para qualquer sentença α, variável v, e constante k que não aparece em nenhum outro lugar da base de conhecimento: v α {v/k}α Exemplo: x C(x) O(x, J) C(C 1 ) O(C 1,J) C 1 é um novo símbolo de constante, chamado constante de Skolem
REDUÇÃO À INFERÊNCIA PROPOSICIONAL Teorema de Herbrand (1930): se uma sentença α é consequência lógica de uma base de conhecimento de 1 a ordem, então é também consequência de um subconjunto finito da base de conhecimento proposicionalizada Resultado: para a profundidade de n = 0 à n = : criar uma base proposicional com profundidade n, verificar consequência lógica de α Só funciona se α é consequência lógica da BC, caso contrário não termina Teorema de Church-Turing (1936): acarretamento em lógica de primeira ordem é semidecidível
PROBLEMAS COM A PROPOSICIONALIZAÇÃO Gera muitas sentenças irrelevantes Exemplo: x K(x) G(x) E(x) K(J) y G(y) B(R,J) Dedução de E(J) deveria ser direta, porém proposicionalização produz fatos irrelevantes como G(R)
REGRAS DE INFERÊNCIA EM PRIMEIRA ORDEM Geram sentenças consistentes diretamente da base de conhecimento em primeira ordem
MODUS PONENS GENERALIZADO (MPG) p 1 ', p 2 ',, p n ', (p 1 p 2 p n q) onde p i 'θ = p i θ para todo i qθ p 1 ' é K(J) p 2 ' é G(y) θ é {x/j, y/j} qθ é E(J) p 1 é K(x) p 2 é G(x) q é E(x) Cláusulas definidas: disjunção com um único literal positivo Todas as variáveis são (implicitamente) universalmente quantificadas
UNIFICAÇÃO x K(x) G(x) E(x) K(J) y G(y) B(R,J) No exemplo obtemos a inferência desejada imediatamente se existir uma substituição θ tal que K(x) e G(x) se resolvam com K(J) e G(y) θ = {x/j, y/j} é o que procuramos E(J)? Unify(α, β) = θ se αθ = βθ Unify recebe duas sentenças atômicas e retorna substituição que as torne (sintaticamente) idênticas ou falha
UNIFICAÇÃO - EXEMPLO Unify(α, β) = θ se αθ = βθ α β θ P(J, x) P(J, J) {x/j} P(J, x) P(y, O) {x/o, y/j} P(J, x) P(y, M(y)) {y/j, x/m(j)} P(J, x) P(x, O) falha P(J, x) Q(J, x) falha P(J, F(x)) P(J, G(x)) falha
UNIFICAÇÃO Para unificar P(J, x) e P(y, z): θ = {y/j, x/z} ou θ = {y/j, x/j, z/j} Primeiro unificador é mais geral Se duas sentenças são unificáveis, há exatamente um unificador mais geral (MGU) a não ser por renomeação de variáveis MGU = { y/j, x/z }
UNIFICAÇÃO Unificar P(J, x) e P(x, R): θ = {x/j} e θ = {x/r} ambos falham Standardizing apart: Unify(P(J, x), P(z, R)) = θ = {x/r, z/j}
UNIFICAÇÃO - EXEMPLO Base de conhecimento: x K(A, x) H(A, x) K(A, B) Consulta: H(A, B)? Unificação: Unify(K(A, x), K(A, B)) = θ = {x/b} Inferência (por resolução unitária): K(A, B) H(A, B)
EXEMPLO Base de conhecimento: The law says that it is a crime for an American to sell weapons to hostile nations. The country Nono, an enemy of America, has some missiles, and all of its missiles were sold to it by Colonel West, who is American. Objetivo: Provar que Col. West é um criminoso
EXEMPLO it is a crime for an American to sell weapons to hostile nations : American(x) Weapon(y) Sells(x, y, z) Hostile(z) Criminal(x) Nono has some missiles : x Owns(Nono, x) Missile(x) Owns(Nono, M 1 ), Missile(M 1 ) [instanciação existencial] all of its missiles were sold to it by Colonel West : Missile(x) Owns(Nono, x) Sells(West, x, Nono)
EXEMPLO Missiles are weapons : Missile(x) Weapon(x) An enemy of America counts as "hostile : Enemy(x, America) Hostile(x) West, who is American American(West) The country Nono, an enemy of America Enemy(Nono, America)
EXEMPLO 1. American(x) Weapon(y) Sells(x, y, z) Hostile(z) Criminal(x) 2. Owns(Nono, M 1 ) 3. Missile(M 1 ) 4. Missile(x) Owns(Nono, x) Sells(West, x, Nono) 5. Missile(x) Weapon(x) 6. Enemy(x, America) Hostile(x) 7. American(West) 8. Enemy(Nono, America) Criminal(West)?
EXEMPLO 1. American(x) Weapon(y) Sells(x, y, z) Hostile(z) Criminal(x) 2. Owns(Nono, M 1 ) 3. Missile(M 1 ) 4. Missile(x) Owns(Nono, x) Sells(West, x, Nono) 5. Missile(x) Weapon(x) 6. Enemy(x, America) Hostile(x) 7. American(West) 8. Enemy(Nono, America) Criminal(West)? Weapon(M 1 )
EXEMPLO 1. American(x) Weapon(y) Sells(x, y, z) Hostile(z) Criminal(x) 2. Owns(Nono, M 1 ) 3. Missile(M 1 ) 4. Missile(x) Owns(Nono, x) Sells(West, x, Nono) 5. Missile(x) Weapon(x) 6. Enemy(x, America) Hostile(x) 7. American(West) 8. Enemy(Nono, America) Criminal(West)? Sells(West, M 1, Nono) Weapon(M 1 )
EXEMPLO 1. American(x) Weapon(y) Sells(x, y, z) Hostile(z) Criminal(x) 2. Owns(Nono, M 1 ) 3. Missile(M 1 ) 4. Missile(x) Owns(Nono, x) Sells(West, x, Nono) 5. Missile(x) Weapon(x) 6. Enemy(x, America) Hostile(x) 7. American(West) 8. Enemy(Nono, America) Criminal(West)? Sells(West, M 1, Nono) Weapon(M 1 ) Hostile(Nono)
EXEMPLO 1. American(x) Weapon(y) Sells(x, y, z) Hostile(z) Criminal(x) 2. Owns(Nono, M 1 ) 3. Missile(M 1 ) 4. Missile(x) Owns(Nono, x) Sells(West, x, Nono) 5. Missile(x) Weapon(x) 6. Enemy(x, America) Hostile(x) 7. American(West) 8. Enemy(Nono, America) Criminal(West)? Sells(West, M 1, Nono) Weapon(M 1 ) Hostile(Nono) Criminal(West)
ENCADEAMENTO PROGRESSIVO
ENCADEAMENTO PROGRESSIVO É correto e completo para cláusulas de Horn (cláusulas definidas sem símbolos funcionais) Pode não terminar se α não for consequência lógica de BC! Isso é o melhor possível (Teorema de Church-Turing)! Requer casamento de cláusulas com premissas (NP-difícil)
ENCADEAMENTO REGRESSIVO É chamado com uma lista de objetivos contendo inicialmente um único elemento, a consulta original, e retorna o conjunto de todas as substituições que satisfazem à consulta
ENCADEAMENTO REGRESSIVO O algoritmo recebe o primeiro objetivo e encontra toda cláusula da base de conhecimento cujo literal positivo (ou cabeça) se unifica com objetivo Cada cláusula desse tipo cria uma nova chamada recursiva, na qual a premissa (ou corpo) da cláusula é adicionada à pilha de objetivos
ENCADEAMENTO REGRESSIVO EXEMPLO 1. American(x) Weapon(y) Sells(x, y, z) Hostile(z) Criminal(x) 2. Owns(Nono, M ) 1 3. Missile(M ) 1 4. Missile(x) Owns(Nono, x) Sells(West, x, Nono) 5. Missile(x) Weapon(x) 6. Enemy(x, America) Hostile(x) 7. American(West) 8. Enemy(Nono, America)
ENCADEAMENTO REGRESSIVO EXEMPLO 1. American(x) Weapon(y) Sells(x, y, z) Hostile(z) Criminal(x) 2. Owns(Nono, M ) 1 3. Missile(M ) 1 4. Missile(x) Owns(Nono, x) Sells(West, x, Nono) 5. Missile(x) Weapon(x) 6. Enemy(x, America) Hostile(x) 7. American(West) 8. Enemy(Nono, America)
ENCADEAMENTO REGRESSIVO EXEMPLO 1. American(x) Weapon(y) Sells(x, y, z) Hostile(z) Criminal(x) 2. Owns(Nono, M ) 1 3. Missile(M ) 1 4. Missile(x) Owns(Nono, x) Sells(West, x, Nono) 5. Missile(x) Weapon(x) 6. Enemy(x, America) Hostile(x) 7. American(West) 8. Enemy(Nono, America)
ENCADEAMENTO REGRESSIVO EXEMPLO 1. American(x) Weapon(y) Sells(x, y, z) Hostile(z) Criminal(x) 2. Owns(Nono, M ) 1 3. Missile(M ) 1 4. Missile(x) Owns(Nono, x) Sells(West, x, Nono) 5. Missile(x) Weapon(x) 6. Enemy(x, America) Hostile(x) 7. American(West) 8. Enemy(Nono, America)
ENCADEAMENTO REGRESSIVO EXEMPLO 1. American(x) Weapon(y) Sells(x, y, z) Hostile(z) Criminal(x) 2. Owns(Nono, M ) 1 3. Missile(M ) 1 4. Missile(x) Owns(Nono, x) Sells(West, x, Nono) 5. Missile(x) Weapon(x) 6. Enemy(x, America) Hostile(x) 7. American(West) 8. Enemy(Nono, America)
ENCADEAMENTO REGRESSIVO EXEMPLO 1. American(x) Weapon(y) Sells(x, y, z) Hostile(z) Criminal(x) 2. Owns(Nono, M ) 1 3. Missile(M ) 1 4. Missile(x) Owns(Nono, x) Sells(West, x, Nono) 5. Missile(x) Weapon(x) 6. Enemy(x, America) Hostile(x) 7. American(West) 8. Enemy(Nono, America)
ENCADEAMENTO REGRESSIVO 1. American(x) Weapon(y) Sells(x, y, z) Hostile(z) Criminal(x) 2. Owns(Nono, M ) 1 3. Missile(M ) 1 4. Missile(x) Owns(Nono, x) Sells(West, x, Nono) 5. Missile(x) Weapon(x) 6. Enemy(x, America) Hostile(x) 7. American(West) 8. Enemy(Nono, America)
ENCADEAMENTO REGRESSIVO Espaço linear com relação ao tamanho da prova Incompleto devido a loops infinitos (busca em profundidade) Pode ser consertado verificando se cada novo objetivo já foi verificado antes Ineficiente, pois submetas podem ser resolvidos várias vezes Pode ser consertado armazenando resultados anteriores ( com aumento da uso de memória) Método utilizado em programação em lógica (prolog)
RESOLUÇÃO Lógica proposicional: A B, B C A C Prova por resolução (refutação):! 1. Adicione negação da consulta à BC! 2. Transforme a BC em forma normal conjuntiva (CNF)! 3. Enquanto for possível, aplique regra de resolução; se cláusula vazia (NIL) é produzida, pare e retorne que consulta é verdadeira! 4. Retorne que consulta é falsa Prova por resolução sempre termina porque cada passo gera cláusulas menores
RESOLUÇÃO Lógica de primeira ordem: L 1 L k, M 1 M n (L 1 L i-1 L i+1 L k M 1 M j-1 M j+1 M n )θ onde Unify(L i, M j ) = θ (as duas clausulas são separadamente padronizadas, assim não possuem variáveis iguais)
RESOLUÇÃO - EXEMPLO 1. Consulta deve ser negada e adicionada à BC Exemplo: Feathers(x) Bird(x) Feathers(Tweety) Bird(Tweety)?
RESOLUÇÃO - EXEMPLO 1. Consulta deve ser negada e adicionada a BC Exemplo: Feathers(x) Bird(x) Feathers(Tweety) Bird(Tweety)
RESOLUÇÃO - EXEMPLO 2. As sentenças devem estar em forma normal conjuntiva (CNF) Exemplo: Feathers(x) Bird(x) Feathers(Tweety) Bird(Tweety)
RESOLUÇÃO - EXEMPLO 2. As sentenças devem estar em forma normal conjuntiva (CNF) Exemplo: Feathers(x) Bird(x) Feathers(Tweety) Bird(Tweety)
RESOLUÇÃO - EXEMPLO 3. Aplique regra de resolução enquanto possível e não gerar cláusula NIL Exemplo: Feathers(x) Bird(x) Feathers(Tweety) Bird(Tweety)
RESOLUÇÃO - EXEMPLO 3. Aplique regra de resolução enquanto possível e não gerar cláusula NIL Exemplo: Feathers(x) Bird(x) Feathers(Tweety) Bird(Tweety)
RESOLUÇÃO - EXEMPLO 3. Aplique regra de resolução enquanto possível e não gerar cláusula NIL Exemplo: Feathers(x) Bird(x) Feathers(Tweety) Bird(Tweety) Feathers(Tweety)
RESOLUÇÃO - EXEMPLO 3. Aplique regra de resolução enquanto possível e não gerar cláusula NIL Exemplo: Feathers(x) Bird(x) Feathers(Tweety) Bird(Tweety) Feathers(Tweety)
RESOLUÇÃO - EXEMPLO 3. Aplique regra de resolução enquanto possível e não gerar cláusula NIL Exemplo: Feathers(x) Bird(x) Feathers(Tweety) Bird(Tweety) Feathers(Tweety) NIL
RESOLUÇÃO Exemplo: com θ = {x/tweety} Feathers(x) Bird(x) Feathers(Tweety) Bird(Tweety) Prova por resolução de CNF(BC α) é correta e completa para lógica de primeira ordem
EXEMPLO: PROVA POR RESOLUÇÃO
PROVA POR REFUTAÇÃO Para provar teorema (consequência lógica) A provamos que A é insatisfatível para provar falsidade basta encontrar modelo para A Isso não prova que A é verdadeiro (válida)! Apenas que A é falso! Mostrar que A é satisfatível não implica que A é válida Prove que x+y=4 x=2 y=2! Logicamente equivalente a (x+y=4) (x=2 y=2)! Vamos tentar provar que existe x,y tal que ( (x+y=4) (x=2 y=2)), que é equivalente a (x+y=4) ( (x=2) (y=2))! x=1, y=3 teorema é falso! mas (x+y=4) ( (x=2) (y=2)) também é falso: x=2, y=2
BIBLIOGRAFIA Russell, S. and Norvig, P. Inteligência Artificial, 3a Edição, Ed. Campus/Elsevier, 2010. Capítulos 7 e 9. Notas de aula da Prof. Paulo Santos (FEI) Notas de aula do Prof. Peter Norvig