Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

riso.distributions.computes_lambda_message
Class AbstractConditionalDistribution_AbstractDistribution_AbstractDistribution  view AbstractConditionalDistribution_AbstractDistribution_AbstractDistribution download AbstractConditionalDistribution_AbstractDistribution_AbstractDistribution.java

java.lang.Object
  extended byriso.distributions.computes_lambda_message.AbstractConditionalDistribution_AbstractDistribution_AbstractDistribution
All Implemented Interfaces:
riso.distributions.LambdaMessageHelper, java.io.Serializable

public class AbstractConditionalDistribution_AbstractDistribution_AbstractDistribution
extends java.lang.Object
implements riso.distributions.LambdaMessageHelper

This class implements a lambda message helper for a variable x with one or more parents u1,...,un. Except for the parent to which we are sending the lambda message, each parent sends a pi message to x. Let us suppose that we are sending the lambda message to parent uk. The lambda message is defined as

   p( e \ e_u1(above) | uk )
     = \int p( x, e \ e_uk(above) | uk ) dx
     = \int p( x, e_x(below) + e_x(above) \ e_uk(above) | uk ) dx
     = \int p( e_x(below) | x ) p( x | e_x(above) \ e_uk(above), uk ) p( e_x(above) \ e_uk(above) | uk ) dx
     = p( e_x(above) \ e_uk(above) ) \int p( e_x(below) | x )
         \int ... \int p( x | u1,...,un ) p( u1,...,un \ uk |  e_x(above) \ e_uk(above), uk ) 
         du1 ... du_{k-1} du_{k+1} ... du_n dx
 
The factor p( e_x(above) \ e_uk(above) ) doesn't depend on uk so we can ignore it (a lambda message need not integrate to anything in particular). Now note that
    p( u1,...,un \ uk | e_x(above) \ e_uk(above), uk ) = \prod_{j \neq k} p( uj | e_uj(above) )
 
so finally we have
   p( e \ e_u1(above) | uk )
     = \int p( e_x(below) | x ) \int ... \int p( x | u1,...,un )
         \prod_{j \neq k} p( uj | e_uj(above) ) du1 ... du_{k-1} du_{k+1} ... du_n dx
 
In this last equation the lambda function of x appears, p( e_x(below) | x ), and the pi messages coming to x from parents other than uk, p( uj | e_uj(above) ), j \neq k. The conditional distribution of x given all its parents, p( x | u1,...,un ), links the other pieces together.

Note that this integral is a function of the parent uk. The message which is sent up the parent is NOT a Gaussian mixture or other approximation; the message is a direct representation of the integral. The evaluation of the integral is put off until the posterior or lambda of uk needs to be computed.


Constructor Summary
AbstractConditionalDistribution_AbstractDistribution_AbstractDistribution()
           
 
Method Summary
 riso.distributions.Distribution compute_lambda_message(riso.distributions.ConditionalDistribution pxuuu, riso.distributions.Distribution lambda, riso.distributions.Distribution[] pi_messages)
          Compute the likelihood message from a variable to a parent.
static riso.general.SeqTriple[] description()
          Returns a description of the sequences of distributions accepted by this helper -- namely one AbstractConditionalDistribution followed by one AbstractDistribution, followed by any number of AbstractDistribution.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractConditionalDistribution_AbstractDistribution_AbstractDistribution

public AbstractConditionalDistribution_AbstractDistribution_AbstractDistribution()
Method Detail

description

public static riso.general.SeqTriple[] description()
Returns a description of the sequences of distributions accepted by this helper -- namely one AbstractConditionalDistribution followed by one AbstractDistribution, followed by any number of AbstractDistribution.


compute_lambda_message

public riso.distributions.Distribution compute_lambda_message(riso.distributions.ConditionalDistribution pxuuu,
                                                              riso.distributions.Distribution lambda,
                                                              riso.distributions.Distribution[] pi_messages)
                                                       throws java.lang.Exception
Description copied from interface: riso.distributions.LambdaMessageHelper
Compute the likelihood message from a variable to a parent. This is defined as p(``e below''|x) ... NEEDS WORK !!!

Specified by:
compute_lambda_message in interface riso.distributions.LambdaMessageHelper