MUQ  0.4.3
muq::SamplingAlgorithms::InfMALAProposal Class Reference

An implement of the dimension-independent MALA (or Inf-MALA) proposal. More...

#include <InfMALAProposal.h>

Inheritance diagram for muq::SamplingAlgorithms::InfMALAProposal:

Detailed Description

An implement of the dimension-independent MALA (or Inf-MALA) proposal.

This class implements the \(\infty-\)MALA proposal (and its geometry-aware version: \(\infty-\)mMALA proposal) described in Beskos et al., 2017. The proposal takes the form

\[ u^\prime = \rho u + \sqrt{1 - \rho^2} \frac{\sqrt{h}}{2} \left\{ u - K C^{-1} (u - u_0) - K \nabla \Phi \right\} + \sqrt{1-\rho} z \]

where \(u\) is the current state of the chain, \(\rho = \frac{4 - h}{4 + h}\) with \(h\) being the step size used to discretize the Langevin SDE, \(u_0\) is the prior mean, \(C\) is the prior covariance, \(\Phi\) is the negagive log likelihood (note that \(\nabla \pi_\text{post} = - C^{-1} (u - u_0) - \nabla \Phi\)), \(z\sim N(0,K)\) is a normal random variable with a strategically chosen covariance \(K\), and \(u^\prime\) is the propsed point.

Note that the above proposal is the geometry-aware version, and it is the \(\infty-\)MALA proposal when \(K = C\).

Configuration Parameters:

Parameter Key Type Default Value Description
"StepSize" double 1.0 The step size used to discrete the Langevin SDE.

Definition at line 40 of file InfMALAProposal.h.

Public Member Functions

 InfMALAProposal (boost::property_tree::ptree const &pt, std::shared_ptr< AbstractSamplingProblem > prob)
 
 InfMALAProposal (boost::property_tree::ptree const &pt, std::shared_ptr< AbstractSamplingProblem > prob, std::shared_ptr< muq::Modeling::GaussianBase > zDistIn)
 
virtual ~InfMALAProposal ()=default
 
- Public Member Functions inherited from muq::SamplingAlgorithms::MCMCProposal
 MCMCProposal (boost::property_tree::ptree const &pt, std::shared_ptr< AbstractSamplingProblem > const &probIn)
 
virtual ~MCMCProposal ()=default
 
virtual void Adapt (unsigned int const t, std::vector< std::shared_ptr< SamplingState >> const &state)
 Adapt the proposal after each step. More...
 
void SetCommunicator (std::shared_ptr< parcer::Communicator > newcomm)
 
virtual void SetBlockInd (int newBlockInd)
 
virtual int GetBlockInd () const
 

Additional Inherited Members

- Public Types inherited from muq::SamplingAlgorithms::MCMCProposal
typedef std::function< std::shared_ptr< MCMCProposal >boost::property_tree::ptree, std::shared_ptr< AbstractSamplingProblem >)> MCMCProposalConstructor
 
typedef std::map< std::string, MCMCProposalConstructorMCMCProposalMap
 
- Static Public Member Functions inherited from muq::SamplingAlgorithms::MCMCProposal
static std::shared_ptr< MCMCProposalConstruct (boost::property_tree::ptree const &pt, std::shared_ptr< AbstractSamplingProblem > const &probIn)
 Static constructor for the transition kernel. More...
 
static std::shared_ptr< MCMCProposalMapGetMCMCProposalMap ()
 

Constructor & Destructor Documentation

◆ InfMALAProposal() [1/2]

muq::SamplingAlgorithms::InfMALAProposal::InfMALAProposal ( boost::property_tree::ptree const &  pt,
std::shared_ptr< AbstractSamplingProblem prob 
)

Construct the Inf-mMALA proposal with identity covariance for \(K\).

◆ InfMALAProposal() [2/2]

InfMALAProposal::InfMALAProposal ( boost::property_tree::ptree const &  pt,
std::shared_ptr< AbstractSamplingProblem prob,
std::shared_ptr< muq::Modeling::GaussianBase zDistIn 
)

Construct the Inf-mMALA proposal with strategically chosen Gaussian distribution zDistIn for \(z\).

Definition at line 28 of file InfMALAProposal.cpp.

References rho, and stepSize.

◆ ~InfMALAProposal()

virtual muq::SamplingAlgorithms::InfMALAProposal::~InfMALAProposal ( )
virtualdefault

Member Function Documentation

◆ GetSigmaGrad()

Eigen::VectorXd InfMALAProposal::GetSigmaGrad ( std::shared_ptr< SamplingState > const &  currentState) const
protected

Returns the product of the proposal covariance times gradient of the log target density at the current state. Checks the metadata of the currentstate first to see if this has already been computed.

Definition at line 68 of file InfMALAProposal.cpp.

References muq::SamplingAlgorithms::MCMCProposal::blockInd, muq::SamplingAlgorithms::MCMCProposal::prob, and zDist.

Referenced by LogDensity(), and Sample().

◆ LogDensity()

double InfMALAProposal::LogDensity ( std::shared_ptr< SamplingState > const &  currState,
std::shared_ptr< SamplingState > const &  propState 
)
overrideprotectedvirtual

◆ Sample()

std::shared_ptr< SamplingState > InfMALAProposal::Sample ( std::shared_ptr< SamplingState > const &  currentState)
overrideprotectedvirtual

Member Data Documentation

◆ rho

double muq::SamplingAlgorithms::InfMALAProposal::rho
protected

Definition at line 63 of file InfMALAProposal.h.

Referenced by InfMALAProposal(), LogDensity(), and Sample().

◆ stepSize

double muq::SamplingAlgorithms::InfMALAProposal::stepSize
protected

Definition at line 61 of file InfMALAProposal.h.

Referenced by InfMALAProposal(), LogDensity(), and Sample().

◆ zDist

std::shared_ptr<muq::Modeling::GaussianBase> muq::SamplingAlgorithms::InfMALAProposal::zDist
protected

Definition at line 66 of file InfMALAProposal.h.

Referenced by GetSigmaGrad(), LogDensity(), and Sample().


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