KJB
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
kjb::Likelihood_dynamics Class Referenceabstract

#include <likelihood_dynamics.h>

Inheritance diagram for kjb::Likelihood_dynamics:
kjb::Abstract_dynamics kjb::Discrete_change_size kjb::Focal_scale_dynamics kjb::Parapiped_camera_dynamics kjb::Parapiped_stretch_dynamics

Public Member Functions

 Likelihood_dynamics (double ialpha=0.99, unsigned int ikick=0)
 
 Likelihood_dynamics (kjb::Vector iparameters, kjb::Vector ideltas, kjb::Vector ietas, double ialpha=0.99, unsigned int ikick=0)
 
 Likelihood_dynamics (const Likelihood_dynamics &src)
 
Likelihood_dynamicsoperator= (const Likelihood_dynamics &src)
 
virtual ~Likelihood_dynamics ()
 
virtual void run (unsigned int iterations)
 
virtual void set_index (unsigned int iindex)
 
virtual void set_index (Int_vector iindex)
 
- Public Member Functions inherited from kjb::Abstract_dynamics
 Abstract_dynamics (double ialpha=0.99, unsigned int ikick=0)
 
 Abstract_dynamics (kjb::Vector iparameters, kjb::Vector ideltas, double ialpha=0.99, unsigned int ikick=0)
 
 Abstract_dynamics (const Abstract_dynamics &src)
 
Abstract_dynamicsoperator= (const Abstract_dynamics &src)
 
virtual ~Abstract_dynamics ()
 
void set_num_parameters (unsigned int num_params)
 Sets the number of parameters we will be sampling over. More...
 

Protected Member Functions

virtual void log_sample ()
 
virtual void compute_energy_gradient ()
 
virtual double compute_likelihood ()=0
 
- Protected Member Functions inherited from kjb::Abstract_dynamics
void run (unsigned int iterations)
 Implements stochastic dynamics sampling on a set of parameters. This implementation follows the algorithm described in the 1993 Neal Paper, with leapfrog discretization and stochastic transitions weighted by the stochastic alpha parameter. This function MUST be kept protected so that only classes that inherit from this class can use it. Each of this derived class will have to provide its own public interface to this method. More...
 

Protected Attributes

kjb::Vector etas
 The size of the step to use when computing the gradient of the energy function, in a two point estimate fashion. This varies for each parameter we are sampling over. More...
 
std::vector< boost::function1
< void, double > > 
callbacks
 We have a callback for each parameter we are sampling over. Each of them returns a void and accepts a double. Each callback should change the model according to the sampled parameter value. More...
 
std::vector< boost::function0
< double > > 
parameter_getters
 We have a callback for each parameter we are sampling over. Each of them returns a double. Each callback should get the parameter value to initialize the sampling. More...
 
- Protected Attributes inherited from kjb::Abstract_dynamics
kjb::Vector parameters
 The parameters to sample over. More...
 
kjb::Vector deltas
 The size of the step to take in the gradient direction. This step size is different for each parameter we are sampling over. More...
 
kjb::Vector gradients
 
kjb::Vector stochastic_momenta
 
kjb::Vector momenta
 
kjb::Vector temp_momenta
 
kjb::Vector stochastic_transition
 
kjb::MV_gaussian_distributionmv_gauss
 
double alpha
 
double st_alpha
 
unsigned int kick
 

Detailed Description

dynamics sampling on a set of parameters.This implementation follows the algorithm described in the 1993 Neal Paper, with leapfrog discretization and stochastic transitions weighted by the stochastic alpha parameter. Here the user has to provide a likelihood function in order to compute the gradient of the energy function

Constructor & Destructor Documentation

kjb::Likelihood_dynamics::Likelihood_dynamics ( double  ialpha = 0.99,
unsigned int  ikick = 0 
)
inline
Parameters
ialphaThis parameter tweaks the contribution of the stochastic transition. If it is close to one, the random transition has little weight, and the dynamics mostly follow the momenta. The closer it gets to zero, the more the stochastic transitions will influence the selected trajectory.
ikickThis parameters is used to reset the momenta to the correct trajectory, thus eliminating the effect of the stochastic transitions. It specifies after how many transitions the momenta are to be reset. This was not fully tested
kjb::Likelihood_dynamics::Likelihood_dynamics ( kjb::Vector  iparameters,
kjb::Vector  ideltas,
kjb::Vector  ietas,
double  ialpha = 0.99,
unsigned int  ikick = 0 
)
inline
Parameters
iparametersThe initial values of the parameters to sample over
ideltasThe size of the step to take in the gradient direction. This step size is different for each parameter we are sampling over
ialphaThis parameter tweaks the contribution of the stochastic transition. If it is close to one, the random transition has little weight, and the dynamics mostly follow the momenta. The closer it gets to zero, the more the stochastic transitions will influence the selected trajectory.
ikickthis parameters is used to reset the momenta to the correct trajectory, thus eliminating the effect of the stochastic transitions. It specifies after how many transitions the momenta are to be reset. This was not fully tested
Likelihood_dynamics::Likelihood_dynamics ( const Likelihood_dynamics src)
virtual kjb::Likelihood_dynamics::~Likelihood_dynamics ( )
inlinevirtual

Member Function Documentation

void Likelihood_dynamics::compute_energy_gradient ( )
protectedvirtual
virtual double kjb::Likelihood_dynamics::compute_likelihood ( )
protectedpure virtual
virtual void kjb::Likelihood_dynamics::log_sample ( )
inlineprotectedvirtual

Reimplemented from kjb::Abstract_dynamics.

Likelihood_dynamics & Likelihood_dynamics::operator= ( const Likelihood_dynamics src)
void Likelihood_dynamics::run ( unsigned int  iterations)
virtual
virtual void kjb::Likelihood_dynamics::set_index ( unsigned int  iindex)
inlinevirtual
virtual void kjb::Likelihood_dynamics::set_index ( Int_vector  iindex)
inlinevirtual

Member Data Documentation

std::vector< boost::function1<void, double> > kjb::Likelihood_dynamics::callbacks
protected

We have a callback for each parameter we are sampling over. Each of them returns a void and accepts a double. Each callback should change the model according to the sampled parameter value.

kjb::Vector kjb::Likelihood_dynamics::etas
protected

The size of the step to use when computing the gradient of the energy function, in a two point estimate fashion. This varies for each parameter we are sampling over.

std::vector< boost::function0<double> > kjb::Likelihood_dynamics::parameter_getters
protected

We have a callback for each parameter we are sampling over. Each of them returns a double. Each callback should get the parameter value to initialize the sampling.


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