Random Walk Metropolis is a gradient-free Markov chain Monte Carlo
(MCMC) algorithm. The algorithm involves a proposal generating step
proposal_state = current_state + perturb
by a random
perturbation, followed by Metropolis-Hastings accept/reject step. For more
details see Section 2.1 of Roberts and Rosenthal (2004).
mcmc_random_walk_metropolis(
target_log_prob_fn,
new_state_fn = NULL,
seed = NULL,
name = NULL
)
a Monte Carlo sampling kernel
Function which takes an argument like
current_state
((if it's a list current_state
will be unpacked) and returns its
(possibly unnormalized) log-density under the target distribution.
Function which takes a list of state parts and a
seed; returns a same-type list
of Tensor
s, each being a perturbation
of the input state parts. The perturbation distribution is assumed to be
a symmetric distribution centered at the input state part.
Default value: NULL
which is mapped to tfp$mcmc$random_walk_normal_fn()
.
integer to seed the random number generator.
String name prefixed to Ops created by this function.
Default value: NULL
(i.e., 'rwm_kernel').
The current class implements RWM for normal and uniform proposals. Alternatively,
the user can supply any custom proposal generating function.
The function one_step
can update multiple chains in parallel. It assumes
that all leftmost dimensions of current_state
index independent chain states
(and are therefore updated independently). The output of
target_log_prob_fn(current_state)
should sum log-probabilities across all
event dimensions. Slices along the rightmost dimensions may have different
target distributions; for example, current_state[0, :]
could have a
different target distribution from current_state[1, :]
. These semantics
are governed by target_log_prob_fn(current_state)
. (The number of
independent chains is tf$size(target_log_prob_fn(current_state))
.)
Other mcmc_kernels:
mcmc_dual_averaging_step_size_adaptation()
,
mcmc_hamiltonian_monte_carlo()
,
mcmc_metropolis_adjusted_langevin_algorithm()
,
mcmc_metropolis_hastings()
,
mcmc_no_u_turn_sampler()
,
mcmc_replica_exchange_mc()
,
mcmc_simple_step_size_adaptation()
,
mcmc_slice_sampler()
,
mcmc_transformed_transition_kernel()
,
mcmc_uncalibrated_hamiltonian_monte_carlo()
,
mcmc_uncalibrated_langevin()
,
mcmc_uncalibrated_random_walk()