1 / 48

Programação em Lógica Indutiva

Programação em Lógica Indutiva. Jacques Robin DI-UFPE. O que é ILP (Inductive Logic Programming)?. Aprendizagem Indutivo. Aprendizagem de Árvores de Decisão. Programação em Lógica Indutiva (ILP). Programação em Lógica. Aprendizagem de Regras Proposicionais. Aprendizagem

walden
Télécharger la présentation

Programação em Lógica Indutiva

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. O que é ILP (Inductive Logic Programming)? Aprendizagem Indutivo Aprendizagem de Árvores de Decisão Programação em Lógica Indutiva (ILP) Programação em Lógica Aprendizagem de Regras Proposicionais Aprendizagem Relacional Lógica da 1a ordem Aprendizagem Atributivo Lógica de ordem 0

  3. Revisão da Programação em Lógica • Representação uniforme de dados e conhecimento comLógica de Horn • Sub-conjunto (próprio) da lógica clássica da 1a ordem • Restrito a Cláusulas de Horn, i.e., implicações da forma: ...X,Y,Z,... p1(...,X,Y,...) ... pn(...,Y,Z,...)  c(...,X,Y,Z, ...) • Notação Prolog: • Conhecimento dedutivo em intenção (regras): c(...,X,Y,Z, ...) :- p1(...,X,Y,...),...,pn(...,Y,Z,...). • Dados em extensão (fatos): • p1(...,a,b,...). logicamente equivalente a T  p1(...,a,b,...). • Interpretador Prolog: • sistema dedutivo • provador de teorema para Lógica de Horn

  4. father(pat,ann). mother(sue,pat). parent(F,C) :- father(F,C). parent(M,C) :- mother(P,C). ancestor(A,D) :- parent(A,D). ancestor(A,D) :- parent(P,D), ancestor(A,P). ? ancestor(A,ann). yes: A = pat ? ; yes: A = sue ? ; no ? ancestor(A,sue). no ? Exemplo de programa Prolog

  5. Prolog • Linguagem de programação computacionalmente completa de propósito geral • Especificação formal executável • Banco de dados dedutivo: • fato Prolog = registro de tabela relacional • predicado Prolog = entidade ou relação • regra (não recursiva) Prolog = visão de BD relacional • Gramáticas de Cláusulas Definidas (DCG): • pré-processador built-in da programação em lógica: • convertendo regras de gramáticas em cláusulas lógicas, e assim • re-aproveitando o provador de teorema da programação em lógica para implementar “de graça” parser ou gerador de frases

  6. DCGs: Gramáticas de Cláusulas Definidas • Pré-processador built-in da programação em lógica: • convertendo regras de gramáticas em cláusulas lógicas, e assim • re-aproveitando o provador de teorema da programação em lógica para implementar “de graça” parser ou gerador de frases • Usa diferença de listas como estrutura de dados: • frase da linguagem cuja gramática é representada pela DCG - lista de palavras ainda a ser processadas = listas de palavras já processadas • Cada regra DCG: • associada a uma categoria sintática genérica cat • instancia 2 argumentos adicionais implícitos: 1. lista de palavras do constituinte const da frase de catégoria cat 2. lista de palavras do resto da frase na direita de const

  7. Regras de gramáticas: sn --> det, subs. Entradas do dicionário: det --> [o]. det--> [a]. det --> [os]. det --> [as]. subs --> [menino]. subs --> [meninos]. subs --> [menina]. subs --> [meninas]. Conversão para cláusulas Prolog: sn(Csn,Rsn) :- det(Csn,Rdet), subs(Rdet,Rsn). det([o|Rdet], Rdet). det([a|Rdet], Rdet). det([os|Rdet], Rdet). det([as|Rdet], Rdet). subs([menino|Rsubs], Rsubs). subs([meninos|Rsubs], Rsubs). subs([menina|Rsubs], Rsubs). subs([meninas|Rsubs], Rsubs). Conversão regra DCG / cláusula Prolog • Princípio: • Usa diferença de listas como estrutura de dados: • frase da linguagem cuja gramática é representada pela DCG - lista de palavras ainda a ser processadas = listas de palavras já processadas • Cada regra DCG: • associada a uma categoria sintática genérica cat • instancia 2 argumentos adicionais implícitos: 1. lista de palavras do constituinte const da frase de catégoria cat 2. lista de palavras do resto da frase na direita de const • Exemplo:

  8. sn(Csn,Rsn) :- det(Csn,Rdet), subs(Rdet,Rsn). det([o|Rdet], Rdet). det([a|Rdet], Rdet). det([os|Rdet], Rdet). det([as|Rdet], Rdet). subs([menino|Rsubs], Rsubs). subs([meninos|Rsubs], Rsubs). subs([menina|Rsubs], Rsubs). subs([meninas|Rsubs], Rsubs). ?- sn([o,menino],[]). call sn([o,menino],[]). call det([o,menino],Rdet). exit det([o,menino],[menino]). call subs([menino], []). exit subs([menino], []). exit sn([o,menino],[]). yes ?- subs([menino],[]). yes ?- det([o, menino],[menino]). yes ?- sn([minha, menina],[]). no ?- sn([o,meninas],[]). yes Prolog DGC: exemplo de execução

  9. Paradigmas de raciocínio P = { Pj} fatos particulares C = {Cj }| P  R |= C} fatos particulares Dedução R = {Rk: P1k ...  Plk  Ck } regras gerais C = {Cj} fatos particulares P = {Pj VH }| P R |= C} fatos particulares hipotéticos R = {Rk: P1k ...  Plk  Ck} regras gerais Abdução Viés VP sobre hipóteses E = { Pj}  {Cj} fatos particulares H = {Hn: P1n ...  Pmn  Cn VH } | E  B  H |= C regras gerais hipotéticas B = {Bk: P1k ...  Pnk  Ck} regras gerais Indução Viés VR sobre hipóteses

  10. Idéias da ILP • Induzir regras Prolog • A partir de: • exemplos codificados como fatos Prolog • conhecimento prévio codificado como fatos e regras Prolog • Indução = geração de hipótese + teste de hipótese • ILP usa mecanismos de busca análogos a busca no espaço de versão da aprendizagem atributiva para gerar hipóteses • ILP reaproveita dedução automática de Prolog para testar hipótese • Linguagem de ILP x Prolog: • com negações no BD e nas conclusões • geralmente sem símbolos de função,ex.: pessoa(nome(joão),idade(20)).

  11. Entrada: única tabela de BD representa conhecimento prévio apenas em extensão apenas sobre um tipo de entidade Saída: conhecimento sobre classes de entidades em um formalismo diferente da entrada não diretamente executável Entrada: uma ou várias tabelas de BD representam vários tipos de entidades e relações uma base de regras representa conhecimento prévio emintenção Saída: conhecimento sobre classes de entidades e/ou relações no mesmo formalismo do que a entrada diretamenteexecutável (por um interpretador Prolog) ID3 x ILP Vale não apenas para ID3 e sim para todos os métodos de aprendizagem baseados em representação proposicional atributo-valor: Weka, Redes Neurais, todos os métodos ensinados no CIn exceto ILP 

  12. Tarefas: classificação, previsão e controle Ambiente: inacessível: + não episódico: + contínuo: + ou - ruidoso: + dinâmico: + relacional: - diverso: - grande: + Supervisionado Controle da aprendizagem: Treino antes da ação Não incremental Não iterativo Top-down Guloso Global Representação do conhecimento: lógica propocisional Não pode aproveitar de conhecimento prévio Propriedades da função aproximada: escada N dimensional Indução de árvore de decisão: características

  13. 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 Programação em Lógica Indutiva (ILP):características

  14. Dados de lentes Entrada para ID3: Entrada para ILP: age(fulano,young). spectaclePrescription(fulano,myope). astigmatism(fulano,no). tearRate(fulano,no). lens(fulano,no). ... age(beltrano,presbyopic). spectaclePrescriptio(beltrano,hypermetrope). astigmatim(beltrano,yes). tearRate(beltrano,reduced). lens(beltrano,none).

  15. Árvore de decisão em Prolog lens(X,none) :- tearProductionRate(X,reduced), !. lens(X,soft) :- tearProductionRate(X,normal), astimatism(X,no), !. lens(X,hard) :- tearProductionRate(X,normal), astimatism(X,yes), spectaclePrescription(X,myope), !. lens(X,none) :- tearProductionRate(X,normal), astimatism(X,yes), spectaclePrescription(X,hypermetrope).

  16. Necessidade da aprendizagem relacional • Como representar esse exemplos como um única tabela de banco de dados? • Como representar um classificador abstrato desses exemplos com uma árvore de decisão?

  17. Problemas de representação do exemplos como única tabela

  18. Problemas de representação do classificador como árvore de decisão Shape O1 = circle = rectangle = triangle Shape O2 = circle = rectangle = triangle O2 in O1 = yes = no

  19. Necessidade de aprendizagem relacional

  20. Necessidade de aprendizagem relacional

  21. Necessidade de aprendizagem relacional

  22. Necessidade de aprendizagem relacional • pos(E) :- triangle(E,T1,D), triangle(E,T2,D), in(T1,T2).

  23. Aplicações requerendoaprendizagem relacional • Descoberta e aquisição de conhecimento envolvendo raciocínio espacial, temporal ou multi-agentes (ex, Caverna do Wumpus, futebol de robôs, jogos, genética, biologia molecular, etc.) • Processamento de linguagem natural • Aprendizagem de gramática de parsing, geração ou tradução de textos • Engenharia de software: • Programação automática a partir de exemplos de entrada/saída • Engenharia de dados: • Explicitação ou verificação de conformidade a esquema e restrições de integridade em BD

  24. ILP monótona • Dados: • exemplos positivos (Xi,f(Xi)), geralmente instanciados • exemplos negativos (Xj, f(Xj)), geralmente instanciados • conhecimento prévio B (regras), geralmente sem negação • viés de aprendizagem (restrições sobre forma das regras a aprender) • Aprende hipótese H (regras) tal que: • ~ 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 • Aplicações: • Mineração de dados preditiva: classificação, previsão temporal, controle • Descoberta de relações causais

  25. ILP não monótona • Dados: • exemplos todos positivos (Xi,f(Xi)), geralmente instanciados • conhecimento prévio B (regras), possivelmente com negação • viés de aprendizagem (restrições sobre forma das regras a aprender) • Aprende hipótese H (regras) tal que: • ~ Xi,f(Xi), Xi  B  H  f(Xi) • H verifica restrições do viés de aprendizagem • ~ definido por limiar de tolerância ao ruído • Aplicações: • Mineração de dados descritiva: regras de associação, restrições de integridade em BD, equações matemática • Descoberta de relações não causais

  26. ILP em geral • Generaliza qualquer tipo de aprendizagem para representações relacionais • Por isso existe técnicas de ILP para: • agrupamento conceitual relacional (aprendizagem não supervisionado) • aprendizagem relacional por reforço • aprendizagem relacional baseado em instâncias

  27. 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 relação abstrata com ILP

  28. 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). Aprender definição recursiva com ILP

  29. 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 Generalizacão x Especialização

  30. Regras e operadores para ILP • Especialização (refinamento) baseado em -Generalização • Generalização Mínima Relativa (RLGG Relative Least General Generalization) • Resolução inversa em V • Resolução inversa em W (invenção de predicados) • Implicação inversa • Derivação inversa (inverse entailment)

  31. -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) • contra-exemplo: • G: humano(paiDe(H)) :- humano(H). • S: humano(paide(paiDe(H))) :- humano(H). • G |= S, porém G não -generaliza S • Por isso muitos sistemas de ILP excluem estruturas aninhadas (em lógica, funções) 

  32. 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 |= D- • tamanho de Hn

  33. ... 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).

  34. Generalização mínima relativa • Generalização mínima de 2 termos T e L (literais): • substituição por variáveis dos sub-termos que não se casam • 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 base de conhecimento prévio BCP = {D1, …, Dn}: • rlgg(C1,C2) = lgg(C1 :- D1, …, Dn. , C2 :- D1, …, Dn)

  35. Busca bottom-up com generalização mínima relativa: exemplo Com BCP ={parent(ann,mary). parent(ann,tom). parent(tom,eve). parent(tom,ian). female(ann). female(mary). female(eve).} e BDE+ = {daughter(mary,ann). , daughter(eve,tom)}. rlgg(daughter(mary,ann). , daughter(eve,tom).) = lgg(daughter(mary,ann) :-BCP. , daughter(eve,tom) :- BCP. ). = lgg(daughter(mary,ann), daughter(eve,tom)) :- lgg(parent(ann,mary), parent(ann,mary)), lgg(parent(ann,mary), parent(ann,tom), lgg(parent(ann,mary), parent(tom,eve), ... lgg(female(mary), female(eve)), lgg(female(eve), female(eve)). = 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).

  36. Resolução inversa em V • Absorção: • Identificacão: • Limitação: vocabulário fixo de predicados

  37. Exemplo de resolução inversa em V:encadeamento de 2 absorções H2: daughter(D,P) :- parent(P,D), female(D). B2: female(mary). :{mary/D} H1: daughter(mary,P) :- parent(P,mary). B1: parent(ann,mary). :{ann/P} q1 = b21 = parent q2 = female p1 = p2 = daughter a11 = b11 = a21 = T E1: daughter(mary,ann).

  38. Resolução inversa em W:invençã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

  39. q(P,D) :- father(P,D). ancestor(A,D) :- ancestor(A,P), q(P,D). q(P,D) :- mother(P,D). :{F/P} :{M/P} ancestor(A,D) :- ancestor(A,M), mother(M,D). ancestor(A,D) :- ancestor(A,F), father(F,D). Exemplo de invenção de predicado com intra-construção q = parent b1 = father p = a1 = ancestor c1 = mother

  40. Viés de aprendizagem em ILP • Objetivo: reduzir busca no espaço de hipótese • Porque? • 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 sintático paramétrico 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. • Viés semântico 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

  41. 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

  42. 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)].

  43. 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).

  44. 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áusulaligada 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

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

  46. 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)

  47. 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

  48. 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 CAD/CAM: 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 Jogos: descoberta de regras para jogar xadrez Engenharia de software: 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 Aplicações práticas de ILP

More Related