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