CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

46
CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE

Transcript of CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

Page 1: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

CLP(BN): Constraint Logic Programming with Bayes Net

Constraints

Rodrigo Cunha Cin-UFPE

Page 2: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 2

Roteiro Contexto Introdução BN (Bayesian Networks) PRM (Probabilistic Relational Modelo) CLP(BN) Exemplo de CLP(BN) Avaliação (Evaluation) Aula Prática Referências Bibliográficas

Page 3: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 3

O que é CLP(BN)? Extensão de Prolog que considera probabilidades

bayesianas sobre termos lógicos como restrições na maneira de CLP.

Restrições de natureza diferentes do que CLP(FD), CLP(R):

epistemológica no lugar de ontológica não sobre domínio modelado mas sobre crenças do

agente sobre domínio Segue esquema geral CLP:

máquina de inferência inter-laça unificação de termos lógicos com resolução de restrições

resolvedor de restrições implementa algoritmos herdados de redes bayesianas (marginalização, simulação estocástica, ..)

Page 4: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 4

Contexto Fig Jr.

Page 5: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 5

CLP(BN) e Redes Bayesianas

CLP(BN): Estritamente mais expressivo que Probabilistic

Relational Model (PRM) Autoriza recursão

PRM: redes bayesianas da 1a ordem arcos com CPT não ligam mais proposições, mas

tabelas relacionais cujos elementos são descritos em jargão orientado a objetos

resultado da instanciação de PRM via unificação de variáveis: rede Bayesiana

Page 6: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 6

Revisão de PRM Constantes, nomeando objetos de classes

Ex: ProfSmith pertence a classe Professor, Jones pertence a classe Estudante, Bloggs pertence a classe Estudante

Funções Simples: classes -> imagem finita Ex: Inteligencia(Jones) = {alta, baixa},

Famoso(ProfSmith) = {true, false} Funções Complexas: de classes em classes

Ex: Orientador(Jones) = ProfSmith Informação probabilística: especificar pais para as

funções simples x, x Estudante Parents(Sucesso(x)) =

{Inteligencia(x), Famoso(Orientador(x))} x, x Estudante P(Sucesso(x) = true|

Inteligencia(x) = alta, Famoso(Orientador(x)) = true) = 0.95

Page 7: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 7

Revisão de PRMProfessor

Student

Fame

Funding

Inteligence

SuccessAdvisor

Fame(ProfSmith)

Funding(ProfSmith)

Intelligence(Bloggs)

Success(Bloggs)

Intelligence(Jones)

Success(Jones)

Page 8: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 8

Jargões relacionais e OO Tradução (E-R para UML):

Databases Relational LogicTable ClassTuple ObjectStandard Field Descriptive AttributeForeign Key Field Reference Slot

Page 9: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 9

H

B A

Restrição (parte probabilística)

Conjunção de literaisCabeça da cláusula.

Cláusula:

Programa CLP(BN)

Page 10: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 10

C / B

Estrutura Ontológica Lógica

Restrição Epistemológica Probabilísticareg_grade (K, skG (K,D,I)) :-

reg_course (K,C), reg_student (K,S), course_diff (C,D), student_intell (S,I).

D I

skG (K,D,I)

Programa CLP(BN) notação Grade

Page 11: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 11

CPT de uma cláusula: equivalente a uma redes bayesianas, onde cada nó é uma variável aleatória

D I

skG (K,D,I)

Variável

Influência causal direta

Programa CLP(BN)

Page 12: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 12

Exemplo: CLP(BN) x PRM Dar uma de Gisele nos fontes

StudentIntelligence

Ranking

Course Rating

Difficulty

Professor

Popularity

Teaching-Ability

Registration

Grade

Satisfaction

M

M

M M

1

1

AVG

AVGStudent ranking depende da avg de grades, ou seja, todas grades

Course rating depende da média da satisfação dos estudantes no curso, ou seja, todas satisfações..

Page 13: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 13

Representar PRM com CLP(BN)

Como converter BD relacional em programa lógico?

2 opções: Um predicado para cada tabela relacional

usual, BD dedutivas Um predicado binário para cada campo não

chave CLP(BN)

Para cada campo do BD: regra lógica que representa os seus pais, e a distribuição de probabilidade condicional.

Page 14: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 14

Key Popularity Ability

SueDavid

hl

hl

Key Professor

Rating Difficulty

cs1cs2

SueDavid

hh

hl

Key Intelligence RankSamTerry

mh

mh

Key Course Student

Satis-faction

Grade

r1r2r3

cs1cs2cs1

SamSamTerry

hlh

acb

Professor Course

Student Registration

Expressar BD de PRM como fatos CLP(BN)

Page 15: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 15

tabelas binárias

Page 16: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 16

Expressar BD de PRM como fatos CLP(BN)prof_pop(sue,h). prof_abil(sue,h).prof_pop(david,l). prof_abil(david,l).

course_prof(cs1,sue). course_rate(cs1,h). course_diff(cs1,h). course_prof(cs2,david). course_rate(cs2,h). course_diff(cs2,l).

student_intell(sam,m). student_rank(sam,m). student_intell(terry,h). student_rank(terry,h).

reg_course(r1,cs1). reg_student(r1,sam). reg_sat(r1,h).reg_course(r2,cs2). reg_student(r2,sam). reg_sat(r2,l).reg_course(r3,cs1). reg_student(r3,terry). reg_sat(r3,h).

reg_grade(r1,a).reg_grade(r2,c).reg_grade(r3,b).

Page 17: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 17

Expressar CPT de PRM como regras CLP(BN)

O Corpo de cada regra CLP(BN) é construído em três estágios:

Estágio Relacional

Estágio de Agregação

Estágio CPT

Page 18: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 18

Estágio Relacional Regras com variáveis compartilhadas

representam de seqüência de chave estrangeira

Cada passo gera um termo do tipo: ri(X,Y), onde: X representa a chave primária de R Y representa o i-ésimo campo da relação R.

Page 19: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 19

Key Popularity Ability

SueDavid

hl

hl

Key Professor Rating Difficultycs1cs2

SueDavid

hh

hl

Key Intelligence RankSamTerry

mh

mh

Key Course Student

Satis-faction

Grade

r1r2r3

cs1cs2cs1

SamSamTerry

hlh

acb

Professor Course

StudentRegistration

Exemplo:

reg(Key, Student)reg(Key,Course)course(Key,Professor)professor(Key,Ability)

Page 20: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 20

Estágio de Agregação Este estágio é para variáveis que tem

múltiplas ligações. Podemos ter todas as ligações de Ability

através do predicado built-in findall. Por exemplo:course_rating (K, Rating) :-

findall (S, (reg_course(R,K) , (reg_sat(R,S)), Sats), avg(Sats,AvS).

Page 21: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 21

Convertendo PRM em CLP(BN)Estágio CPT

Page 22: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 22

Resultado dos 3 estágiosreg_grade(K, Grade) :

reg_course(K,C), reg_student(K,S), course_diff (C,D), student_intell (S,I). {Grade = grade(Reg) with p(

[a,b,c],[ 0.5,0.1,0.8,0.3 0.4,0.5,0.1,0.6, 0.1,0.4,0.1,0.1] , [D,I])}.

Neste caso D e I só podem assumir dois valores.

Page 23: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 23

Professor Clauses Botar probabilidade Fonte menos, juntar pedaços em menos transparenciasprof_pop (K,

skP(K,A)):- prof_abil (K,A).

skA (K)

skP (K,A)

A

prof_abil (K, skA(K)).

Page 24: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 24

Registration Clauses

D I

skG (K,D,I)

reg_grade (K, skG (K,D,I)):- reg_course (K,C), reg_student (K,S), course_diff (C,D), student_intell (S,I).

Page 25: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 25

Registration Clauses

reg_sat (K, sks(K,A,G)):- reg_course (K,C),

course_prof (C,P),prof_abil (P,A),reg_grade (K,G).

A G

Sks (K,A,G)

Page 26: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 26

Course Clausescourse_rating (K, skR (K,AvS)):-

findall (S, (reg_course(R,K),

(reg_sat (R,S)),Sats),

avg(Sats,AvS).

course_diff(K, skD(K)).

AvS

skR (K,AvS)

skD (K)

Page 27: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 27

Student Clausesstudent_intell (K, skI (K)).

student_rank(K,skSR(K,AvG)):-findall(G,

(reg_student(R,K), reg_grade (R,G)), Grades),

avg (Grades, AvG).

skI (K)

AvG

skSR (K,AvG)

Page 28: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 28

Consulta reg_grade(r2, Grade), ,,,,, Qual é distribuição de probabilidade dos

valores da nota de sam em cs2? Resulta numa rede de restrições. CLP(BN)

cria uma rede de restrições com grade(r2) dependendo de dif(course) e int(student). CLP(BN) responderá com a distribuição de probabilidade marginal de grade(r2).

Page 29: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 29

Avaliação (Evaluation) A maior aplicação de sistemas Bayesianos é

condicionar evidências, por exemplo: se um estudante está numa classe avançada podemos querer saber sua inteligência.

?- grade(r2, a), intelligence(bob, I). O usuário introduz evidências através da

classe r2. Na prática o sistema executa construindo um Rede de Bayes com duas variáveis. A rede é avaliada através da técnica de eliminação de variável (Seminário de Hugo).

Page 30: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 30

Avaliação (Evaluation) Uma consulta em CLP(BN) é uma consulta

Prolog, conjunção de literais positivos. Uma ou mais provas construídas através de

resolução, em cada passo de resolução termos de diferentes cláusulas devem ser unificados.

Sendo unificados os termos participam das restrições bayesianas.

Construir uma grande rede bayesiana consistindo de todos as pequenas redes de bayes que foram unificadas durante a fase de resolução.

Page 31: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 31

Em ppt com cores diferentes entre variáveis lógicas e aleatórias

Page 32: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 32

Avaliação(Evaluation):Variable Elimination em Prolog

AuthorInstitution

PaperRatingAuthorRating

JournalRating

PaperCited

PR JR AI AR

ARAIJRPR

ARAIJRPR

AIARAIJRAIPRJRPRPC

JRAIAIARJRAIPRPRPC

ARAIJRPRPCPC

)|P()P(),|P()P()|P(

)P()P()|P(),|P()|P(

),,,,P()P(

,,,

,,,

Page 33: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 33

Nesta apresentação apresentaremos apenas restrições de variáveis discretas, mas é possível representar CLP(BN) através de restrições contínuas. (Trabalho Atual).

Restrições Probabilísticas

• Distribuição Normal

• Distribuição Qui-Quadrado

• Distribuição T-Student

• Distribuição F

Page 34: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 34

Pergunta? Dado que temos um PRM, qual a utilidade

de usar a representação CLP(BN)?

Incorporação de probabilidade na lógica de primeira ordem.

CLP é uma extensão da programação lógica.

Ajudar a entender melhor o relacionamento entre PRMs e probabilistic logic.

CLP(BN) pode aprender usando ILP recursao

Page 35: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

CLP(BN)

em

Yap Prolog

Aula de Laboratório

Page 36: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 36

Yap é um sistema desenvolvimento cuja

linguagem é Prolog É multi-plataforma Código-fonte aberto e em desenvolvimento Contém diversas extensões prolog como

por exemplo: DEC-10 Prolog, Quintus Prolog e C-Prolog.

Autores: Vítor Santos Costa,Luís Damas,Rogério Reis e Ruben Azevedo (Universidade do Porto).

Site: http://www.ncc.up.pt/~vsc/Yap/

Yap

Page 37: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 37

Possui alguns pacotes:

CHR package CLP(Q,R) package Logtalk Object-Oriented system Pillow WEB library CLP(BN)

Quando compilar o Yap digitarconfigure --enable-coroutining --enable-depth-limit

Yap

Page 38: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 38

Yap Executar

Conectar-se via ssh a buique.cin.ufpe.br Mudar para o diretório onde estão os

arquivos .yap Executar Yap no prompt Unix.

yap Carregar Arquivo

File_name. Digitar [FILE_NAME_1, ...,FILE_NAME_N]. para

carregar N arquivos no ambiente Yap; ou consult(FILE_NAME).

ou reconsult(FILE_NAME).

Page 40: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 40

CLP(BN) no Yap Se tudo estiver certo ... Baixar e descompactar clpbn.tar.gz no

diretório $PATH/x/CLPBN Baixar e descompactar o exemplo

school.tar.gz e vai ficar com $PATH/x/school_example

faça cd para $PATH/x/school_example agora chame o yap > yap use_module('../CLPBN/clpbn'). ['school.yap'].

Page 41: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 41

CLP(BN) no YAPSe tudo der certo: professor_key(X).X = p0 ?yes ?- professor_ability(X,A).X = p0,A=[0.5,0.4,0.1]=>[h,m,l] ? ;X = p1,A=[0.8,0.15,0.05]=>[h,m,l] ? ;X = p2,A=[0.2,0.6,0.2]=>[h,m,l] ? ;X = p3,A=[0.6,0.3,0.1]=>[h,m,l] ? ;

Page 42: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 42

CLP(BN) no YAP ?- professor_popularity(X,A).X = p0,A=[0.53,0.3,0.17]=>[h,m,l] ? ;X = p1,A=[0.75,0.175,0.075]=>[h,m,l] ? ;X = p2,A=[0.3,0.4,0.3]=>[h,m,l] ? ;X = p3,A=[0.6,0.25,0.15]=>[h,m,l] ? ;no

Page 43: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 43

CLP(BN) no YAP ?- professor_popularity(X,A), professor_ability(X,h).X = p0,A=[0.9,0.1,0.0]=>[h,m,l] ? ;X = p1,A=[0.9,0.1,0.0]=>[h,m,l] ? ;X = p2,A=[0.9,0.1,0.0]=>[h,m,l] ? ;X = p3,A=[0.9,0.1,0.0]=>[h,m,l] ? ;

Page 44: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 44

CLP(BN) no YAP ?- professor_ability(X,A), professor_popularity(X,h).X = p0,A=[0.849056603773585,0.150943396226415,0.0]=>[h,m,

l] ? ;X = p1,A=[0.96,0.04,0.0]=>[h,m,l] ? ;X = p2,A=[0.6,0.4,0.0]=>[h,m,l] ? ;X = p3,A=[0.9,0.1,0.0]=>[h,m,l] ? ;no

Page 45: CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE.

11/08/2003 Rodrigo Cunha – Cin / UFPE 45

CLP(BN) no YAP ?- course_rating(c0,X).X=[0.595526873437529,0.352055580547983,0.05241754

60144877]=>[h,m,l] ?yes ?- course_rating(c0,X),course_professor(c0,P),

professor_ability(P,h).P = p0,X=[0.873,0.125,0.002]=>[h,m,l] ?yes