1 / 46

CLP(BN): Constraint Logic Programming with Bayes Net Constraints

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.

tobit
Télécharger la présentation

CLP(BN): Constraint Logic Programming with Bayes Net Constraints

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CLP(BN): Constraint Logic Programming with Bayes Net Constraints Rodrigo Cunha Cin-UFPE

  2. 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 Rodrigo Cunha – Cin / UFPE

  3. 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, ..) Rodrigo Cunha – Cin / UFPE

  4. Contexto Lógica 1ª Ordem Negação Explícita e Disjunção Prolog CLP(BN) Símbolo de Funções Ontológico BD Dedutivo Recursão PRM BD Relacional Variáveis Universalmente Quantificadas Redes Bayesianas Lógica Proposicional [0..1] {0,1} {0 ,1/2 ,1} Epistemológico Rodrigo Cunha – Cin / UFPE

  5. 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 Rodrigo Cunha – Cin / UFPE

  6. 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 Rodrigo Cunha – Cin / UFPE

  7. Revisão de PRM Professor Fame(ProfSmith) Fame Funding(ProfSmith) Funding Intelligence(Jones) Intelligence(Bloggs) Student Inteligence Success(Jones) Success(Bloggs) Success Advisor Rodrigo Cunha – Cin / UFPE

  8. Jargões relacionais e OO • Tradução (E-R para UML): Rodrigo Cunha – Cin / UFPE

  9. Programa CLP(BN) Cláusula: A H B Restrição (parte probabilística) Cabeça da cláusula. Conjunção de literais Rodrigo Cunha – Cin / UFPE

  10. D I Grade Programa CLP(BN) C / B Restrição Epistemológica Probabilística 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). Rodrigo Cunha – Cin / UFPE

  11. D I Grade Programa 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 Rodrigo Cunha – Cin / UFPE

  12. Student Intelligence Ranking Course Rating Difficulty Exemplo: CLP(BN) x PRM M Professor Teaching-Ability Popularity M 1 1 M M Registration Satisfaction AVG AVG Grade Rodrigo Cunha – Cin / UFPE

  13. Expressar BD de PRM como fatos CLP(BN) Course Professor Registration Student Rodrigo Cunha – Cin / UFPE

  14. Representar 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. Rodrigo Cunha – Cin / UFPE

  15. Expressar BD de PRM como fatos CLP(BN) Professor Course Student Registration Rodrigo Cunha – Cin / UFPE

  16. Expressar 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_diff(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(r1,h). reg_course(r2,cs2). reg_student(r2,sam). reg_sat(r2,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). Rodrigo Cunha – Cin / UFPE

  17. 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 Rodrigo Cunha – Cin / UFPE

  18. 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. Rodrigo Cunha – Cin / UFPE

  19. Course Rating Difficulty Exemplo: CLP(BN) x PRM M Professor Teaching-Ability Popularity Student M 1 Intelligence 1 Ranking M M Registration Satisfaction AVG reg(Key, Student) reg(Key,Course) course(Key,Professor) AVG Grade Rodrigo Cunha – Cin / UFPE

  20. Exemplo: Professor Course Student Registration reg(Key, Student) reg(Key,Course) course(Key,Professor) Rodrigo Cunha – Cin / UFPE

  21. 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). Rodrigo Cunha – Cin / UFPE

  22. Estágio CPT Rodrigo Cunha – Cin / UFPE

  23. 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])}. Neste caso D e I só podem assumir dois valores. Rodrigo Cunha – Cin / UFPE

  24. prof_pop (K, P):- prof_abil (K,A), P = { pop(K) with p([h,m,l] , ( [0.9, 0.2, 0.1, 0.6, 0.0, 0.2, [A]) A A P Professor Clauses prof_abil (K, A) :- {A = abil(K) with p( [h,l],[ 0.7,0.3] }. Rodrigo Cunha – Cin / UFPE

  25. Student Intelligence Ranking Course Rating Difficulty Exemplo: CLP(BN) x PRM M Professor Teaching-Ability Popularity M 1 1 M M Registration Satisfaction AVG AVG Grade Rodrigo Cunha – Cin / UFPE

  26. D I Grade 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 0.4, 0.5, 0.1, 0.6, 0.1, 0.4, 0.1, 0.1] , [D,I])}. Rodrigo Cunha – Cin / UFPE

  27. AvS Rating 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)) Rodrigo Cunha – Cin / UFPE

  28. 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 • 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. Rodrigo Cunha – Cin / UFPE

  29. reg_grade (K, Grade):- reg_course (K,C), reg_student (K,S), course_diff (C,D), student_intell (S,I). D I A Grade’ Grade reg_sat (K, S):- reg_course (K,C), course_prof (C,P), prof_abil (P,A), reg_grade (K,Grade’). S 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). D I Grade A S

  30. Avaliação(Evaluation):Variable Elimination em Prolog AuthorInstitution JournalRating AuthorRating PaperRating PaperCited Rodrigo Cunha – Cin / UFPE

  31. 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 ] ? Rodrigo Cunha – Cin / UFPE

  32. 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 ] ? ; Rodrigo Cunha – Cin / UFPE

  33. 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 Rodrigo Cunha – Cin / UFPE

  34. 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. Rodrigo Cunha – Cin / UFPE

  35. CLP(BN)emYap Prolog Aula de Laboratório

  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/ Rodrigo Cunha – Cin / UFPE

  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-limit Rodrigo Cunha – Cin / UFPE

  38. 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). Rodrigo Cunha – Cin / UFPE

  39. 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/ Rodrigo Cunha – Cin / UFPE

  40. 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'). • ['school.yap']. Rodrigo Cunha – Cin / UFPE

  41. 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] ? ; Rodrigo Cunha – Cin / UFPE

  42. 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 Rodrigo Cunha – Cin / UFPE

  43. 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] ? ; Rodrigo Cunha – Cin / UFPE

  44. 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 Rodrigo Cunha – Cin / UFPE

  45. CLP(BN) no YAP ?- course_rating(c0,X). X=[0.595526873437529,0.352055580547983,0.0524175460144877]=>[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 Rodrigo Cunha – Cin / UFPE

  46. 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 vitor@cos.ufrj.br Rodrigo Cunha – Cin / UFPE

More Related