Programação em Lógica Indutiva

Slides:



Advertisements
Apresentações semelhantes
Lógica de Predicados e Representação de Conhecimento
Advertisements

Construção de listas de decisão Os tópicos anteriores tratam de indução de conceitos que podem ser descritos usando uma única região de decisão Neste tópico.
Fundamentos de Prolog: uma breve introdução à programação em lógica Jacques Robin, DI-UFPE
AULA 5 PGC Sistemas de Banco de Dados Profa. Sandra de Amo
Prolog: Predicados Built-in 1
Lógica Matemática e Computacional 7 – Introdução à Programação Lógica
Tópicos de Lógica Proposicional
Formalizar semântica da LPO
Elsa Carvalho 163 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Teoria dos Modelos.
Introdução à Programação Lógica
Banco de Dados Dedutivo
Cálculo Relacional Datalog não-recursivo
Resolução.
Agentes Baseados em Regras de Produção
Agentes Baseados em Conhecimento
Agentes Baseados em Conhecimento
Jacques Robin, DI-UFPE Prolog: comparação com outras linguagens de programação e de representação do conhecimento Jacques Robin, DI-UFPE.
Programação em lógica e lógica
Rodar XSB Prolog no Unix Shell
Banco de Dados com Regras: Ativos e Dedutivos
Programação em Lógica Indutiva
Tipologia dos dados de entrada da mineração de dados
FLORID:caminhos, negação e estratificação Idevan Gonçalves Freire Junior
Prolog: Predicados Built-in 2
Jacques Robin, Francisco Carvalho, Flávia Barros
APRENDIZAGEM COM CONHECIMENTO A PRIORI
Programação em Lógica Indutiva
Inferência em lógica de primeira ordem
Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de.
2. A Linguagem Prolog.
Sistemas Baseados em Regras de Produção
Linguagem de 1ª ordem da teoria de conjuntos
INF 1771 – Inteligência Artificial
Inteligência Artificial
Aprendizado de Máquina
Introdução a Programação em Lógica e Prolog
Aula Prática - Prolog Sistemas Inteligentes /~if684
Prolog Programação Lógica Ícaro A. Souza.
Sistemas Inteligentes
Aula Prática - Prolog Sistemas Inteligentes /~if684
Lógica de Predicados Teorema de Herbrand.
Linguagens lógicas 2013 – Luiz Mauricio Nascimento Silva
INF 1771 – Inteligência Artificial
Lógica de Predicados Implementação de Resolução. Em Lógica de 1ª. Ordem Resolução não é uma simples extensão da Resolução da Lógica Proposicional O processo.
Teorema de Herbrand e Unificação
Agentes Baseados na Lógica Proposicional
Introdução a Programação em Lógica e Prolog
Lógicas e Inferência para IA
Learning Sets of Rules Tom Mitchel (cap. 10)
Agentes Baseados em Conhecimento
Implementação de Resolução
Teorema de Herbrand e Unificação
Agentes Cognitivos Adaptativos Aula: Sistemas Baseados em Regras de Produção Flávia Barros 1.
Sistemas Especialistas
Sistemas Inteligentes
Lógica de Predicados/Primeira Ordem
Marcílio C. P. de Souto DIMAp/UFRN
INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha
Lógica para Computação
Semântica de uma fórmula da lógica da 1a ordem via modelo de Herbrand
Estratégias de Resolução
Programação em Lógica Indutiva Jacques Robin DI-UFPE.
Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE Aula I/II.
Jacques Robin CIn-UFPE Tipologia do conhecimento de saída da mineração de dados.
Decidibilidade, Corretude, Completude, Consistência
Inteligência Artificial: A Linguagem Prolog (Parte 1)
Frases de Horn Forma Normal Conjuntiva- para frases sem quantificadores conjunção de frases cada elemento da conjunção é disjunção de literais literal:
Aprendizado por Indução
Planejamento Baseado em Lógica – André Novaes – CIn UFPE 1 Planejamento Baseado em Lógica André Novaes CIn - UFPE.
Sistemas de Produção Jacques Robin CIn-UFPE. Roteiro  Definição de um sistemas de produção  Regras de produção  Inferência com regras de produção 
Transcrição da apresentação:

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

Learned Function L0 L1 f:{0,1} {0,1} f:RR f:N N Linear ¬Linear MLP Clustering Unsupervised GA BN Kohonen Learning Feedback Conex Regression PRAM Numeric Stat ILP Supervised CBR Learning Paradigm Evol VS EBL kNN ID3 Reinforcement Fuzzy Symbolic Logic None Probas Logic Prior Knowlegde

Programaçã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

ILP na mapa da programação em lógica Metalog Prolog Eqlog CDB DOOD Datalog Eclipse Pure Foil CLP(R) Florid Deductive LP Inductive Cigol Hybrid Proba Progol CSP Disco Logtalk DDB OO R GPPL ||  DBQL Types FD Z Parlog log Life

Revisão de Deductive Logic Programming (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 | ...

Revisã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 13

Revisã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

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

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

West é criminoso? Da 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).

West é criminoso? Prova 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.

Motivação de ILP: porque querer induzir 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

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: 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 daughter(D,P) com atributos (L0) Conhecimento a priori (extensional) name1 = ann … name5 = tom father11 = F father31 = T father54 = T mother11 = F mother55 = F female1 = T female5 = F male1 = F ... Exemplos Positivos: daughter42 = T daughter13 = 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}.

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

Dimensões de ILP Tarefa: Abordagem: 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):

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

Generalizacã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:

Semântica monótona Propriedades: Casos particulares: 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). 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) 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

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.

Resoluçã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

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

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

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

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

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: Então, H pode ser computado em 2 passos: 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)}

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

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

Exemplo de restrições sintáticas declaradas com conjuntos de cláusulas e predicados { 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);

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

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 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: dE, 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|

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 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: Generalizar hipótese + especifica 1 % 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).] % 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 % 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). % 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]

PROGOL: exemplo com ruído

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

Outras aplicações de ILP para KDD Classificação:

Aplicações de ILP para Engenharia de Software

ILP x outros métodos de aprendizagem Vantagens de ILP? Vantagens dos outros métodos?

Assuntos de pesquisa atual em ILP

Referências