CLP(BN): Constraint Logic
Programming with Bayes Net
Constraints
Rodrigo Cunha
Cin-UFPE
Roteiro
Introdução
 Contexto
 BN (Bayesian Networks)
 PRM (Probabilistic Relational Models)
 CLP(BN)
 Exemplo de CLP(BN)
 Avaliação (Evaluation)
 Aula Prática
 Referências Bibliográficas

11/08/2003
Rodrigo Cunha – Cin / UFPE
2
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 diferente de 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
3
Contexto
Lógica 1ª
Ordem
CLP(BN)
Ontológico
Prolog
Negação
Explícita e
Disjunção
Símbolo de
Funções
BD
Dedutivo
Recursão
PRM
BD Relacional
{0,1}
Lógica
Proposicional
Redes
Bayesianas
{0 ,1/2 ,1}
[0..1]
Variáveis
Universalmente
Quantificadas
Epistemológico
11/08/2003
Rodrigo Cunha – Cin / UFPE
4
CLP(BN)

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
5
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
6
Revisão de PRM
Professor
Fame(ProfSmith)
Fame
Funding
Student
Funding(ProfSmith)
Intelligence(Bloggs)
Intelligence(Jones)
Success(Bloggs)
Success(Jones)
Inteligence
Success
Advisor
11/08/2003
Rodrigo Cunha – Cin / UFPE
7
Jargões relacionais e OO

Tradução (E-R para UML):
Databases
11/08/2003
Relational Logic
Table
Class
Tuple
Object
Standard Field
Descriptive Attribute
Foreign Key Field
Reference Slot
Rodrigo Cunha – Cin / UFPE
8
Programa CLP(BN)
Cláusula:
H
A
B
Restrição (parte probabilística)
Cabeça da cláusula.
11/08/2003
Conjunção de literais
Rodrigo Cunha – Cin / UFPE
9
Programa CLP(BN)
C/B
Estrutura
Ontológica Lógica
reg_grade (K, Grade) :reg_course (K,C),
reg_student (K,S),
course_diff (C,D),
student_intell (S,I).
11/08/2003
Restrição
Epistemológica
Probabilística
D
Rodrigo Cunha – Cin / UFPE
I
Grade
10
Programa CLP(BN)
CPT de uma cláusula: equivalente a uma redes
bayesianas, onde cada nó é uma variável aleatória
D
Influência
causal direta
11/08/2003
I
Variável
Grade
Rodrigo Cunha – Cin / UFPE
11
Exemplo: CLP(BN) x PRM
M
Professor
Teaching-Ability
Popularity
Student
M
1
Course
Intelligence
1
Rating
M
Registration
Ranking
M
Difficulty
AVG
Satisfaction
AVG
Grade
11/08/2003
Rodrigo Cunha – Cin / UFPE
12
Expressar BD de PRM como fatos
CLP(BN)
Course
Professor
Key
Sue
David
Popularity Ability
h
l
h
l
Sam
Terry
11/08/2003
Professo
r
cs1
cs2
Sue
David
Rating Difficult
y
h
h
h
l
Registration
Student
Key
Key
Intelligenc
e
Rank
m
h
m
h
Key
Course
Studen
t
Satisfaction
Grade
r1
r2
r3
cs1
cs2
cs1
Sam
Sam
Terry
h
l
h
a
c
b
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


Um predicado binário para cada campo não
chave


usual, BD dedutivas
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
Expressar BD de PRM como fatos
CLP(BN)
Professor
Key
Sue
Davi
d
Key
Popularit
y
h
l
Key
Sue
Davi
d
Student
Intelligenc
e
Sam
Terry
Ability
Key
m
h
h
l
Key
Professo
r
cs1
cs2
Sue
David
Ran
k
Key
Cours
e
Ke
y
Studen
t
Ke
y
Satisfaction
Key
Grad
e
r1
r2
r3
cs1
cs2
cs1
r1
r2
r3
Sam
Sam
Terry
r1
r2
r3
h
l
h
r1
r2
r3
a
c
b
11/08/2003
Rodrigo Cunha – Cin / UFPE
Ratin
g
Course cs1
cs2
Key Difficult
y
cs1
cs2
Sam
m
Terr
h
yRegistration
Key
h
h
h
l
15
Expressar BD de PRM como fatos
CLP(BN)
prof_pop(sue,h).
prof_pop(david,l).
prof_abil(sue,h).
prof_abil(david,l).
course_prof(cs1,sue).
course_prof(cs2,david).
course_rate(cs1,h).
course_rate(cs2,h).
student_intell(sam,m).
student_intell(terry,h).
student_rank(sam,m).
student_rank(terry,h).
reg_course(r1,cs1).
reg_course(r2,cs2).
reg_course(r3,cs1).
reg_student(r1,sam).
reg_student(r2,sam).
reg_student(r3,terry).
course_diff(cs1,h).
course_diff(cs2,l).
reg_sat(r1,h).
reg_sat(r2,l).
reg_sat(r3,h).
reg_grade(r1,a).
reg_grade(r2,c).
reg_grade(r3,b).
11/08/2003
Rodrigo Cunha – Cin / UFPE
16
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
17
Estágio Relacional


Regras com variáveis compartilhadas
representam uma 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
18
Exemplo: CLP(BN) x PRM
M
Professor
Teaching-Ability
Popularity
Student
M
Course
1
Rating
Intelligence
1
M
Difficulty
AVG
reg(Key, Student)
reg(Key,Course)
course(Key,Professor)
11/08/2003
Registration
Ranking
M
Satisfaction
AVG
Grade
Rodrigo Cunha – Cin / UFPE
19
Exemplo:
Professor
Key
Course
Popularity
Ability
h
l
h
l
Sue
David
Key
Sam
Terry
Student
Intelligence
Rank
l
h
m
h
reg(Key, Student)
reg(Key,Course)
course(Key,Professor)
11/08/2003
Key
Professor
cs1
cs2
Sue
David
Rating
Difficulty
h
h
h
l
Registration
Key
Course
Student
r1
r2
r3
cs1
cs2
cs1
Sam
Sam
Terry
Rodrigo Cunha – Cin / UFPE
Satisfaction
Grade
h
l
h
a
c
b
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 Rating
através do predicado built-in findall.
Por exemplo:
course_rating (K, Rating) :findall (Sats, (reg_course(R,K) , (reg_sat(R,Stats))),
avg(Sats, AvS).
11/08/2003
Rodrigo Cunha – Cin / UFPE
21
Estágio CPT
11/08/2003
Rodrigo Cunha – Cin / UFPE
22
Estágio CPT
reg_grade(K, Grade) :
reg_course(K,C), reg_student(K,S),
course_diff (C,D), student_intell
(S,I).
{Grade = grade(K) 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])}.
11/08/2003
Rodrigo Cunha – Cin / UFPE
23
Neste caso D e I só podem assumir dois valores.
Professor Clauses
prof_abil (K, A) :{A = abil(K) with p( [h,l],[ 0.7,0.3]
}.
A
prof_pop (K, P):prof_abil (K,A),
P = { pop(K) with
A
p([h,m,l] , ( [0.9, 0.2,
0.1, 0.6,
0.0, 0.2, [A])
P
11/08/2003
Rodrigo Cunha – Cin / UFPE
24
Exemplo: CLP(BN) x PRM
M
Professor
Teaching-Ability
Popularity
Student
M
1
Course
Intelligence
1
Rating
M
Registration
Ranking
M
Difficulty
AVG
Satisfaction
AVG
Grade
11/08/2003
Rodrigo Cunha – Cin / UFPE
25
Registration Clauses
reg_grade(K, Grade) :
reg_course(K,C), reg_student(K,S),
course_diff (C,D), student_intell
(S,I),
{Grade = grade(K) with p(
[a,b,c],[ 0.5, 0.1, 0.8, 0.3
D
I
0.4, 0.5, 0.1,
0.6,
0.1, 0.4, 0.1, 0.1] ,
Grade
[D,I])}.
11/08/2003
Rodrigo Cunha – Cin / UFPE
26
Course Clauses
course_rating (K, Rating) :findall (Sats, (reg_course(R,K) , (reg_sat(R,S))),
Rating = { rating(K) with p([h,l] , ( [0.9, 0.2,
0.1, 0.8] ,
avg(Sats,
AvS
AvS))
Rating
11/08/2003
Rodrigo Cunha – Cin / UFPE
27
Avaliação (Evaluation)

Uma consulta em CLP(BN)


Uma ou mais provas construídas através de
resolução


uma consulta Prolog, conjunção de literais
positivos.
cada passo de resolução termos de diferentes
cláusulas devem ser unificados.
Construir uma grande rede bayesiana

todos as pequenas redes de bayes que foram
unificadas durante a fase de resolução.
11/08/2003
Rodrigo Cunha – Cin / UFPE
28
reg_grade (K, Grade):reg_course (K,C),
reg_student (K,S),
course_diff (C,D),
student_intell (S,I).
D
Grade
reg_sat (K, S):reg_course (K,C),
course_prof (C,P),
prof_abil (P,A),
reg_grade (K,Grade’).
reg_sat (K, S):reg_course (K,C),
course_prof (C,P),
prof_abil (P,A),
reg_course (K,C),
reg_student (K,S),
course_diff (C,D),
student_intell (S,I).
I
Grade’
A
S
D
I
Grade
A
S
Avaliação(Evaluation):
Variable Elimination em Prolog
AuthorInstitution
AuthorRating
JournalRating
PaperRating
PaperCited
 P(PC, PR, JR, AI , AR)
P(PC) 
PR, JR, AI , AR
 P(PC | PR) P(PR | AI , JR) P(AR | AI ) P(AI ) P(JR)

PR, JR, AI , AR
  P(PC | PR) P(JR) P(PR | AI , JR) P(AI ) P(AR | AI )
PR
11/08/2003
JR
AI
Rodrigo Cunha – Cin / UFPE
AR
30
Consultas
?- professor_ability(X,A).
X = sue,
A = [ 0.7 , 0.3 ] => [ h , l ] ? ;
X = david,
A = [ 0.8 , 0.2 ] => [ h , l ] ? ;
?- professor_popularity (X , P ) , professor_ability ( X , h ).
X = sue,
P = [ 0.9 , 0.1 , 0.0] => [ h , m , l ] ?
?- professor_popularity (david , P ) , professor_ability ( david ,
h ).
P = [ 0.9 , 0.1 , 0.0] => [ h , m , l ] ?
11/08/2003
Rodrigo Cunha – Cin / UFPE
31
Consultas
?- course_rating ( cs1 , R ).
R = [ 0.6 , 0.4 ] => [ h , l ] ?
?- course_rating ( cs1 , R ), course_professor ( cs1 , P ),
professor_ability (P , h ).
P = sue,
R = [ 0.7 , 0.3] => [ h , l ] ? ;
11/08/2003
Rodrigo Cunha – Cin / UFPE
32
Restrições
Probabilísticas
Apenas restrições de variáveis discretas,



CLP(BN) através de restrições
contínuas.(Trabalho Atual).
Distribuições de Probabilidade Contínuas:
 Distribuição Normal
 Distribuição Qui-Quadrado
 Distribuição T-Student
 Distribuição F
11/08/2003
Rodrigo Cunha – Cin / UFPE
33
Pergunta?
Dado que temos um PRM, qual a utilidade de
usar a representação CLP(BN)?





Incorporar probabilidade na lógica de
primeira ordem.
Ajudar a entender melhor o
relacionamento entre PRMs e probabilistic
logic.
CLP(BN) pode aprender usando ILP
Recursão
Símbolo de Funções.
11/08/2003
Rodrigo Cunha – Cin / UFPE
34
CLP(BN)
em
Yap Prolog
Aula de Laboratório
Yap
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 CProlog.
 Autores: Vítor Santos Costa,Luís
Damas,Rogério Reis e Ruben Azevedo
(Universidade do Porto).
11/08/2003
Rodrigo Cunha – Cin / UFPE
36

Site: http://www.ncc.up.pt/~vsc/Yap/

Yap
Possui alguns pacotes:
CHR package
 CLP(Q,R) package
 Logtalk Object-Oriented system
 Pillow WEB library
 CLP(BN)

Quando compilar o Yap digitar
configure --enable-coroutining --enable-depth-limit
11/08/2003
Rodrigo Cunha – Cin / UFPE
37
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
38
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
39
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').
11/08/2003
Rodrigo Cunha – Cin / UFPE
 ['school.yap'].

40
CLP(BN) no Yap
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
41
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
42
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
43
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
44
CLP(BN) no YAP
?- course_rating(c0,X).
X=[0.595526873437529,0.352055580547983,0.052417546
0144877]=>[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
45
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] 46
11/08/2003
Rodrigo Cunha
– Cin / UFPE

Download

CLPBN