tfp.experimental.mcmc.chees_criterion
Stay organized with collections
Save and categorize content based on your preferences.
The ChEES criterion from [1].
tfp.experimental.mcmc.chees_criterion(
previous_state,
proposed_state,
accept_prob,
trajectory_length,
validate_args=False,
experimental_shard_axis_names=None,
experimental_reduce_chain_axis_names=None
)
ChEES stands for Change in the Estimator of the Expected Square.
ChEES = 1/4 E[(||x' - E[x]||**2 - ||x - E[x]||**2)**2],
where x
is the previous chain state, x'
is the next chain state, and
||.||
is the L2 norm. Both expectations are with respect to the chain's
stationary distribution. In practice, the inner expectation is replaced by the
empirical mean across chains, so computing this criterion requires that at
least 2 chains are present. The outer expectation is computed by the caller
(e.g. in the GradientBasedTrajectoryLengthAdaptation
kernel).
This can be thought of as the standard expected squared jump distance (ESJD)
criterion, except that the jump distance is computed in the space of centered
squared L2 norms.
Unlike ChEES, regular ESJD is maximized by perfectly anticorrelated proposals,
which can give excellent mean estimates but terrible variance estimates;
maximizing ChEES should give good estimates across a wider range of types of
posterior expectations.
Args |
previous_state
|
(Possibly nested) floating point Tensor . The previous
state of the HMC chain.
|
proposed_state
|
(Possibly nested) floating point Tensor . The proposed
state of the HMC chain.
|
accept_prob
|
Floating Tensor . Probability of acceping the proposed state.
|
trajectory_length
|
Floating Tensor . Mean trajectory length (not used in
this criterion).
|
validate_args
|
Whether to perform non-static argument validation.
|
experimental_shard_axis_names
|
A structure of string names indicating how
members of the state are sharded.
|
experimental_reduce_chain_axis_names
|
A string or list of string names
indicating which named chain axes to reduce over when computing the
criterion.
|
Returns |
chees
|
The value of the ChEES criterion.
|
Raises |
ValueError
|
If accept_prob indicates that there are fewer than 2 chains.
|
References
[1]: Hoffman, M., Radul, A., & Sountsov, P. (2020). An Adaptive MCMC Scheme
for Setting Trajectory Lengths in Hamiltonian Monte Carlo.
<https://proceedings.mlr.press/v130/hoffman21a>
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2023-11-21 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2023-11-21 UTC."],[],[],null,["# tfp.experimental.mcmc.chees_criterion\n\n\u003cbr /\u003e\n\n|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [View source on GitHub](https://github.com/tensorflow/probability/blob/v0.23.0/tensorflow_probability/python/experimental/mcmc/gradient_based_trajectory_length_adaptation.py#L160-L283) |\n\nThe ChEES criterion from \\[1\\]. \n\n tfp.experimental.mcmc.chees_criterion(\n previous_state,\n proposed_state,\n accept_prob,\n trajectory_length,\n validate_args=False,\n experimental_shard_axis_names=None,\n experimental_reduce_chain_axis_names=None\n )\n\nChEES stands for Change in the Estimator of the Expected Square. \n\n ChEES = 1/4 E[(||x' - E[x]||**2 - ||x - E[x]||**2)**2],\n\nwhere `x` is the previous chain state, `x'` is the next chain state, and\n`||.||` is the L2 norm. Both expectations are with respect to the chain's\nstationary distribution. In practice, the inner expectation is replaced by the\nempirical mean across chains, so computing this criterion requires that at\nleast 2 chains are present. The outer expectation is computed by the caller\n(e.g. in the `GradientBasedTrajectoryLengthAdaptation` kernel).\n\nThis can be thought of as the standard expected squared jump distance (ESJD)\ncriterion, except that the jump distance is computed in the space of centered\nsquared L2 norms.\n\nUnlike ChEES, regular ESJD is maximized by perfectly anticorrelated proposals,\nwhich can give excellent mean estimates but terrible variance estimates;\nmaximizing ChEES should give good estimates across a wider range of types of\nposterior expectations.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Args ---- ||\n|----------------------------------------|-----------------------------------------------------------------------------------------------------------------|\n| `previous_state` | (Possibly nested) floating point `Tensor`. The previous state of the HMC chain. |\n| `proposed_state` | (Possibly nested) floating point `Tensor`. The proposed state of the HMC chain. |\n| `accept_prob` | Floating `Tensor`. Probability of acceping the proposed state. |\n| `trajectory_length` | Floating `Tensor`. Mean trajectory length (not used in this criterion). |\n| `validate_args` | Whether to perform non-static argument validation. |\n| `experimental_shard_axis_names` | A structure of string names indicating how members of the state are sharded. |\n| `experimental_reduce_chain_axis_names` | A string or list of string names indicating which named chain axes to reduce over when computing the criterion. |\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Returns ------- ||\n|---------|-----------------------------------|\n| `chees` | The value of the ChEES criterion. |\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Raises ------ ||\n|--------------|----------------------------------------------------------------|\n| `ValueError` | If `accept_prob` indicates that there are fewer than 2 chains. |\n\n\u003cbr /\u003e\n\n#### References\n\n\\[1\\]: Hoffman, M., Radul, A., \\& Sountsov, P. (2020). An Adaptive MCMC Scheme\nfor Setting Trajectory Lengths in Hamiltonian Monte Carlo.\n\\\u003c\u003chttps://proceedings.mlr.press/v130/hoffman21a\u003e\\\u003e"]]