Programação em Lógica Indutiva
Jacques Robin
DI-UFPE
O que é ILP (Inductive Logic Programming)?
Aprendizagem
Indutivo
Programação
em Lógica
Indutiva
(IPL)
Programação
em Lógica
ILP x resto da aprendizagem
• Descobre conhecimento novo expressado em lógica da 1a ordem
ILP x resto da programação em lógica
• Inverte mecanismos de dedução para implementar indução
Programação em Lógica Indutiva x Dedutiva
PL Dedutiva (Prolog, BD dedutivas):
• Fatos positivos declarados Regras |= Fatos positivos deduzidos
• Conhecimento prévio em extensão Conhecimento prévio em intenção
|= Novo conhecimento comprovado em extensão
PL Indutiva (Progol, BD indutivas):
• Fatos positivos declarados Fatos negativos declarados
Regras declaradas ?|= Regras induzidas
• Conhecimento prévio em extensão Conhecimento prévio em intenção
|= Novo conhecimento hipotético em intenção
PL com Restrições (CLP, BD de restrições):
• Restrições instanciadas Restrições abstrata
|= Restrições instanciadas (mais numerosas)
Restrições abstratas (menos numerosas e menos abstratas)
• Conhecimento prévio em extensão Conhecimento prévio em intenção
|= Novo conhecimento comprovado em extensão
Novo conhecimento comprovado em intenção
Programação em Lógica Indutiva:
tarefa genérica
Dados:
•
•
•
•
Aprende hipótese H (regras) tal que:
•
•
•
•
exemplos positivos (Xi,f(Xi))
exemplos negativos (Xj, f(Xj))
conhecimento prévio B (regras)
viés de aprendizagem (restrições sobre forma das regras)
~ Xi,f(Xi), Xi B H |= f(Xi)
~ Xj,f(Xj), Xj B H |= f(Xj)
H verifica restrições do viés de aprendizagem
~ definido por limiar de tolerância ao ruído
Linguagem de ILP x Prolog:
• com negações no BD e nas conclusões
• sem símbolo de função, e.g.: pessoa(nome(joão),idade(20)).
Viés de aprendizagem em ILP
Objetivo:
reduzir busca no espaço de hipótese
Sintática paramétrica sobre cláusulas: limitar
•número de premissas por cláusula,
•número de variáveis por cláusula,
•profundidade dos termos das cláusulas,
•nível dos termos das cláusulas.
Semântica
sobre predicados:
•tipos dos seus argumentos
•instanciação dos seus argumentos
constante #, variável de entrada + ou variável de saída -
•número de vezes que um predicado pode ser satisfeito
Programação em Lógica Indutiva (ILP):
características
Tarefas: classificação,
previsão e controle
Ambiente pode ser:
•
•
•
•
inacessível, não episódico
contínuo, ruidoso
dinâmico?, grande?
relacional, diverso
Supervisionado: E+E- ou E+
Treino antes da ação
Incremental ou não
Não iterativo
Top-down ou bottom-up ou
bidirecional
Guloso
Global
Aproveita conhecimento prévio
para podar busca da hipótese
Aproxima qualquer função
Representação do conhecimento:
•exemplos, conhecimento prévio e conhecimento aprendido
•uniformemente representados por conjunto de conjunto de cláusulas de Horn,
•i.e., regras da lógica 1a ordem da forma
c(...,X,Y,Z, ...) :- p1(...,X,Y,...),...,pn(...,Y,Z,...).
com semântica ...X,Y,Z,... c(...,X,Y,Z, ...) p1(...,X,Y,...) ... pn(...,Y,Z,...)
ILP x métodos baseados em atributos
(ID3, Redes Neurais, Redes Bayesianas)
Vantagens:
Aprende conhecimento relacional em lógica da 1a ordem
Aprende conhecimento diretamente executável
(programa Prolog)
Re-aproveita conhecimento prévio no mesmo formalismo
Capaz de inventar novos predicados (i.e., conceitos)
Limitações:
Dificilmente aprende conhecimento interessante a partir
apenas de exemplos
Métodos suficientemente eficientes para grandes BD:
• requer viés muito restringidor sobre regras a aprender
• não tem capacidade a inventar novos predicados
Aprender relação abstrata com atributos ou
lógica proposicional
Conhecimento a priori
Exemplos positivos:
name1 = ann
…
name5 = tom
father11 = F
…
father31 = T
…
father54 = T
mother11 = F
…
mother55 = F
female1 = T
…
female5 = F
male1 = F
daughter42 = T
daughter13 = T
Exemplo negativos:
daughter11 = F
…
daughter44 = F
Aprende:
daughter(D,P) :- female(D), parent(P,D),
D = {1,2,3,4,5}, P = {1,2,3,4,5}.
Limitação:
name6 = maria
female6 = T
parent56 = T
| daughter65
Aprender relação abstrata com ILP
Conhecimento a priori
Intencional:
parent(F,C) :- father(F,C).
parent(M,C) :- mother(P,C).
Extensional:
father(pat,ann).
father(tom,sue).
female(ann).
female(eve).
female(sue).
male(pat).
male(tom).
mother(eve,sue).
mother(ann,tom).
Exemplos
Positivos:
daughter(sue,eve).
daughter(ann,pat).
Negativos:
not daughter(tom,ann).
not daughter(eve,ann).
Aprende:
daughter(D,P) :female(D), parent(P,D).
Aprender definição recursiva com ILP
Conhecimento a priori
Intencional:
parent(F,C) :- father(F,C).
parent(M,C) :- mother(M,C).
Extensional:
father(pat,ann).
father(tom,sue).
female(ann).
female(eve).
female(sue).
male(pat).
male(tom).
mother(eve,sue).
mother(ann,tom).
Exemplos positivos:
ancestor(tom,sue).
ancestor(eve,sue).
...
Exemplo negativos:
not ancestor(ann,eve).
not ancestor(sue,eve).
...
Definição induzida:
ancestor(A,D) :- parent(A,D).
ancestor(A,D) :parent(A,P), ancestor(P,D).
Algoritmo genérico de ILP
inicialize fila de hipótese Fh
repetir
•
•
•
•
•
delete H de Fh
escolha regras de inferências R1, …, Rk em R
induz H1, …, Hn aplicando R1, …, Rk a H
coloca H1, …, Hn em Fh
pode Fh
até satisfazer critérioDeParada para Fh
Qualquer algoritmo de ILP:
• é uma instância desse algoritmo
• com definições e implementações particulares para:
inicialize, delete, escolha, pode e critérioDeParada
Semântica monótona
Propriedades:
•
•
•
•
Consistência a priori: B D- |= F
Necessidade a priori: B | F
Consistência a posteriori: B D- H |= F
Completude a posteriori: B H |= D+
Casos particulares:
• Monótona definida:
Monótona normal com B e H limitado a cláusulas definidas,
ie, c(X,Y) :- p(X), q(Y) mas não T :- p(X), q(Y).
• Monótona baseada em exemplos:
Monótona definida com todos D fatos instanciados
(unit ground clauses)
ie, c(a,b) ou not c(a,b) mas nem c(X,b), nem c(a,b) :- p(a),q(b).
Modelos de Herbrand
M(L) modelo de Herbrand de um programa lógico L sse:
• M(L) = {p(…, c, …) | p pred(L) c const(L) L |= p(…,c,…)}
= todos os fatos instanciados formados a partir de
predicados e constantes de L e deriváveis a partir de L
Exemplo: L: male(paulo). female(ana). male(joao).
parent(paulo,joao). parent(ana,joao).
father(F,C) :- parent(F,C), male(F).
mother(M,C) :- parent(F,C), female(M).
M(L): male(paulo). female(ana). male(joao).
parent(paulo,joao). parent(ana,joao).
father(paulo,joao). mother(ana,joao).
Thm: L sem not M(L) mínimo
Semântica não-monótona
Pressupostos:
•
•
•
•
D+ B
D- = L(H) - B via hipótese do mundo fechado
B limitado a cláusulas definidas
M+(B) = modelo de Herbrand mínimo de B
Propriedades:
• Validade: H M+(B)
• Completude: H |= M+(B)
• Mínima: G H G inválido ou incompleto
Mais conservadora do que semântica monótona:
•
•
•
•
B = {ave(piupiu). ave(oliver).}
D+ = {voa(piupiu).}
Com semântica monótona, voa(X) :- ave(X). H
Com semântica não-monótona, voa(X) :- ave(X). H
Generalizacão x Especialização
Generalização (busca bottom-up)
parte da hipótese a mais
específica: um exemplo +
iterativamente a generaliza
aplicando regras de indução
até a 1a que cobre:
• todos os exemplos positivos taxa de erro
• nenhum exemplo negativos taxa de erro
Especialização (busca top-down)
parte da hipótese a mais geral:
c(…,X,…) :-.
iterativamente a especializa
aplicando regras de dedução
até a 1a que cobre:
• todos os exemplos positivos taxa de erro
• nenhum exemplo negativos taxa de erro
Regras e operadores para ILP
Especialização (refinamento) baseado em -Subsumption
Relative Least General Generalization (RLGG)
Resolução inversa em V
Resolução inversa em W (invenção de predicados)
Implicação inversa
Derivação inversa (inverse entailment)
-Generalização (-Subsumption)
G -generaliza S sse substituição , (G) S
ie, G se unifica com uma parte de S
ex, com = {D/ann}, daughter(D,P) :- female(D).
-generaliza daughter(ann,P) :- female(ann), parent(P,ann).
Sugere 2 operadores de especializações:
• aplicar substituição e acrescentar premissa
(G -generaliza S) (G |= S) -- “G entails S”
mas (G |= S) (G
-generaliza S)
contrex,
• G: humano(paiDe(H)) :- humano(H).
• S: humano(paide(paiDe(H))) :- humano(H).
• G |= S, porém G não -generaliza S
Busca top-down
em reticulado de refinamento
Adaptação de ID3 para representação da 1a ordem
Espaço de hipótese:
• reticulado no qual cada no -generaliza seus filhos
• em cima: conclusão a aprender sem premissa
• em baixo: contradição ou hipótese mais específica Hms tal que:
Hms B |= D+ (e Hms B | D-)
Percorre reticulado de cima para baixo em largura 1a
Cada passo implementa uma abordagem gerar & testar
• gerar: todas as hipóteses Hn em L(H) refinando a hipótese atual
• testar: função heurística de:
número de D+ tal que: Hn B |= D+
número de D- tal que: Hn B |= Dtamanho de Hn
Busca top-down em reticulado de
refinamento: exemplo
daughter(D,P).
...
daughter(D,D).
...
daughter(D,P)
:- female(D).
...
daughter(D,P)
:- parent(P,D).
...
daughter(D,P)
:- female(D),
female(D).
daughter(D,P)
:- female(D),
parent(P,D).
daughter(D,P)
:- parent(D,X).
...
daughter(D,P)
:- parent(P,D),
female(D).
Generalização mínima relativa
Generalização mínima de 2 termos T e L (literais):
• substituição dos sub-termos que não se casam com variáveis
• ex, lgg(daughter(mary,ann),daughter(eve,tom)) = daughther(D,P)
• unificação inversa
Generalização mínima de 2 cláusulas:
• lgg(C1 :- P1, …, Q1. , C2 :- P2, …, Q2)
= lgg(C1,C2) :- lgg(P1,P2), …, lgg(Q1,Q2).
• ex, lgg(daughter(mary,ann) :- female(mary),parent(ann,mary). ,
daughter(eve,tom) :- female(eve),parent(tom,eve).) =
= daughter(D,P) :- female(D), parent(P,D).
Generalização mínima de 2 termos C1 e C2 relativa a
BDE = {D1, …, Dn} a priori:
• rlgg(C1,C2) = lgg(C1 :- D1, …, Dn. , C2 :- D1, …, Dn)
Generalização mínima relativa: exemplo
Com BDE = {parent(ann,mary). parent(ann,tom). parent(tom,eve). parent(tom,ian).
female(ann). female(mary). female(eve).}
rlgg(daughter(mary,ann). , daughter(eve,tom).)
= lgg(daughter(mary,ann) :- BDE. , daughter(eve,tom) :- BDE. ).
= daughter(D,P) :- BDE, parent(ann,D0), parent(P,D), parent(P1,D1),
parent(P2,D2), parent(P3,D3), parent(P4,D4),
female(D1), female(D2), female(D).
= daughther(D,P) :- parent(P,D),female(D).
Em GOLEM:
premissas redundantes podadas usando bias semântico limitando busca a
cláusulas determinadas.
Resolução inversa em V
q : a1 ,...,a n . p : - a1 ,...,a n , b1 ,...,b n .
Absorção:
p : -q, b1 ,...,b n .
p : a1 ,...,a n , q. p : - a1 ,...,a n , b1 ,...,b n .
Identificacão:
q : - b1 ,...,b n .
Para L1: necessidade de inverter unificação:
• achatar cláusulas introduzindo um novo predicado de aridade n+1
para cada função de aridade n
• ex, member(a,[a,b]) ou member(a,.(a,.(b,nil))) chateado em
• member(U,V) :- a(U), dot(V,U,X), dot(X,Y,Z), b(Y), nil(Z).
• unificação de 2 cláusulas achatadas reduz-se a casamento de
padrão das suas premissas.
Limitação: vocabulário fixo de predicados
Exemplo de resolução inversa em V:
encadeamento de 2 absorções
H2: daughter(D,P) :- parent(P,D), female(D).
11:{mary/D}
B2: female(mary).
H1: daughter(mary,P) :- parent(P,mary).
B1: parent(ann,mary).
21:{ann/P}
E1: daughter(mary,ann).
q1 = b21 = parent
q2 = female
p1 = p2 = daughter
a11 = b11 = a21 = T
Resolução inversa em W:
invenção de predicados
p : - a1 ,...,a n , b1 ,...,b n . p : a1 ,...,a n , c1 ,...,c n .
Intra-construção:
q : - b1 ,...,b n .
p : a1 ,...,a n , q.
q : - c1 ,...,c n .
Inter-construção:
Limitações:
p : - a 1 ,..., a n , b 1 ,..., b n . p : a 1 ,..., a n , c1 ,..., c n .
p : - r, b 1 ,..., b n .
r : a 1 ,..., a n .
p : - r, c1 ,..., c n .
• incapacidade em inverter derivação envolvendo várias vezes a
mesma cláusula hipotética
• complexidade da busca aumenta com conhecimento a priori
• ex, intra-construção: 2 cláusulas 3 cláusulas
Exemplo de invenção de predicado
com intra-construção
q(P,D) :father(P,D).
ancestor(A,D) :ancestor(A,P), q(P,D).
11 :{F/P}
ancestor(A,D) :ancestor(A,F), father(F,D).
q = parent
p = a1 = ancestor
q(P,D) :mother(P,D).
21 :{M/P}
ancestor(A,D) :ancestor(A,M), mother(M,D).
b1 = father
c1 = mother
Viés sobre L(H): motivação
Se L(H) contem qualquer cláusula de Horn gerável:
• por refinamento da cláusula sem premissa
• por resolução inversa de 2 elementos de B U D+
Então:
• espaço de busca (seja bottom-up ou top-down)
• grande demais para ser explorado eficientemente
• as vezes até infinito
Viés sobre L(H):
• meta-conhecimento heurístico a priori
• permitindo limitar espaço de busca
Viés sintático sobre L(H)
Conhecimento estrutural a priori sobre as hipóteses:
• preciso e específico do domínio
• ou heurístico e geral
Dimensões:
• explícito/implícito
• parametrizado/declarativo
Formalismos de declaração explícito de bias sintático:
• gramática de cláusulas definidas (DCG -- Definite Clause Grammar)
formalismo built-in da programação em lógica para parsing and
geração de linguagens)
• cláusulas da 2a ordem
Exemplo de viés sintático
declarado com DCG
head(father(P,C)).
head(mother(P,C)).
body(father(P,C)) --> m(P),f(P),[parent(P,C)].
body(mother(P,C)) --> m(P),f(P),[parent(P,C)].
m(M) --> [ ].
m(M) --> [male(M)].
f(M) --> [ ].
f(M) --> [female(M)].
Exemplo de restrições sintáticas declaradas
com cláusulas da 2a ordem
Q(P,F) :- R(P,F).
Q(P,F) :- S(P).
Q(P,F) :- S(P), R(P,F).
Q(P,F) :- S1(P), S2(P), R(P,F).
Substituição da 2a ordem
= {Q/father,S/male,R/parent}
seleciona cláusula: father(P,F) :- male(P), parent(P,F).
Viés sintático parametrizado
lista dos nomes de predicado permitidos em hipóteses
número máximo de premissas por cláusula
número máximo de variáveis por cláusula
profundidade máxima dos termos das cláusulas
nível máximo dos termos das cláusulas:
• variável V é ligada em cláusula C :- P1, …, Pn sse:
V C, ou
i {1, …, n}, W V: V Pi W Pi W ligada em C :- P1, …, Pn.
• cláusula ligada sse todas suas variáveis são ligadas
ex, p(X) :- q(Z) não ligada, p(X) :- q(X,Y),r(Y,Z),u(Z,W) ligada.
• nível n(t) de um termo t em cláusula ligada C :- P1, …, Pn:
0 se t C, ou 1 + min(n(s)) se t Pi s Pi
ex, n(C, grandfather(G) :- male(G), parent(G,F), parent(F,C)) = 2
Viés semântico sobre L(H): tipos e modos
Tipos:
const(a). const(b). …
clist([]).
clist([H|T]) :- const(H), clist(T).
Modos: restrições sobre predicados
•
•
•
•
na conclusão (modeh) ou premissa (modeb) das regras
número de vezes que um predicado pode ser satisfeito
tipos dos seus argumentos
instanciação dos seus argumentos (constante #, variável de
entrada + ou variável de saída -)
• ex: modos para append
:- modeh(1,append(+clist,+clist,-clist))?
:- modeh(1,append([+const|+clist],+clist,[-const|-clist]))?
:- modeh(1,append(#clist,+clist,-clist))?
:- modeb(1,append(+clist,+clist,-clist))?
Viés semântico sobre L(H): determinação
h(…,X0i,...) :- p1(...,X1j,…), …, pn(…,Xnk,…). determinada
dados um conhecimento a priori B e exemplos D sse:
• as instanciações dos X0j, …, Xij restringem os X(i+1)j a um único
valor, ie,
• i {1,…,n}, Xij pi, Xkl, k < I, ! v tal que:
Xij/v compatível com Xkl/vkl
Exemplo:
• D: parent(jef,paul).
parent(jef,ann).
male(paul).
female(ann).
• hasFather(C) :- parent(P,C). determinada: P/jef
• isFather(F) :- parent(F,C). não determinada: C/{paul;ann}
Torna aprendizagem eficiente (porém incompleto)
Preferências sintáticas e probabilísticas
(H) = número de bits na codificação mínima de H
Thm:
• H que minimiza (H) em L(H) também maximiza P(H|B E)
• ie, a hipótese mais concisa sempre corresponde a mais verossímil
Prova: Thm de Bayes + Thm de Shannon
Justificação téorica do navalha de Occam
Aplicações práticas de KDD por ILP
Medicina e saúde:
•
•
•
previsão dos efeitos de uma nova
droga composta a partir dos
efeitos dos seus componentes em
drogas testadas
previsão da forma 3D de uma
proteína a partir da sua seqüência
de ácidos-amidos
descoberta de regras diagnosticas
em reumatologia
•
•
descoberta de regras escolhendo
resolução de elementos finitos em
modelos numéricos de estresses
em estruturas
derivar regras de diagnostico de
falha em satélites a partir de
regras causais modelando o
funcionamento dos mesmos
•
•
•
descoberta de regras para jogar
xadrez
Engenharia de software:
•
CAD/CAM:
•
Jogos:
programação (em lógica)
automática
otimização de código (de
programas lógicos)
teste e depuração de código (de
programas lógicos)
descobertas de restrições de
integridade implícitas em BD
Processamento de linguagem
natural:
•
aprendizagem de regras de
gramáticas de uma língua natural a
partir de grande corpus de textos