350 likes | 440 Views
Programação em Lógica Indutiva. Jacques Robin CIn-UFPE. Programação em Lógica Indutiva (IPL). Aprendizagem Indutivo. Programação em Lógica. O que é ILP (Inductive Logic Programming)?. ILP x resto da aprendizagem
E N D
Programação em Lógica Indutiva Jacques Robin CIn-UFPE
Programação em Lógica Indutiva (IPL) Aprendizagem Indutivo Programação em Lógica O que é ILP (Inductive Logic 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
Metáfora cognitiva (ou paradigma): Simbólica, Nebulosa, Estatística, Conexionista, Evolucionista, Híbrida Propriedades matemáticas da função a aproximar: domínio e contra-domínio {0,1}, R dependência: linear, linear por parte, não linear, etc. Representação da função a aproximar: lógica, probabilística, numérica Propriedades matemáticas do espaço das representações: dimensão densidade Dimensões de aprendizagem
Dimensões de aprendizagem (cont.) • Conhecimento: • a priori: aproveitável, necessário • aprendido: novidade, interpretabilidade • Algoritmo de aprendizagem: • iterativo ou não • local ou global • Feedback disponível: • supervisionado, não supervisionado, por reforço • nível de ruído (grau de aproximação)
Aprendizagem: feedback disponível • Aprendizagem supervisionada: certo ou errado • Dado um conjunto de exemplos pré-classificados, aprender uma descrição geral que encapsula a informação contida nesses exemplos e que pode ser usada para prever casos futuros • ex. concessão de crédito • Aprendizagem não supervisionada: se vira! • Dada uma coleção de dados não classificados, agrupá-los por regularidades • ex. caixa de supermercado empacotando • Aprendizagem por reforço: recompensa/punição • ex. jogo de xadrez, RoboCup: é por aí!
Dedução x Indução • Dedução: D(A,R)= T • a partir de • uma base de axiomas A conhecida a priori • uma base de regras de inferência R conhecida a priori • deduzir: a base de teoremas T, tal que: A R |= T • Indução: I(A,T,R) = H • a partir de: • base de axiomas A conhecida a priori • base de teoremas T+ e não teoremas T- observada empiricamente • uma base de regras de inferência R conhecida a priori • induzir: • base de regras de inferência hipotéticas H, • tal que: A R H |= T+ e A R H | T- • ILP : indução com A, R, H e T representadas em Lógica de Horn da 1a ordem.
Metáfora cognitiva: simbólica Função a aproximar: booleana Representação da função a aproximar: fórmula da lógica de Horn da 1a ordem Algoritmo de aprendizagem: iterativo ou não local ou global Feedback: supervisionado ruído: com ou sem Conhecimento a priori: aproveitável necessário quando poucos exemplos Conhecimento aprendido: altamente interpretável alguns métodos de ILP criam novos predicados ILP ao longo das dimensões de aprendizagem
ILP x outras abordagem de aprendizagem • Vantagens x outros métodos de aprendizagem (ID3, version-space, redes neurais, redes bayesianas, etc.): • indução de relações abstratas e definições recursivas • na forma de um programa diretamente executável • aproveitamento do conhecimento a priori do domínio • poucos exemplos necessários (i.e., A e T podem ser pequenas) • Desvantagens x outros métodos de aprendizagem: • alto custo computacional do treinamento • dificuldade em formar hipóteses interessantes na ausência de conhecimento a priori
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: 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). Aprender relação abstrata com ILP: 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: 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). Aprender definição recursiva com ILP: ancestor = f(parent, ancestor).
Dimensõ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: T+, T+ T-, T+ A R, T+ T- A R • 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):
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érioDeParadapara 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
Generalização (busca bottom-up) parte da hipótese a mais específica: qualquer exemplo positivo iterativamente generaliza-lá aplicando regras de indução até a 1a que cobre: quase todos os exemplos positivos quase nenhum exemplo negativo Especialização (busca top-down) parte da hipótese a mais geral: c(…,X,…) :-. iterativamente especializa-lá aplicando regras de dedução até a 1a que cobre: quase todos os exemplos positivos quase nenhum exemplo negativo Generalizacão x Especialização • Para os 2: • “quase” definido quantitativamente via uma taxa de erro • necessária para: • evitar overfitting da amostra de treinamento • garantir o poder de generalização da hipótese
Semântica monótona • Propriedades: • Consistência a priori: A R T- |= {f} • Necessidade a priori: A R | {f} • Consistência a posteriori: A R T- H |= {f} • Completude a posteriori: A R H |= T+ • 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 T+ e T- 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: • T+ A R • T- = L(H) - A R via hipótese do mundo fechado • A R limitado a cláusulas definidas • M+(A R) = modelo de Herbrand mínimo de A R • Propriedades: • Validade: H M+(A R ) • Completude: H |= M+(A R) • Minimal: G H G inválido ou incompleto • Mais conservadora do que semântica monótona: • A R = {bird(tweety). bird(oliver).} • T+ = {flies(tweety).} • Com semântica monótona, flies(X) :- bird(X). H • Com semântica não-monótona, flies(X) :- bird(X). H
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
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.
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 A R |= T+ (e Hms A R |T-) • 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 A R |= T+ • número de D- tal que: Hn A R |= T- • tamanho 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) :- parent(D,X). ... ... daughter(D,P) :- female(D), female(D). daughter(D,P) :- female(D), parent(P,D). daughter(D,P) :- parent(P,D), female(D).
Derivação inversa • Como: • A R H |= T A R T |= H A R T |= M(A R T) |= H H |= M(A R T) • G -generaliza S G |= S • Então, H pode ser computado em 2 passos: • 1: Deduz M(A R T) a partir de A R e de T • 2: Calcula H = {h L(H) | h -generaliza M(A R T)}
Restriçõ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 A R T+ • 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
Restriçõ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
Restrições semânticas de 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))? • Determinação:
Restrições semânticas de 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
PROGOL: 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)
PROGOL: 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 =
PROGOL: 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|
% 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 positivos implies5(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). 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). :- 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 positivos implies5(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).] PROGOL: Generalizar hipótese + especifica 1
% 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 positivos implies5(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). PROGOL: Generalizar hipótese + especifica 2