Title: CLP(BN): Constraint Logic Programming with Bayes Net Constraints
1CLP(BN) Constraint Logic Programming with Bayes
Net Constraints
Rodrigo Cunha Cin-UFPE
2Roteiro
- 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
3O 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, ..)
4Contexto
5CLP(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
6Revisã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 -gt 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
7Revisão de PRM
Professor
Fame(ProfSmith)
Fame
Funding(ProfSmith)
Funding
Intelligence(Jones)
Intelligence(Bloggs)
Student
Inteligence
Success(Jones)
Success(Bloggs)
Success
Advisor
8Jargões relacionais e OO
Databases Relational Logic
Table Class
Tuple Object
Standard Field Descriptive Attribute
Foreign Key Field Reference Slot
9Programa CLP(BN)
Cláusula
A
H
B
Restrição (parte probabilística)
Cabeça da cláusula.
Conjunção de literais
10Programa CLP(BN) notação Grade
reg_grade (K, skG (K,D,I)) - reg_course
(K,C), reg_student (K,S), course_diff
(C,D), student_intell (S,I).
11Programa CLP(BN)
CPT de uma cláusula equivalente a uma redes
bayesianas, onde cada nó é uma variável aleatória
Variável
Influência causal direta
12Exemplo CLP(BN) x PRM Dar uma de Gisele nos
fontes
M
Professor
Teaching-Ability
Popularity
M
1
1
M
M
Registration
AVG
Satisfaction
Student ranking depende da avg de grades, ou
seja, todas grades
AVG
Course rating depende da média da satisfação dos
estudantes no curso, ou seja, todas satisfações..
Grade
13Representar 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.
14Expressar BD de PRM como fatos CLP(BN)
Course
Professor
Key Professor Rating Difficulty
cs1 cs2 Sue David h h h l
Key Popularity Ability
Sue David h l h l
Registration
Student
Key Course Student Satis-faction Grade
r1 r2 r3 cs1 cs2 cs1 Sam Sam Terry h l h a c b
Key Intelligence Rank
Sam Terry m h m h
15tabelas binárias
16Expressar 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_d
iff(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(r
1,h). - reg_course(r2,cs2). reg_student(r2,sam). reg_sat(r
2,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).
17Expressar 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
18Está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.
19Exemplo
Professor
Course
Key Popularity Ability
Sue David h l h l
Key Professor Rating Difficulty
cs1 cs2 Sue David h h h l
Student
Registration
Key Intelligence Rank
Sam Terry m h m h
Key Course Student Satis-faction Grade
r1 r2 r3 cs1 cs2 cs1 Sam Sam Terry h l h a c b
reg(Key, Student) reg(Key,Course) course(Key,Profe
ssor) professor(Key,Ability)
20Está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).
21Convertendo PRM em CLP(BN)Estágio CPT
22Resultado 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). - Neste caso D e I só podem assumir dois valores.
23Professor Clauses Botar probabilidade Fonte
menos, juntar pedaços em menos transparencias
prof_abil (K, skA(K)).
- prof_pop (K, skP(K,A))-
- prof_abil (K,A).
24Registration Clauses
reg_grade (K, skG (K,D,I))- reg_course
(K,C), reg_student (K,S), course_diff
(C,D), student_intell (S,I).
25Registration Clauses
- reg_sat (K, sks(K,A,G))-
- reg_course (K,C),
- course_prof (C,P),
- prof_abil (P,A),
- reg_grade (K,G).
26Course 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)).
27Student Clauses
- student_intell (K, skI (K)).
- student_rank(K,skSR(K,AvG))-
- findall(G,
- (reg_student(R,K),
- reg_grade (R,G)),
- Grades),
- avg (Grades, AvG).
28Consulta
- 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).
29Avaliaçã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).
30Avaliaçã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.
31Em ppt com cores diferentes entre variáveis
lógicas e aleatórias
32Avaliação(Evaluation)Variable Elimination em
Prolog
AuthorInstitution
JournalRating
PaperRating
AuthorRating
PaperCited
33Restriçõ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
34Pergunta?
- 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
35CLP(BN)emYap Prolog
36 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
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/
37 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-limi
t
38Yap
- 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).
39CLP(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/
40CLP(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
- gt yap
- use_module('../CLPBN/clpbn').
- 'school.yap'.
41CLP(BN) no YAP
- Se tudo der certo ?
- professor_key(X).
- X p0 ?
- yes
- ?- professor_ability(X,A).
- X p0,
- A0.5,0.4,0.1gth,m,l ?
- X p1,
- A0.8,0.15,0.05gth,m,l ?
- X p2,
- A0.2,0.6,0.2gth,m,l ?
- X p3,
- A0.6,0.3,0.1gth,m,l ?
42CLP(BN) no YAP
- ?- professor_popularity(X,A).
- X p0,
- A0.53,0.3,0.17gth,m,l ?
- X p1,
- A0.75,0.175,0.075gth,m,l ?
- X p2,
- A0.3,0.4,0.3gth,m,l ?
- X p3,
- A0.6,0.25,0.15gth,m,l ?
- no
43CLP(BN) no YAP
- ?- professor_popularity(X,A), professor_ability(X
,h). - X p0,
- A0.9,0.1,0.0gth,m,l ?
- X p1,
- A0.9,0.1,0.0gth,m,l ?
- X p2,
- A0.9,0.1,0.0gth,m,l ?
- X p3,
- A0.9,0.1,0.0gth,m,l ?
44CLP(BN) no YAP
- ?- professor_ability(X,A), professor_popularity(X
,h). - X p0,
- A0.849056603773585,0.150943396226415,0.0gth,m,
l ? - X p1,
- A0.96,0.04,0.0gth,m,l ?
- X p2,
- A0.6,0.4,0.0gth,m,l ?
- X p3,
- A0.9,0.1,0.0gth,m,l ?
- no
45CLP(BN) no YAP
- ?- course_rating(c0,X).
- X0.595526873437529,0.352055580547983,0.052417546
0144877gth,m,l ? - yes
- ?- course_rating(c0,X),course_professor(c0,P),
professor_ability(P,h). - P p0,
- X0.873,0.125,0.002gth,m,l ?
- yes
46Referê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 vitor_at_cos.ufrj.br ?