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

Programação em Lógica Indutiva

  • Upload
    walden

  • View
    25

  • Download
    1

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: Programação em Lógica Indutiva

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

Jacques RobinDI-UFPE

Page 2: Programação em Lógica Indutiva

Programação em Lógica

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

Aprendizagem Indutivo

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

AprendizagemAtributivo

Lógica de ordem 0

Aprendizagem RelacionalLógica da 1a ordem

Aprendizagem deÁrvores de Decisão

Aprendizagem deRegras Proposicionais

Page 3: Programação em Lógica Indutiva

Revisão da Programação em LógicaRevisã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

Page 4: Programação em Lógica Indutiva

Exemplo de programa PrologExemplo de programa Prolog

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?

Page 5: Programação em Lógica Indutiva

PrologProlog

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

Page 6: Programação em Lógica Indutiva

DCGs: Gramáticas de Cláusulas DefinidasDCGs: 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

Page 7: Programação em Lógica Indutiva

Conversão regra DCG / cláusula PrologConversão regra DCG / cláusula Prolog

Regras de gramáticas:Regras de gramáticas: sn --> det, subs.Entradas do dicionário: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: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).

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

Page 8: Programação em Lógica Indutiva

Prolog DGC: exemplo de execuçãoProlog DGC: exemplo de execução

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

Page 9: Programação em Lógica Indutiva

Paradigmas de raciocínioParadigmas de raciocínio

DeduçãoC = {Cj } | P R |= C}fatos particulares

AbduçãoP = {Pj VH } | P R |= C}fatos particulares hipotéticos

InduçãoH = {Hn: P1

n ... Pmn Cn VH } |

E B H |= Cregras gerais hipotéticas

P = { Pj}fatos particulares

R = {Rk: P1k ... Pl

k Ck }regras gerais

C = {Cj}fatos particulares

R = {Rk: P1k ... Pl

k Ck}regras gerais

E = { Pj} {Cj}fatos particulares B = {Bk: P1

k ... Pnk Ck}

regras gerais

Viés VP sobre hipóteses

Viés VR sobre hipóteses

Page 10: Programação em Lógica Indutiva

Idéias da ILPIdé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)).

Page 11: Programação em Lógica Indutiva

ID3 x ILPID3 x ILPEntrada: ú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 em intenção

Saída: conhecimento sobre classes de

entidades e/ou relações no mesmo formalismo do que a

entrada diretamente executável (por um

interpretador Prolog)

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

Page 12: Programação em Lógica Indutiva

Indução de árvore de decisão: Indução de árvore de decisão: característicascaracterísticas

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

Page 13: Programação em Lógica Indutiva

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

Page 14: Programação em Lógica Indutiva

Dados de lentesDados de lentes

Entrada para ID3:

age spectacleprescription

astigmatism

tear rate

lens

young myope no reduced none

...Presbyopic hypermetrop

eyes normal none

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

Page 15: Programação em Lógica Indutiva

Árvore de decisão em PrologÁ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).

Page 16: Programação em Lógica Indutiva

Necessidade Necessidade da da

aprendizagem aprendizagem relacionalrelacional

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?

Page 17: Programação em Lógica Indutiva

Problemas de Problemas de representação representação do exemplos do exemplos como única como única

tabela tabela

ShapeO1

Dir01 Shape02 Dir02 ...

O1inO2

... O2inO1

..

.

Class

Circle N/A Circle N/A no yes -

Circle N/A Triangle up no yes +

Triangle Down Square N/A no yes -

... ... ... ... ...

... ... ... ...

...

Page 18: Programação em Lógica Indutiva

Problemas de Problemas de representação representação

do do classificador classificador como árvore como árvore de decisãode decisão

Shape O1

= circle = rectangle

Shape O2

= triangle= circle = rectangle

O2 in O1

= no= yes

= triangle

Page 19: Programação em Lógica Indutiva

Necessidade de aprendizagem relacionalNecessidade de aprendizagem relacional

Page 20: Programação em Lógica Indutiva

Necessidade de aprendizagem relacionalNecessidade de aprendizagem relacional

Page 21: Programação em Lógica Indutiva

Necessidade de aprendizagem relacionalNecessidade de aprendizagem relacional

Page 22: Programação em Lógica Indutiva

Necessidade de aprendizagem relacionalNecessidade de aprendizagem relacional

pos(E) :- triangle(E,T1,D), triangle(E,T2,D), in(T1,T2).

Page 23: Programação em Lógica Indutiva

Aplicações Aplicações requerendorequerendo aprendizagem relacionalaprendizagem 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

Page 24: Programação em Lógica Indutiva

ILP monótonaILP 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

Page 25: Programação em Lógica Indutiva

ILP não monótonaILP 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

Page 26: Programação em Lógica Indutiva

ILP em geralILP 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

Page 27: Programação em Lógica Indutiva

Aprender relação abstrata com ILPAprender relação abstrata com ILP

Conhecimento a prioriIntencional: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).

ExemplosPositivos:daughter(sue,eve).daughter(ann,pat).Negativos:not daughter(tom,ann).not daughter(eve,ann).

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

Page 28: Programação em Lógica Indutiva

Aprender definição recursiva com ILPAprender definição recursiva com ILP

Conhecimento a prioriIntencional: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).

Page 29: Programação em Lógica Indutiva

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

Page 30: Programação em Lógica Indutiva

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

Page 31: Programação em Lógica Indutiva

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

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)

Page 32: Programação em Lógica Indutiva

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 33: Programação em Lógica Indutiva

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 34: Programação em Lógica Indutiva

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

Page 35: Programação em Lógica Indutiva

Busca bottom-up com Busca bottom-up com generalização mínima relativa: exemplogeneralizaçã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).

Page 36: Programação em Lógica Indutiva

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

Absorção:

Identificacão:

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 37: Programação em Lógica Indutiva

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 38: Programação em Lógica Indutiva

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 .a,...,a :r .b,...,br, -:p

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

n1n1n1

n1n1n1n1

Page 39: Programação em Lógica Indutiva

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 40: Programação em Lógica Indutiva

Viés de aprendizagem em ILPVié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 argumentosinstanciaçã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

Page 41: Programação em Lógica Indutiva

Viés sintático sobre L(H)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

Page 42: Programação em Lógica Indutiva

Exemplo de viés sintático Exemplo de viés sintático declarado com DCGdeclarado 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 43: Programação em Lógica Indutiva

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 44: Programação em Lógica Indutiva

Viés sintático parametrizadoVié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

Page 45: Programação em Lógica Indutiva

Viés semântico sobre L(H): tipos e modosVié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))?

Page 46: Programação em Lógica Indutiva

Viés semântico sobre L(H): determinaçãoVié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)

Page 47: Programação em Lógica Indutiva

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 48: Programação em Lógica Indutiva

Aplicações práticas de ILPAplicações práticas de 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

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