55
Programação em Lógica Indutiva Programação em Lógica Indutiva Jacques Robin DI-UFPE

Programação em Lógica Indutiva Jacques Robin DI-UFPE

Embed Size (px)

Citation preview

Page 1: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Programação em Lógica IndutivaProgramação em Lógica Indutiva

Jacques RobinDI-UFPE

Page 2: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Aprendizagem Indutivo

Programação em Lógica

Programação em Lógica Indutiva (IPL)

O que é ILP (Inductive Logic O que é ILP (Inductive Logic Programming)?Programming)?

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

Page 3: Programação em Lógica Indutiva Jacques Robin DI-UFPE

LearningFeedback

MLP

Kohonen

ID3

VSEBL

ILP

Supervised

Reinforcement

Unsupervised

Prior Knowlegde

Probas

L

earn

ing P

ara

dig

m

Sym

bolic

Sta

tC

onex

Evol

Fuzz

y

Num

eri

c

Logic

CBR

Clustering

BNGA

Logic

PRAM

Regression

kNN

Learned Function

L0 L1

f:{0,1} {0,1}f:RR f:N N

Linear ¬Linear

None

Page 4: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Programação em LógicaProgramação em Lógica

Teoria Lógica = Especificação Formal = Implementação = Programa = BD dedutivo = Base de Conhecimento (BC) Programar = apenas declarar axiomas e regras Axiomas da TL:

• fatos da BC • parte extensional do BDD (dados explícitos de um BD tradicional)

Regras da TL (e da BC):• parte intencional do BDD

Teoremas da TL:• deduzidos a partir dos axiomas e das regras• dados implícitos do BDD

Executar programa = consultar BDD = provar teorema

Page 5: Programação em Lógica Indutiva Jacques Robin DI-UFPE

ILP na mapa da programação em lógicaILP na mapa da programação em lógica

Inductive

Pure

Deductive

Hybrid

||

OO

CSP

GPPLDBQL

LP

Proba

DDB

DOOD

Florid

Life

Progol

Foil

Cigol

PrologDatalog

MetalogEqlog

logParlog

Logtalk

Eclipse

CDB

Types Z

R

FD

CLP(R)

Disco

Page 6: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Revisão de Deductive Logic Revisão de Deductive Logic Programming (DLP): Lógica da 1a ordemProgramming (DLP): Lógica da 1a ordem

Fórmula Fórmula-Atômica | (Fórmula) | Fórmula

| Quantificador Variável, ... Fórmula,| Fórmula Conectivo Fórmula

Fórmula-Atômica Predicado(Termo,...) | Termo = Termo

Termo Função(termo,...) | Constante

| Variável

Conectivo | | | Quantificador | | !Constante wumpus | agente | flecha | ...Variável X | Wumpus | Agente | ...Predicado adjacente | vivo | ...Função em | brisa | ...

Page 7: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Revisão de DLP: unificaçãoRevisão de DLP: unificação Substituição de variáveis de um termo (ou formula) f:

• conjunto de pares Var/termo Unificação de 2 termos f e g:

• substituição S das variáveis de f e g tal que S(f)=S(g)• 2 resultados:

S r=S(f)=S(g)

Exemplos:?- prof(X,disc(Y,dept(di,ufpe))) = prof(geber,disc(ia,Z)).X = geber, Y = ia, Z = dept(di,ufpe).? prof(X,disc(X,dept(di,ufpe))) = prof(geber,disc(ia,Z))fail

Unificador mais geral: com menor número de variáveis instanciadas

Substituição mínima: com menor número de pares Var/const

Page 8: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Revisão de DLP: Cláusulas de HornRevisão de DLP: Cláusulas de Horn

Formulas de L1 da forma: Muitas mas nem todas as formulas de L1 tem

conjunto equivalente de cláusulas de Horn, cex:

Lógica de Horn:

Geralmente, programação em lógica: • baseada em• usa hipótese do mundo fechado, ie.,

tudo que não é mencionado nem deduzível suposto falso

• com negação por falha nas premissas, ie, not p(X) verificado sse p(X) falha verificado sse no BDE ou na

conclusão de uma regra com premissas verificadas

n1n11H1 hhfHorn,declaúsulash,h/LfL

CPP n1

Y)kills(X,animal(Y)r(X)animalLoveYX,

H1L

P(X) P(X)not P(X)

Page 9: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Revisão de DLP: ResoluçãoRevisão de DLP: Resolução Forma geral:

Exemplos:

),...)Y(...,Q...,...)Y(...,Q,...)X(...,P...,...)X(...,P(),...)XC(...,(

,...))Y(...,((,...))X(...,((,...},/YX{...,

,...)Y(...,Q...,...)Y(...,Q,...)Y(...,P

,...)X(...,P...,...)X(...,P...,...)X(...,P,...)XC(...,

mim

1i1

mim

1i1

ci

kik

kik

kj

ki

mjm

1j1

kjk

mim

kik

1i1

ci

tom)father(X,X)(bob,grandChild

Z/tom}{Y/bob,Y)father(Z,Z)father(X,X)(Y,grandChild

Tbob),father(tom

Tshannon)(bob,grandChild

}{X/shannontom)father(X,X)(bob,grandChild

Ttom)nnon,father(sha

Page 10: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Revisão de DLP: refutação usando Revisão de DLP: refutação usando resoluçãoresolução

Page 11: Programação em Lógica Indutiva Jacques Robin DI-UFPE

West é criminoso?West é criminoso? Da lógica da 1a ordem para PrologDa lógica da 1a ordem para Prolog

Em L1: P,W,N american(P) & weapon(W)

& nation(N) & hostile(N) & sells(P,N,W) => criminal(P)

2. W owns(nono,W) & missile(W)3. W owns(nono,W) & missile(W)

=> sells(west,nono,W)7. X missile(W) => weapon(W)8. X enemy(N,america) =>

hostile(N)4. american(west)5. nation(nono)6. enemy(nono,america)9. nation(america)

Em Prolog:criminal(P) :- american(P),

weapon(W), nation(N), hostile(N), sells(P,N,W).

owns(nono,m1).missile(m1).sells(west,nono,W) :-

owns(nono,W), missile(W).weapon(W) :- missile(W).hostile(N) :- enemy(N,america).american(west).nation(nono).enemy(nono,america).nation(america).

Page 12: Programação em Lógica Indutiva Jacques Robin DI-UFPE

West é criminoso?West é criminoso? Prova em PrologProva em Prolog

criminal(P) :- american(P), weapon(W), nation(N), hostile(N), sells(P,N,W).

owns(nono,m1).missile(m1).sells(west,nono,W) :-

owns(nono,W), missile(W).weapon(W) :- missile(W).hostile(N) :- enemy(N,america).american(west).nation(america).enemy(nono,america).nation(nono).

criminal(west)? <- yes.•american(west)? -> yes.•weapon(W)? <- W = m1.

missile(W)? -> W = m1.•nation(N)? -> N = america.•hostile(america)? <- no.

enemy(america,america)? -> no.•backtrack: nation(N), N \ {america}? -> N = nono.•hostile(nono)? <- yes.

enemy(nono,america)? -> yes.•sells(west,nono,m1)? <- yes.

owns(nono,m1)? -> yes.missile(nono,m1)? -> yes.

Page 13: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Motivação de ILP: porque querer induzir Motivação de ILP: porque querer induzir representações em lógica da 1a ordem?representações em lógica da 1a ordem?

ID3, version-space, redes neurais e redes bayesianas:• induzem representações em lógica de ordem 0• não conseguem induzir relações abstratas e definições

recursivas• nem conseguem usar essas como conhecimento a priori do

domínio Tarefa de DLP :

• dados fatos Xi e conhecimento a priori B• deduzir conclusões f(Xi) tal que: Xi,f(Xi) Xi B |= f(Xi)

Tarefa de ILP: indução como inverso de dedução• dados exemplos (Xi,f(Xi)) e conhecimento a priori B• aprende hipótese H tal que: Xi,f(Xi) Xi B H |= f(Xi)• com Xi, f(Xi), B e H representados em L1

Page 14: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Aprender relação abstrata com ILP: Aprender relação abstrata com ILP: daughter(D,P) = f(father,female,male,mother).daughter(D,P) = f(father,female,male,mother). 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).

Objetivo: Induzir: daughter(D,P) :- female(D), parent(P,D).

Page 15: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Aprender daughter(D,P) com atributos Aprender daughter(D,P) com atributos (L0)(L0)

Conhecimento a priori (extensional)name1 = ann…name5 = tomfather11 = F…father31 = T…father54 = Tmother11 = F…mother55 = Ffemale1 = T…female5 = Fmale1 = F...

Exemplos Positivos:

daughter42 = Tdaughter13 = T

Negativos:daughter11 = F…daughter44 = F

Consegue induzir: daughter(D,P) :- female(D),

parent(P,D), D = {1,2,3,4,5}, P = {1,2,3,4,5}.

Page 16: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Aprender definição recursiva com ILP: Aprender definição recursiva com ILP: ancestorancestor = f(parent, ancestor). = f(parent, ancestor).

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:ancestor(tom,sue).ancestor(eve,sue).... 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).

Page 17: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Dimensões de ILPDimensões de ILP

Tarefa:• Grau de automação: interativo x autónomo• Incremental (na apresentação dos dados): sim/não• Semântica: monótona normal, monótona definita, não-monótona• Descoberta de predicados: com/se• Entrada: D+, D+^D-, D+^B, D+^D-^B• Saída: um x vários predicados, LP x CLP

Abordagem:• Operadores: -subsumption, rlgg, resolução ou implicação inversa• Restrições da linguagem de hipótese L(H) (language bias):

sintáticas x semânticas parametrizadas x declarativas

• Estratégia de busca: Global: especialização (top-down) x generalização (bottom-up) Local (preference bias):

Page 18: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Algoritmo genérico de ILPAlgoritmo 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

Page 19: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Generalizacão x EspecializaçãoGeneralizacão x Especialização

Generalização (busca bottom-up)

parte da hipótese a mais específica: um exemplo +

iterativamente generaliza-la aplicando regras de indução até a 1a que cobre:

• todos os exemplos +• nenhum exemplo -

inicializa: FH <- {h0}, h0 D+

deleta: escolha: pode: critérioDeParada:

Especialização (busca top-down)

parte da hipótese a mais geral:

c(…,X,…) :-. iterativamente especializa-la aplicando regras de dedução até a 1a que cobre:

• todos os exemplos +• nenhum exemplo -

inicializa: FH <- {c(…,X,…) :-.}.

deleta: escolha: pode: critérioDeParada:

Page 20: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Semântica monótonaSemâ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).

Page 21: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Modelos de HerbrandModelos 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

Page 22: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Semântica não-monótonaSemâ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)• Minimal: G H G inválido ou incompleto

Mais conservadora do que semântica monótona:• B = {bird(tweety). bird(oliver).}• D+ = {flies(tweety).}• Com semântica monótona, flies(X) :- bird(X). H• Com semântica não-monótona, flies(X) :- bird(X). H

Page 23: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Regras e operadores para ILPRegras 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)

Page 24: Programação em Lógica Indutiva Jacques Robin DI-UFPE

-Generalização (-Generalização (-Subsumption)-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

Page 25: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Generalização mínima relativaGeneralizaçã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)

Page 26: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Generalização mínima relativa: exemploGeneralizaçã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.

Page 27: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Resolução inversa em VResolução inversa em V

Absorção:

Identificacão:

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

.b,...,b -q,:p

.b,...,b ,a,...,a -: p .a,...,a :q

n1

n1n1n1

.b,...,b -:q

.b,...,b ,a,...,a -: p q.,a,...,a :p

n1

n1n1n1

Page 28: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Exemplo de resolução inversa em V:Exemplo de resolução inversa em V:encadeamento de 2 absorções encadeamento de 2 absorções

E1: daughter(mary,ann).

B1: parent(ann,mary).

B2: female(mary).

H1: daughter(mary,P) :- parent(P,mary).

H2: daughter(D,P) :- parent(P,D), female(D).

:{ann/P}

:{mary/D}

q1 = b21 = parentq2 = femalep1 = p2 = daughtera11 = b11 = a21 = T

11

12

Page 29: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Resolução inversa em W:Resolução inversa em W:invenção de predicadosinvenção de predicados

Intra-construção:

Inter-construção:

Limitações: • 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

.c,...,c -:q q. ,a,...,a :p .b,...,b -:q

.c,...,c ,a,...,a :p .b,...,b ,a,...,a -: p

n1n1n1

n1n1n1n1

.c,...,cr, -:p q. ,a,...,a :r .b,...,br, -:p

.c,...,c ,a,...,a :p .b,...,b ,a,...,a -: p

n1n1n1

n1n1n1n1

Page 30: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Exemplo de invenção de predicado Exemplo de invenção de predicado com intra-construçãocom intra-construção

ancestor(A,D) :- ancestor(A,F), father(F,D).

ancestor(A,D) :- ancestor(A,M), mother(M,D).

ancestor(A,D) :- ancestor(A,P), q(P,D).

q(P,D) :- father(P,D).

q(P,D) :- mother(P,D).

:{F/P} :{M/P}

q = parent b1 = fatherp = a1 = ancestor c1 = mother

11 1

2

Page 31: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Busca top-down Busca top-down em reticulado de refinamentoem 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 |= D- tamanho de Hn

Page 32: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Busca top-down em reticulado de Busca top-down em reticulado de refinamento: exemplorefinamento: exemplo

daughter(D,P).

daughter(D,D). daughter(D,P) :- parent(P,D).

daughter(D,P) :- parent(D,X).

daughter(D,P):- female(D).

daughter(D,P):- female(D), female(D).

daughter(D,P):- female(D),

parent(P,D).

... ... ...

daughter(D,P):- parent(P,D),

female(D).

... ...

Page 33: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Derivação inversaDerivação inversa

Como: • B H |= D B D |= H B D |= M(B D) |= H H |= M(B D)• G -generaliza S G |= S

Então, H pode ser computado em 2 passos:• 1: Deduz M(B D) a partir de B e D • 2: Calcula H = {h L(H) | h -generaliza M(B D)}

Page 34: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Restrições de L(H): motivaçãoRestrições de 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

Restrição de L(H): • meta-conhecimento heurístico a priori • permitindo limitar espaço de busca

Page 35: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Restrições sintáticas de L(H)Restrições sintáticas de 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:• conjuntos de cláusulas e predicados• 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

Page 36: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Exemplo de restrições sintáticas Exemplo de restrições sintáticas declaradas com conjuntos de cláusulas e declaradas com conjuntos de cláusulas e

predicadospredicados

{ father(F,C) :- { male(F); female(F) }, parent(F,C); mother(M,C) :- { male(M); female(M) }, parent(M,C) }

{ father(F,C) :- male(F), female(F), parent(F.C); father(F,C) :- male(F), parent(F,C); father(F,C) :- female(F), parent(F.C); father(F,C) :- parent(F,C); mother(M,C) :- male(M), female(M),

parent(M,C); mother(M,C) :- male(M), parent(M,C); mother(M,C) :- female(M), parent(MÇ); mother(M,C) :- parent(M,C);

Page 37: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Exemplo de restrições sintáticas Exemplo de restrições sintáticas declaradas com DCGdeclaradas 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)].

Page 38: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Exemplo de restrições sintáticas Exemplo de restrições sintáticas declaradas com cláusulas da 2a ordemdeclaradas 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).

Page 39: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Restrições sintáticas parametrizadasRestrições sintáticas parametrizadas

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

Page 40: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Restrições semânticas de L(H): tipos e Restrições semânticas de L(H): tipos e modosmodos

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))?

Determinação:

Page 41: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Restrições semânticas de L(H): Restrições semânticas de L(H): determinaçãodeterminaçã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)

Page 42: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Preferências sintáticas e probabilísticas 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

Page 43: Programação em Lógica Indutiva Jacques Robin DI-UFPE

PROGOL: nas dimensões de ILPPROGOL: nas dimensões de ILP Tarefa:

• Grau de automação: interativo ou autônomo• Incremental (na apresentação dos dados): sim ou não• Semântica: não-monótona• Descoberta de predicados: ?• Entrada: D+ ou D+^D- ou D+^B ou D+^D-^B• Saída: um ou vários predicados, LP

Abordagem:• Operadores: derivação inversa, -generalização• Restrições da linguagem de hipótese L(H) (language

bias): sintáticas e semânticas parametrizadas e declarativas

• Estratégia de busca: Global: top-down, mais bottom-up bounded Local: poda espaço usando função heurística f(H)

estimando poderDePredição(H) x concisão(H)

Page 44: Programação em Lógica Indutiva Jacques Robin DI-UFPE

PROGOL: algoritmoPROGOL: algoritmo

Instância do algoritmo genérico de ILP com: inicialize: H = {obj(…,X,…) :- }. delete: dE, B H |= E escolha: H que maximiza f(H), função heurística de

busca aproximando (poderDePredição(H),concisão(H))

pode: • hipóteses mais específicas que M(B D)• hipóteses que não pode mais melhorar f(H)

critérioDeParada:• |falsos+| + |falsos-| < limiar de ruído, ou• E =

Page 45: Programação em Lógica Indutiva Jacques Robin DI-UFPE

PROGOL: função heurística de buscaPROGOL: função heurística de busca

f(H) = (P(p-n-c-h+1))/p, com:• P = |E+|• p = |E+ deduzidos de H| (verdadeiros +)• n = |E- deduzidos de H| (falsos -)• c = |H| (em número de literais)• h = |variáveis de saída não restritas|

Page 46: Programação em Lógica Indutiva Jacques Robin DI-UFPE

PROGOL: construir hipótese + específica PROGOL: construir hipótese + específica % Restrições semânticas de L(H):- set(r, 10000) % max Prolog unif:- set(h, 100) % max Prolog search

depth:- modeh(1,implies5(+bool5, +bool5, -

bool5).:- modeb(1,or5(+bool5, +bool5, -bool5).:- modeb(1,not5(+bool5, -bool5).bool5(X) :- integer(X), X => 0, X <= 4.

% B: conhecimento a priori not5(I,Out) :- Out is 4 - I.or5(X,X,X).or5(I,J,Out) :- I > J, Out is I.or5(I,J,Out) :- I < J, Out is J.

% E+: exemplos positivosimplies5(4,4,4).implies5(4,0,0).implies5(0,4,4).implies5(1,2,3)% E-: exemplos negativos:- implies5(2,0,0).:- implies5(4,2,4).

1/ d= implies5(4,4,4) mode declar or5(4,4,4) M(B d) not5(4,0) M(B d) or5(4,0,4) M(B d) or5(0,4,4) M(B d) or5(0,0,0) M(B d) not5(4,0) M(B d) M(B d) = or5(4,4,4) not5(4,0) or5(4,0,4) or5(0,4,4) or5(0,0,0) not5(4,0) implies5(4,4,4). maxspec{h | h H |= e} = or5(A,A,A)

not5(A,B) or5(A,B,A) or5(B,A,A) or5(B,B, B)

not5(B,A) implies5(A,A,A).

CProgol Version 4.4|- consult(implies5a)?[No contradictions found]yes|- generalise(implies5/3)?[Generalising implies5(4,4,4).][Most specific clause is]implies5(A,A,A) :- or5(A,A,A), not5(A,B), or5(A,B,A), or5(B,A,A), or5(B,B,B),

not5(B,A).

Page 47: Programação em Lógica Indutiva Jacques Robin DI-UFPE

PROGOL: Generalizar hipótese + PROGOL: Generalizar hipótese + especifica 1 especifica 1 % Restrições semânticas de L(H):- set(r, 10000) % max Prolog unif:- set(h, 100) % max Prolog search depth:- modeh(1,implies5(+bool5, +bool5, -

bool5).:- modeh(1,or5(+bool5, +bool5, -bool5).:- modeh(1,not5(+bool5, -bool5).bool5(X) :- integer(X), X => 0, X <= 4.

% B: conhecimento a priori not5(I,Out) :- Out is 4 - I.or5(X,X,X).or5(I,J,Out) :- I > J, Out is I.or5(I,J,Out) :- I < J, Out is J.

% E+: exemplos positivosimplies5(4,4,4).implies5(4,0,0).implies5(0,4,4).implies5(1,2,3)% E-: exemplos negativos:- implies5(2,0,0).:- implies5(4,2,4).

% Generalising implies5(A,A,A).[C:0,1,0,0 implies5(A,A,A).][C:-5,1,1,0 implies5(A,B,A).] % pruned[C:2,3,1,0 implies5(A,B,B).] % 1st tried [C:0,2,0,1 implies5(A,A,B).] % pruned[C:1,5,2,1 implies5(A,B,C).] % 2nd % Specialising implies5(A,B,B)[C:0,3,1,0 implies5(A,B,B) :- or5(B,B,B).][C:0,3,1,0 implies5(A,B,B) :- or5(B,B,C).][C:0,2,0,0 implies5(A,B,B) :- or5(A,B,B).][C:-2,2,1,0 implies5(A,B,B) :- or5(A,B,A).][C:0,3,1,0 implies5(A,B,B) :- or5(A,B,C).][C:0,2,0,0 implies5(A,B,B) :- or5(B,A,B).][C:-2,2,1,0 implies5(A,B,B) :- or5(B,A,A).][C:0,3,1,0 implies5(A,B,B) :- or5(B,A,C).][C:0,3,1,0 implies5(A,B,B) :- or5(A,A,A).][C:0,3,1,0 implies5(A,B,B) :- or5(A,A,C).][C:0,3,1,0 implies5(A,B,B) :- not5(B,C).][C:0,3,1,0 implies5(A,B,B) :- not5(A,C).][C:-2,3,1,0 implies5(A,B,B) :- not5(B,C), or5(B,C,D).]...[C:-2,3,1,0 implies5(A,B,B) :- or5(A,A,C), not5(C,D).]

Page 48: Programação em Lógica Indutiva Jacques Robin DI-UFPE

PROGOL: Generalizar hipótese + PROGOL: Generalizar hipótese + especifica 2especifica 2

% Specialising implies5(A,B,C)[C:0,5,2,1 implies5(A,B,C) :- or5(A,A,A).]...[C:0,5,2,1 implies5(A,B,C) :- or5(B,B,D).][C:-2,3,1,0 implies5(A,B,C) :- or5(B,B,C), not5(C,D).]...[C:0,4,0,1 implies5(A,B,C) :- or5(A,B,B), not5(B,D).][C:0,5,2,1 implies5(A,B,C) :- not5(A,D).][C:0,5,2,1 implies5(A,B,C) :- not5(B,D).][C:0,4,0,0 implies5(A,B,C) :- or5(B,A,B), not5(A,D), or5(A,D,C).]...[C:-1,4,0,1 implies5(A,B,C) :- or5(A,B,B), not5(B,D), not5(D,E).][C:0,4,1,0 implies5(A,B,C) :- not5(A,D), or5(A,D,C).][C:-1,5,2,1 implies5(A,B,C) :- not5(A,D), or5(A,D,E).][C:2,5,0,0 implies5(A,B,C) :- not5(A,D), or5(B,D,C).] % BINGO![C:-3,3,1,1 implies5(A,B,C) :- not5(A,D), or5(B,D,B).][C:-1,5,2,1 implies5(A,B,C) :- not5(A,D), or5(B,D,E).][122 explored search nodes, f=2,p=5,n=0,h=0][5 redundant clauses retracted]

% Restrições semânticas de L(H):- set(r, 10000) % max Prolog unif:- set(h, 100) % max Prolog search depth:- modeh(1,implies5(+bool5, +bool5, -

bool5).:- modeh(1,or5(+bool5, +bool5, -bool5).:- modeh(1,not5(+bool5, -bool5).bool5(X) :- integer(X), X => 0, X <= 4.

% B: conhecimento a priori not5(I,Out) :- Out is 4 - I.or5(X,X,X).or5(I,J,Out) :- I > J, Out is I.or5(I,J,Out) :- I < J, Out is J.

% E+: exemplos positivosimplies5(4,4,4).implies5(4,0,0).implies5(0,4,4).implies5(1,2,3)% E-: exemplos negativos:- implies5(2,0,0).:- implies5(4,2,4).

Page 49: Programação em Lógica Indutiva Jacques Robin DI-UFPE

PROGOL: exemplo com ruídoPROGOL: exemplo com ruído

Page 50: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Aplicações de ILP para KDD: previsãoAplicações de ILP para KDD: previsão

Page 51: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Outras aplicações de ILP para KDDOutras aplicações de ILP para KDD

Classificação:

Page 52: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Aplicações de ILPAplicações de ILPpara Engenharia de Softwarepara Engenharia de Software

Page 53: Programação em Lógica Indutiva Jacques Robin DI-UFPE

ILP x outros métodos de aprendizagemILP x outros métodos de aprendizagem

Vantagens de ILP? Vantagens dos outros métodos?

Page 54: Programação em Lógica Indutiva Jacques Robin DI-UFPE

Assuntos de pesquisa atual em ILPAssuntos de pesquisa atual em ILP

Page 55: Programação em Lógica Indutiva Jacques Robin DI-UFPE

ReferênciasReferências