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
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, ..)
11/08/2003 Rodrigo Cunha – Cin / UFPE 4
Contexto Fig Jr.
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
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
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)
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
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)
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
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)
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..
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.
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)
11/08/2003 Rodrigo Cunha – Cin / UFPE 15
tabelas binárias
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).
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
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.
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)
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).
11/08/2003 Rodrigo Cunha – Cin / UFPE 21
Convertendo PRM em CLP(BN)Estágio CPT
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.
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)).
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).
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)
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)
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)
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).
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).
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.
11/08/2003 Rodrigo Cunha – Cin / UFPE 31
Em ppt com cores diferentes entre variáveis lógicas e aleatórias
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(
,,,
,,,
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
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
CLP(BN)
em
Yap Prolog
Aula de Laboratório
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
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
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).
11/08/2003 Rodrigo Cunha – Cin / UFPE 39
CLP(BN) no Yap
CLP(BN) é um pacote da mais nova versão do YAP.
Código-fonte aberto e em desenvolvimento
Autores: Vítor Santos Costa, David Page e James Cussens.
Site: www.cos.ufrj.br/~vitor/Yap/clpbn/
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'].
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] ? ;
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
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] ? ;
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
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
11/08/2003 Rodrigo Cunha – Cin / UFPE 46
Referência Bibliográfica Friedman, N., Getoor, L., Koller, D., and Pfeffer,
A. (1999) Learning Probabilistic Relational Models. In Relational Data Mining, Dzeroski and Lavrac, Editors, Springer-Verlag, 2001.
Costa, V., Page, D., Cussens, J. (2001) LCLP(BN): Constraint Logic Programming for Probabilistic Knowledgr.
http://dags.stanford.edu/PRMs/ http://www.cs.berkeley.edu/~pasula/fopl/ Muitos e-mails para Costa [email protected]
Top Related