beanmachine.ppl.inference.proposer.nmc.single_site_real_space_nmc_proposer module
- class beanmachine.ppl.inference.proposer.nmc.single_site_real_space_nmc_proposer.SingleSiteRealSpaceNMCProposer(node: beanmachine.ppl.model.rv_identifier.RVIdentifier, alpha: float = 10.0, beta: float = 1.0)
Bases:
beanmachine.ppl.inference.proposer.single_site_ancestral_proposer.SingleSiteAncestralProposer
Single-Site Real Space Newtonian Monte Carlo Proposer See sec. 3.1 of [1]
[1] Arora, Nim, et al. Newtonian Monte Carlo: single-site MCMC meets second-order gradient methods
- compute_beta_priors_from_accepted_lr(max_lr_num: int = 5) Tuple[torch.Tensor, torch.Tensor]
Compute Alpha and Beta using Method of Moments.
- do_adaptation(world: beanmachine.ppl.world.world.World, accept_log_prob: torch.Tensor, is_accepted: bool = False, *args, **kwargs) None
Do adaption based on the learning rates.
- Parameters
world – the world in which we’re operating in.
accept_log_prob – Current accepted log prob (Not used in this particular proposer).
is_accepted – bool representing whether the new value was accepted.
- get_proposal_distribution(world: beanmachine.ppl.world.world.World) torch.distributions.distribution.Distribution
Returns the proposal distribution of the node.
- Parameters
world – the world in which we’re proposing a new value for node required to find a proposal distribution which in this case is the fraction of distance between the current value and NMC mean that we’re going to pick as our proposer mean.
- Returns
The proposal distribution.