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