#include <dai/trwbp.h>
TRWBP accessors/mutators for scale parameters | |
Real | Weight (size_t I) const |
Returns weight corresponding to the I 'th factor. | |
const std::vector< Real > & | Weights () const |
Returns constant reference to vector of all weights. | |
void | setWeight (size_t I, Real c) |
Sets the weight of the I 'th factor to c. | |
void | setWeights (const std::vector< Real > &c) |
Sets the weights of all factors simultaenously. | |
void | addTreeToWeights (const RootedTree &tree) |
Increases weights corresponding to pairwise factors in tree with 1. | |
void | sampleWeights (size_t nrTrees) |
Samples weights from a sample of nrTrees random spanning trees. | |
virtual Prob | calcIncomingMessageProduct (size_t I, bool without_i, size_t i) const |
Calculate the product of factor I and the incoming messages. | |
virtual void | calcBeliefV (size_t i, Prob &p) const |
Calculates unnormalized belief of variable i. | |
virtual void | calcBeliefF (size_t I, Prob &p) const |
Calculates unnormalized belief of factor I. | |
virtual void | construct () |
Helper function for constructors. | |
Public Member Functions | |
Constructors/destructors | |
TRWBP () | |
Default constructor. | |
TRWBP (const FactorGraph &fg, const PropertySet &opts) | |
Construct from FactorGraph fg and PropertySet opts. | |
General InfAlg interface | |
virtual TRWBP * | clone () const |
Returns a pointer to a new, cloned copy of *this (i.e., virtual copy constructor). | |
virtual std::string | identify () const |
Identifies itself for logging purposes. | |
virtual Real | logZ () const |
Returns the logarithm of the (approximated) partition sum (normalizing constant of the factor graph). | |
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]". | |
Public Attributes | |
size_t | nrtrees |
Size of sample of trees used to set the weights. | |
Static Public Attributes | |
static const char * | Name = "TRWBP" |
Name of this inference algorithm. | |
Protected Attributes | |
std::vector< Real > | _weight |
"Edge weights" (indexed by factor ID) |
The Tree-Reweighted Belief Propagation algorithm is like Belief Propagation, but associates each factor with a scale parameter. which controls the divergence measure being minimized.
The messages are passed from factors
to variables
. The update equation is given by:
After convergence, the variable beliefs are calculated by:
and the factor beliefs are calculated by:
The logarithm of the partition sum is approximated by:
where the variable weights are defined as
dai::TRWBP::TRWBP | ( | ) | [inline] |
Default constructor.
dai::TRWBP::TRWBP | ( | const FactorGraph & | fg, | |
const PropertySet & | opts | |||
) | [inline] |
Construct from FactorGraph fg and PropertySet opts.
There is an additional property "nrtrees" which allows to specify the number of random spanning trees used to set the scale parameters.
fg | Factor graph. | |
opts | Parameters |
virtual TRWBP* dai::TRWBP::clone | ( | ) | const [inline, virtual] |
Returns a pointer to a new, cloned copy of *this
(i.e., virtual copy constructor).
Reimplemented from dai::BP.
string dai::TRWBP::identify | ( | ) | const [virtual] |
Real dai::TRWBP::logZ | ( | ) | const [virtual] |
void dai::TRWBP::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.
Reimplemented from dai::BP.
PropertySet dai::TRWBP::getProperties | ( | ) | const [virtual] |
Returns parameters of this inference algorithm converted into a PropertySet.
Reimplemented from dai::BP.
string dai::TRWBP::printProperties | ( | ) | const [virtual] |
Returns parameters of this inference algorithm formatted as a string in the format "[key1=val1,key2=val2,...,keyn=valn]".
Reimplemented from dai::BP.
Real dai::TRWBP::Weight | ( | size_t | I | ) | const [inline] |
Returns weight corresponding to the I 'th factor.
const std::vector<Real>& dai::TRWBP::Weights | ( | ) | const [inline] |
Returns constant reference to vector of all weights.
void dai::TRWBP::setWeight | ( | size_t | I, | |
Real | c | |||
) | [inline] |
Sets the weight of the I 'th factor to c.
void dai::TRWBP::setWeights | ( | const std::vector< Real > & | c | ) | [inline] |
Sets the weights of all factors simultaenously.
void dai::TRWBP::addTreeToWeights | ( | const RootedTree & | tree | ) |
Increases weights corresponding to pairwise factors in tree with 1.
void dai::TRWBP::sampleWeights | ( | size_t | nrTrees | ) |
Samples weights from a sample of nrTrees random spanning trees.
Prob dai::TRWBP::calcIncomingMessageProduct | ( | size_t | I, | |
bool | without_i, | |||
size_t | i | |||
) | const [protected, virtual] |
Calculate the product of factor I and the incoming messages.
If without_i == true
, the message coming from variable i is omitted from the product
Reimplemented from dai::BP.
void dai::TRWBP::calcBeliefV | ( | size_t | i, | |
Prob & | p | |||
) | const [protected, virtual] |
virtual void dai::TRWBP::calcBeliefF | ( | size_t | I, | |
Prob & | p | |||
) | const [inline, protected, virtual] |
void dai::TRWBP::construct | ( | ) | [protected, virtual] |
std::vector<Real> dai::TRWBP::_weight [protected] |
size_t dai::TRWBP::nrtrees |
Size of sample of trees used to set the weights.
const char * dai::TRWBP::Name = "TRWBP" [static] |