libDAI
Classes | Public Attributes | Private Member Functions | Private Attributes
dai::HAK Class Reference

Approximate inference algorithm: implementation of single-loop ("Generalized Belief Propagation") and double-loop algorithms by Heskes, Albers and Kappen [HAK03]. More...

#include <dai/hak.h>

Inheritance diagram for dai::HAK:
dai::DAIAlg< GRM > dai::InfAlg

List of all members.

Classes

struct  Properties
 Parameters for HAK. More...

Public Member Functions

Constructors/destructors
 HAK ()
 Default constructor.
 HAK (const FactorGraph &fg, const PropertySet &opts)
 Construct from FactorGraph fg and PropertySet opts.
 HAK (const RegionGraph &rg, const PropertySet &opts)
 Construct from RegionGraph rg and PropertySet opts.
General InfAlg interface
virtual HAKclone () const
 Returns a pointer to a new, cloned copy of *this (i.e., virtual copy constructor)
virtual HAKconstruct (const FactorGraph &fg, const PropertySet &opts) const
 Returns a pointer to a newly constructed inference algorithm.
virtual std::string name () const
 Returns the name of the algorithm.
virtual Factor belief (const VarSet &vs) const
 Returns the (approximate) marginal probability distribution of a set of variables.
virtual std::vector< Factorbeliefs () const
 Returns all beliefs (approximate marginal probability distributions) calculated by the algorithm.
virtual Real logZ () const
 Returns the logarithm of the (approximated) partition sum (normalizing constant of the factor graph).
virtual void init ()
 Initializes all data structures of the approximate inference algorithm.
virtual void init (const VarSet &vs)
 Initializes all data structures corresponding to some set of variables.
virtual Real run ()
 Runs the approximate inference algorithm.
virtual Real maxDiff () const
 Returns maximum difference between single variable beliefs in the last iteration.
virtual size_t Iterations () const
 Returns number of iterations done (one iteration passes over the complete factorgraph).
virtual void setMaxIter (size_t maxiter)
 Sets maximum number of iterations (one iteration passes over the complete factorgraph).
virtual void setProperties (const PropertySet &opts)
 Set parameters of this inference algorithm.
virtual PropertySet getProperties () const
 Returns parameters of this inference algorithm converted into a PropertySet.
virtual std::string printProperties () const
 Returns parameters of this inference algorithm formatted as a string in the format "[key1=val1,key2=val2,...,keyn=valn]".
Additional interface specific for HAK
Factormuab (size_t alpha, size_t _beta)
 Returns reference to message from outer region alpha to its _beta 'th neighboring inner region.
Factormuba (size_t alpha, size_t _beta)
 Returns reference to message the _beta 'th neighboring inner region of outer region alpha to that outer region.
const FactorQa (size_t alpha) const
 Returns belief of outer region alpha.
const FactorQb (size_t beta) const
 Returns belief of inner region beta.
Real doGBP ()
 Runs single-loop algorithm (algorithm 1 in [HAK03])
Real doDoubleLoop ()
 Runs double-loop algorithm (as described in section 4.2 of [HAK03]), which always convergences.

Public Attributes

struct dai::HAK::Properties props

Private Member Functions

void construct ()
 Helper function for constructors.
void findLoopClusters (const FactorGraph &fg, std::set< VarSet > &allcl, VarSet newcl, const Var &root, size_t length, VarSet vars)
 Recursive procedure for finding clusters of variables containing loops of length at most length.

Private Attributes

std::vector< Factor_Qa
 Outer region beliefs.
std::vector< Factor_Qb
 Inner region beliefs.
std::vector< std::vector
< Factor > > 
_muab
 Messages from outer to inner regions.
std::vector< std::vector
< Factor > > 
_muba
 Messages from inner to outer regions.
Real _maxdiff
 Maximum difference encountered so far.
size_t _iters
 Number of iterations needed.

Detailed Description

Approximate inference algorithm: implementation of single-loop ("Generalized Belief Propagation") and double-loop algorithms by Heskes, Albers and Kappen [HAK03].


Constructor & Destructor Documentation

dai::HAK::HAK ( ) [inline]

Default constructor.

dai::HAK::HAK ( const FactorGraph fg,
const PropertySet opts 
)

Construct from FactorGraph fg and PropertySet opts.

Parameters:
fgFactor graph.
optsParameters
See also:
Properties
dai::HAK::HAK ( const RegionGraph rg,
const PropertySet opts 
)

Construct from RegionGraph rg and PropertySet opts.


Member Function Documentation

virtual HAK* dai::HAK::clone ( ) const [inline, virtual]

Returns a pointer to a new, cloned copy of *this (i.e., virtual copy constructor)

Implements dai::InfAlg.

virtual HAK* dai::HAK::construct ( const FactorGraph fg,
const PropertySet opts 
) const [inline, virtual]

Returns a pointer to a newly constructed inference algorithm.

Parameters:
fgFactor graph on which to perform the inference algorithm;
optsParameters passed to constructor of inference algorithm;

Implements dai::InfAlg.

virtual std::string dai::HAK::name ( ) const [inline, virtual]

Returns the name of the algorithm.

Implements dai::InfAlg.

Factor dai::HAK::belief ( const VarSet vs) const [virtual]

Returns the (approximate) marginal probability distribution of a set of variables.

Note:
Before this method is called, run() should have been called.
Exceptions:
NOT_IMPLEMENTEDif not implemented/supported.
BELIEF_NOT_AVAILABLEif the requested belief cannot be calculated with this algorithm.

Implements dai::InfAlg.

vector< Factor > dai::HAK::beliefs ( ) const [virtual]

Returns all beliefs (approximate marginal probability distributions) calculated by the algorithm.

Note:
Before this method is called, run() should have been called.

Implements dai::InfAlg.

Real dai::HAK::logZ ( ) const [virtual]

Returns the logarithm of the (approximated) partition sum (normalizing constant of the factor graph).

Note:
Before this method is called, run() should have been called.
Exceptions:
NOT_IMPLEMENTEDif not implemented/supported

Implements dai::InfAlg.

void dai::HAK::init ( ) [virtual]

Initializes all data structures of the approximate inference algorithm.

Note:
This method should be called at least once before run() is called.

Implements dai::InfAlg.

void dai::HAK::init ( const VarSet vs) [virtual]

Initializes all data structures corresponding to some set of variables.

This method can be used to do a partial initialization after a part of the factor graph has changed. Instead of initializing all data structures, it only initializes those involving the variables in vs.

Exceptions:
NOT_IMPLEMENTEDif not implemented/supported

Implements dai::InfAlg.

Real dai::HAK::run ( ) [virtual]

Runs the approximate inference algorithm.

Note:
Before run() is called the first time, init() should have been called.

Implements dai::InfAlg.

virtual Real dai::HAK::maxDiff ( ) const [inline, virtual]

Returns maximum difference between single variable beliefs in the last iteration.

Exceptions:
NOT_IMPLEMENTEDif not implemented/supported

Reimplemented from dai::InfAlg.

virtual size_t dai::HAK::Iterations ( ) const [inline, virtual]

Returns number of iterations done (one iteration passes over the complete factorgraph).

Exceptions:
NOT_IMPLEMENTEDif not implemented/supported

Reimplemented from dai::InfAlg.

virtual void dai::HAK::setMaxIter ( size_t  ) [inline, virtual]

Sets maximum number of iterations (one iteration passes over the complete factorgraph).

Exceptions:
NOT_IMPLEMENTEDif not implemented/supported

Reimplemented from dai::InfAlg.

void dai::HAK::setProperties ( const PropertySet opts) [virtual]

Set parameters of this inference algorithm.

The parameters are set according to the PropertySet opts. The values can be stored either as std::string or as the type of the corresponding MF::props member.

Implements dai::InfAlg.

PropertySet dai::HAK::getProperties ( ) const [virtual]

Returns parameters of this inference algorithm converted into a PropertySet.

Implements dai::InfAlg.

string dai::HAK::printProperties ( ) const [virtual]

Returns parameters of this inference algorithm formatted as a string in the format "[key1=val1,key2=val2,...,keyn=valn]".

Implements dai::InfAlg.

Factor& dai::HAK::muab ( size_t  alpha,
size_t  _beta 
) [inline]

Returns reference to message from outer region alpha to its _beta 'th neighboring inner region.

Factor& dai::HAK::muba ( size_t  alpha,
size_t  _beta 
) [inline]

Returns reference to message the _beta 'th neighboring inner region of outer region alpha to that outer region.

const Factor& dai::HAK::Qa ( size_t  alpha) const [inline]

Returns belief of outer region alpha.

const Factor& dai::HAK::Qb ( size_t  beta) const [inline]

Returns belief of inner region beta.

Real dai::HAK::doGBP ( )

Runs single-loop algorithm (algorithm 1 in [HAK03])

Real dai::HAK::doDoubleLoop ( )

Runs double-loop algorithm (as described in section 4.2 of [HAK03]), which always convergences.

void dai::HAK::construct ( ) [private]

Helper function for constructors.

void dai::HAK::findLoopClusters ( const FactorGraph fg,
std::set< VarSet > &  allcl,
VarSet  newcl,
const Var root,
size_t  length,
VarSet  vars 
) [private]

Recursive procedure for finding clusters of variables containing loops of length at most length.

Parameters:
fgthe factor graph
allclthe clusters found so far
newclpartial candidate cluster
rootstart (and end) point of the loop
lengthnumber of variables that may be added to newcl
varsneighboring variables of newcl
Returns:
allcl all clusters of variables with loops of length at most length passing through root

Member Data Documentation

std::vector<Factor> dai::HAK::_Qa [private]

Outer region beliefs.

std::vector<Factor> dai::HAK::_Qb [private]

Inner region beliefs.

std::vector<std::vector<Factor> > dai::HAK::_muab [private]

Messages from outer to inner regions.

std::vector<std::vector<Factor> > dai::HAK::_muba [private]

Messages from inner to outer regions.

Maximum difference encountered so far.

size_t dai::HAK::_iters [private]

Number of iterations needed.


The documentation for this class was generated from the following files: