Inferência lógica - IME-USP

Propaganda
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(termo1,...,termon) ou constante ou variável
[referem-se a objetos]
Sentenças atômicas = predicado(termo1,...,termon) ou termo1 = termo2
[enunciam fatos]
Sentenças complexas = ¬S, S1 ∧ S2, S1 ∨ S2, S1 ⇒ S2, S1 ⇔ S2,
( ∀ | ∃ ) <variáveis> S
Exemplo:
! ∀x B(x, K, R) ⇒ (T(L(R, x)), T(L(K, x)))
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
R
J
R
J
R
J
R
J
Interpretação é, portanto, um mapeamento entre
símbolos de constantes
símbolos de predicados
símbolos de funções
→
→
→
objetos
relações
funções
Uma sentença atômica predicado(termo1,...,termon) é verdadeira se e somente
se os objetos relativos a termo1,...,termon 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(C1) ∧ O(C1,J)
C1 é 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
a
lógica de uma base de conhecimento de 1 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)
p1', p2', … , pn', (p1 ∧ p2 ∧ … ∧ pn ⇒ q) onde pi'θ = piθ para todo i
qθ
p1' é K(J)
p1 é K(x)
p2' é G(y)
p2 é G(x)
θ é {x/J, y/J}
q é E(x)
qθ é E(J)
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)
E(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
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, M1), Missile(M1)
[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, M1)
3.
Missile(M1)
4.
Missile(x) ∧ Owns(Nono, x) ⇒ Sells(West, x, Nono)
5.
Missile(x) ⇒ Weapon(x)
Enemy(x, America) ⇒ Hostile(x)
6.
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, M1)
3.
Missile(M1)
4.
Missile(x) ∧ Owns(Nono, x) ⇒ Sells(West, x, Nono)
5.
Missile(x) ⇒ Weapon(x)
Enemy(x, America) ⇒ Hostile(x)
6.
7. American(West)
8. Enemy(Nono, America)
Criminal(West)?
Weapon(M1)
EXEMPLO
1.
American(x) ∧ Weapon(y) ∧ Sells(x, y, z) ∧ Hostile(z) ⇒ Criminal(x)
2.
Owns(Nono, M1)
3.
Missile(M1)
4.
Missile(x) ∧ Owns(Nono, x) ⇒ Sells(West, x, Nono)
5.
Missile(x) ⇒ Weapon(x)
Enemy(x, America) ⇒ Hostile(x)
6.
7. American(West)
8. Enemy(Nono, America)
Criminal(West)?
Sells(West, M1, Nono)
Weapon(M1)
EXEMPLO
1.
American(x) ∧ Weapon(y) ∧ Sells(x, y, z) ∧ Hostile(z) ⇒ Criminal(x)
2.
Owns(Nono, M1)
3.
Missile(M1)
4.
Missile(x) ∧ Owns(Nono, x) ⇒ Sells(West, x, Nono)
5.
Missile(x) ⇒ Weapon(x)
Enemy(x, America) ⇒ Hostile(x)
6.
7. American(West)
8. Enemy(Nono, America)
Criminal(West)?
Sells(West, M1, Nono)
Weapon(M1)
Hostile(Nono)
EXEMPLO
1.
American(x) ∧ Weapon(y) ∧ Sells(x, y, z) ∧ Hostile(z) ⇒ Criminal(x)
2.
Owns(Nono, M1)
3.
Missile(M1)
4.
Missile(x) ∧ Owns(Nono, x) ⇒ Sells(West, x, Nono)
5.
Missile(x) ⇒ Weapon(x)
Enemy(x, America) ⇒ Hostile(x)
6.
7. American(West)
8. Enemy(Nono, America)
Criminal(West)?
Sells(West, M1, Nono)
Weapon(M1)
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 )
3.
Missile(M )
4.
5.
Missile(x) ∧ Owns(Nono, x) ⇒ Sells(West, x, Nono)
Missile(x) ⇒ Weapon(x)
6.
Enemy(x, America) ⇒ Hostile(x)
7.
American(West)
Enemy(Nono, America)
8.
1
1
ENCADEAMENTO REGRESSIVO
— EXEMPLO
1.
American(x) ∧ Weapon(y) ∧ Sells(x, y, z) ∧ Hostile(z) ⇒ Criminal(x)
2.
Owns(Nono, M )
3.
Missile(M )
4.
5.
Missile(x) ∧ Owns(Nono, x) ⇒ Sells(West, x, Nono)
Missile(x) ⇒ Weapon(x)
6.
Enemy(x, America) ⇒ Hostile(x)
7.
American(West)
Enemy(Nono, America)
8.
1
1
ENCADEAMENTO REGRESSIVO
— EXEMPLO
1.
American(x) ∧ Weapon(y) ∧ Sells(x, y, z) ∧ Hostile(z) ⇒ Criminal(x)
2.
Owns(Nono, M )
3.
Missile(M )
4.
5.
Missile(x) ∧ Owns(Nono, x) ⇒ Sells(West, x, Nono)
Missile(x) ⇒ Weapon(x)
6.
Enemy(x, America) ⇒ Hostile(x)
7.
American(West)
Enemy(Nono, America)
8.
1
1
ENCADEAMENTO REGRESSIVO
— EXEMPLO
1.
American(x) ∧ Weapon(y) ∧ Sells(x, y, z) ∧ Hostile(z) ⇒ Criminal(x)
2.
Owns(Nono, M )
3.
Missile(M )
4.
5.
Missile(x) ∧ Owns(Nono, x) ⇒ Sells(West, x, Nono)
Missile(x) ⇒ Weapon(x)
6.
Enemy(x, America) ⇒ Hostile(x)
7.
American(West)
Enemy(Nono, America)
8.
1
1
ENCADEAMENTO REGRESSIVO
— EXEMPLO
1.
American(x) ∧ Weapon(y) ∧ Sells(x, y, z) ∧ Hostile(z) ⇒ Criminal(x)
2.
Owns(Nono, M )
3.
Missile(M )
4.
5.
Missile(x) ∧ Owns(Nono, x) ⇒ Sells(West, x, Nono)
Missile(x) ⇒ Weapon(x)
6.
Enemy(x, America) ⇒ Hostile(x)
7.
American(West)
Enemy(Nono, America)
8.
1
1
ENCADEAMENTO REGRESSIVO
— EXEMPLO
1.
American(x) ∧ Weapon(y) ∧ Sells(x, y, z) ∧ Hostile(z) ⇒ Criminal(x)
2.
Owns(Nono, M )
3.
Missile(M )
4.
5.
Missile(x) ∧ Owns(Nono, x) ⇒ Sells(West, x, Nono)
Missile(x) ⇒ Weapon(x)
6.
Enemy(x, America) ⇒ Hostile(x)
7.
American(West)
Enemy(Nono, America)
8.
1
1
ENCADEAMENTO REGRESSIVO
1.
American(x) ∧ Weapon(y) ∧ Sells(x, y, z) ∧ Hostile(z) ⇒ Criminal(x)
2.
Owns(Nono, M )
3.
Missile(M )
4.
5.
Missile(x) ∧ Owns(Nono, x) ⇒ Sells(West, x, Nono)
Missile(x) ⇒ Weapon(x)
6.
Enemy(x, America) ⇒ Hostile(x)
7.
American(West)
Enemy(Nono, America)
8.
1
1
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:
L1 ∨ ··· ∨ Lk,
M1 ∨ ··· ∨ Mn
(L1 ∨ ··· ∨ Li-1 ∨ Li+1 ∨ ··· ∨ Lk ∨ M1 ∨ ··· ∨ Mj-1 ∨ Mj+1 ∨ ··· ∨ Mn)θ
onde Unify(Li, ¬Mj) = θ
(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:
¬Feathers(x) ∨ Bird(x)
Feathers(Tweety)
Bird(Tweety)
com θ = {x/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
Download