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