CLP(BN): Constraint Logic
Programming with Bayes Net
Constraints
Rodrigo Cunha
Cin-UFPE
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
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 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,
11/08/2003
Rodrigo Cunha – Cin / UFPE
simulação estocástica,
..)

3
Contexto

Fig Jr.
11/08/2003
Rodrigo Cunha – Cin / UFPE
4
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
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)
notação GradeC / B
Estrutura
Ontológica Lógica
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
Restrição
Epistemológica
Probabilística
D
Rodrigo Cunha – Cin / UFPE
I
skG (K,D,I)
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
skG (K,D,I)
Rodrigo Cunha – Cin / UFPE
11
Exemplo: CLP(BN) x PRM
Dar uma de Gisele nos fontes
M
Professor
Teaching-Ability
Popularity
M
1
Course
Intelligence
1
Rating
M
Difficulty
Student
AVG
Course rating depende da
média da satisfação dos
estudantes no curso, ou
11/08/2003
seja,
todas satisfações..
Registration
Satisfaction
Grade
Rodrigo Cunha – Cin / UFPE
M
Ranking
AVGStudent ranking
depende da avg de
grades, ou seja,
todas grades12
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
13
Expressar BD de PRM como
fatos CLP(BN)
Course
Professor
Key
Popularity
Sue
David
Ability
h
l
h
l
Sam
Terry
11/08/2003
Professor
cs1
cs2
Sue
David
Rating
Difficulty
h
h
h
l
Registration
Student
Key
Key
Intelligence
Rank
m
h
m
h
Key
Course
Student
r1
r2
r3
cs1
cs2
cs1
Sam
Sam
Terry
Rodrigo Cunha – Cin / UFPE
Satisfaction
Grade
h
l
h
a
c
b
14
tabelas binárias
11/08/2003
Rodrigo Cunha – Cin / UFPE
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 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
18
Exemplo:
Professor
Key
Course
Popularity
Ability
h
l
h
l
Sue
David
Key
Sam
Terry
Student
Intelligence
Rank
m
h
m
h
reg(Key, Student)
reg(Key,Course)
course(Key,Professor)
professor(Key,Ability)
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
19
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
20
Convertendo PRM em CLP(BN)
Estágio CPT
11/08/2003
Rodrigo Cunha – Cin / UFPE
21
Resultado dos 3 estágios
reg_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])}.
11/08/2003
Rodrigo Cunha – Cin / UFPE
22
Neste caso D e I só podem assumir dois valores.
Professor Clauses Botar
probabilidade
skA (K)
prof_abil (K, sk (K)).
Fonte menos, juntar pedaços
em menos transparencias
A
prof_pop (K,
skP(K,A)):prof_abil (K,A).
11/08/2003
A
skP (K,A)
Rodrigo Cunha – Cin / UFPE
23
Registration Clauses
reg_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)
11/08/2003
Rodrigo Cunha – Cin / UFPE
24
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).
11/08/2003
Rodrigo Cunha – Cin / UFPE
A
G
Sks (K,A,G)
25
Course Clauses
course_rating (K, skR (K,AvS)):findall (S,
(reg_course(R,K),
(reg_sat (R,S)),
Sats),
avg(Sats,AvS).
course_diff(K, skD(K)).
11/08/2003
AvS
skR (K,AvS)
skD (K)
Rodrigo Cunha – Cin / UFPE
26
Student Clauses
student_intell (K, skI (K)).
skI (K)
student_rank(K,skSR(K,AvG)):findall(G,
(reg_student(R,K),
reg_grade (R,G)),
Grades),
avg (Grades, AvG).
11/08/2003
Rodrigo Cunha – Cin / UFPE
AvG
skSR (K,AvG)
27
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
28
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
29
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 foramRodrigo
unificadas
durante a fase de30
11/08/2003
Cunha – Cin / UFPE
resolução.

Em ppt com cores diferentes
entre variáveis lógicas e
aleatórias
11/08/2003
Rodrigo Cunha – Cin / UFPE
31
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
32
Restrições
Probabilísticas
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).
• 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)?
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) podeRodrigo
aprender
usando ILP
11/08/2003
Cunha – Cin / UFPE
34

recursao

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
Se 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
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

CLP(BN)