Package gmisclib :: Module mcmc :: Class rough_acceptor_base
[frames] | no frames]

Class rough_acceptor_base

source code


Instance Methods
 
probe(self, currentpos, stepper)
This computes logP() near the current step position, and sees how much that differs from logP() _at_ the current step position.
source code
float
jitter(self)
In the acoustic distances paper, it is called $\bar{delta}$.
source code
 
reset(self)
In order to make the overal algorithm asymptotically a Markovian, we need to make sure that (asymptotically) the acceptor function depends only on long-term averages, not on recent history.
source code
 
__init__(self, probestep, tau, droop)
x.__init__(...) initializes x; see help(type(x)) for signature
source code
float
T(self)
Returns: A decent approximation to the system temperature. (Inherited from gmisclib.mcmc.acceptor_base)
source code
bool
__call__(self, delta)
Accept a step or not? (Inherited from gmisclib.mcmc.acceptor_base)
source code

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__

Instance Variables
  last_probe
A pair of position_base instances showing the position and logP at each end of the most recent probe for a discontinuity. (Inherited from gmisclib.mcmc.acceptor_base)
  since_last_reset
Number of iterations since the last overall MCMC reset.
Properties

Inherited from object: __class__

Method Details

probe(self, currentpos, stepper)

source code 

This computes logP() near the current step position, and sees how much that differs from logP() _at_ the current step position. That difference is used as a measure of the "roughness" or "randomness" of the function. That extra roughness is added onto the temperature to ensure that the MCMC stepper doesn't get trapped in an unimportant local valley. Essentially, we are making the statement that any differences within the region covered by probestep are unimportant.

Overrides: acceptor_base.probe

jitter(self)

source code 

In the acoustic distances paper, it is called $\bar{delta}$.

Returns: float
An estimate of how rough the function is, on a small scale.
Overrides: acceptor_base.jitter
(inherited documentation)

reset(self)

source code 

In order to make the overal algorithm asymptotically a Markovian, we need to make sure that (asymptotically) the acceptor function depends only on long-term averages, not on recent history. The problem is the jitter measurement, of course. So, one needs to average the jitter over a time longer than the recurrence time, asymptotically. But that makes it horribly unresponsive in the early stages of the optimization when things are rapidly changing. The solution is to pass along resets, so that it can (temporarily) revert to a short averaging time.

Overrides: acceptor_base.reset
(inherited documentation)

__init__(self, probestep, tau, droop)
(Constructor)

source code 

x.__init__(...) initializes x; see help(type(x)) for signature

Overrides: object.__init__
(inherited documentation)