460 likes | 587 Vues
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.
E N D
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 Rodrigo Cunha – Cin / UFPE
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
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
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
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
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
Jargões relacionais e OO • Tradução (E-R para UML): Rodrigo Cunha – Cin / UFPE
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
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
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
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
Expressar BD de PRM como fatos CLP(BN) Course Professor Registration Student Rodrigo Cunha – Cin / UFPE
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
Expressar BD de PRM como fatos CLP(BN) Professor Course Student Registration Rodrigo Cunha – Cin / UFPE
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
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
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
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
Exemplo: Professor Course Student Registration reg(Key, Student) reg(Key,Course) course(Key,Professor) Rodrigo Cunha – Cin / UFPE
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
Estágio CPT Rodrigo Cunha – Cin / UFPE
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
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
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
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
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
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
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
Avaliação(Evaluation):Variable Elimination em Prolog AuthorInstitution JournalRating AuthorRating PaperRating PaperCited Rodrigo Cunha – Cin / UFPE
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
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
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
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
CLP(BN)emYap 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 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
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
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
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
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
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
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
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
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
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
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