All Projects → refraction-ray → admc

refraction-ray / admc

Licence: MIT license
Infinite order automatic differentiation for Monte Carlo with unnormalized probability distribution

Projects that are alternatives of or similar to admc

Birch
A probabilistic programming language that combines automatic differentiation, automatic marginalization, and automatic conditioning within Monte Carlo methods.
Stars: ✭ 80 (+370.59%)
Mutual labels:  monte-carlo, automatic-differentiation
Stock Prediction Models
Gathers machine learning and deep learning models for Stock forecasting including trading bots and simulations
Stars: ✭ 4,660 (+27311.76%)
Mutual labels:  monte-carlo
l2hmc-qcd
Application of the L2HMC algorithm to simulations in lattice QCD.
Stars: ✭ 33 (+94.12%)
Mutual labels:  monte-carlo
Mathematical-Modeling
A sharing of the learning process of mathematical modeling 数学建模常用工具模型算法分享:数学建模竞赛优秀论文,数学建模常用算法模型,LaTeX论文模板,SPSS工具分享。
Stars: ✭ 30 (+76.47%)
Mutual labels:  monte-carlo
mcx
Monte Carlo eXtreme (MCX) - GPU-accelerated photon transport simulator
Stars: ✭ 77 (+352.94%)
Mutual labels:  monte-carlo
vegasflow
VegasFlow: accelerating Monte Carlo simulation across multiple hardware platforms
Stars: ✭ 19 (+11.76%)
Mutual labels:  monte-carlo
ProjectReward
A software to shortlist and find the best options spread available for a given stock and help it visualise using payoff graphs.
Stars: ✭ 57 (+235.29%)
Mutual labels:  monte-carlo
mcxcl
Monte Carlo eXtreme for OpenCL (MCXCL)
Stars: ✭ 36 (+111.76%)
Mutual labels:  monte-carlo
MonteCarlo.jl
Classical and quantum Monte Carlo simulations in Julia
Stars: ✭ 125 (+635.29%)
Mutual labels:  monte-carlo
grand
A Python module for carrying out GCMC insertions and deletions of water molecules in OpenMM.
Stars: ✭ 23 (+35.29%)
Mutual labels:  monte-carlo
tiny-path
An instructive one-file Ruby path tracer
Stars: ✭ 53 (+211.76%)
Mutual labels:  monte-carlo
pmh-tutorial
Source code and data for the tutorial: "Getting started with particle Metropolis-Hastings for inference in nonlinear models"
Stars: ✭ 23 (+35.29%)
Mutual labels:  monte-carlo
UQpy
UQpy (Uncertainty Quantification with python) is a general purpose Python toolbox for modeling uncertainty in physical and mathematical systems.
Stars: ✭ 117 (+588.24%)
Mutual labels:  monte-carlo
lattice mc
Lattice gas Monte Carlo simulation code
Stars: ✭ 24 (+41.18%)
Mutual labels:  monte-carlo
sampling-methods-numpy
This repository contains implementations of some basic sampling methods in numpy.
Stars: ✭ 48 (+182.35%)
Mutual labels:  monte-carlo
SpinMC.jl
Classical Monte Carlo simulations for lattice spin systems
Stars: ✭ 18 (+5.88%)
Mutual labels:  monte-carlo
neworder
A dynamic microsimulation framework for python
Stars: ✭ 15 (-11.76%)
Mutual labels:  monte-carlo
ase exploration
Planning for robotic exploration based on forward simulation
Stars: ✭ 82 (+382.35%)
Mutual labels:  monte-carlo
MASA
Method of Manufactured Solutions Repository
Stars: ✭ 46 (+170.59%)
Mutual labels:  automatic-differentiation
warp
continuous energy monte carlo neutron transport in general geometries on GPUs
Stars: ✭ 27 (+58.82%)
Mutual labels:  monte-carlo

ADMC

Infinite order automatic differentiation for Monte Carlo expectations from unnormalized probability distributions.

action badge

Introduction

Due to the nature of Metropolis-Hasting algorithm, we can simulate the distribution by Monte Carlo as long as we have the knowledge of the ratio between probabilities (densities) for two different configurations. Namely, we can sample data from unnormalized probability distributions with unknown normalized factors of the distribution (which usually denoted as partition function in statistics physics). There are various scenarios for such MC with unormalized probability, including MCMC to estimate posteriors in Bayesian inference context and classical Monte Carlo as well as Quantum Monte Carlo methods to evaluate observable quantities from Hamiltonian models in statistical physics context.

The method to compute the derivatives of such MC expectation from unnormalized probability is lack in the literature. To utilize the power of existing ML frameworks, the only thing to hack is the object function. According to our papers, infinitely AD-aware MC expectation objective is:

where p is the unnormalized probability (density).

And we have the following examples to show the power of this new ADMC technique.

Examples

Note the code experiments are all implemented with TensorFlow (tested on tf1.14, both cpu and gpu version) in static computational graph mode.

  • Fast locate the critical temperature for 2D Ising model

    In this example, we utilize various features that ML frameworks enable us. We implement Wolff update scheme for 2D Ising model with vectorize consideration so that tens of thounds of Markov Chains can be simulated at the same time. Together with GPU acceleration, automatic differentiation infrastructure and carefully designed optimizers, ML frameworks can make our life easy even beyond ML tasks.

  • Calculate Fisher information matrix for unnormalized distribution with AD approach on KL divergence

    In this example, we show several approaches to calculate Fisher matrix for normalized and unnormalized distributions. The fancy AD approach to evaluate Fisher matrix is to compute KL divergence defined below in the forward pass. And the Hessian of such KL object is just Fisher information matrix.

  • End-to-end, easy-to-implement VMC with neural network wavefunctions

    Forget about all techniques and derivations for VMC in terms of its gradients or SR methods. We only need to minimize the energy, and we have no interest to derive the gradients for energy expectation by hand. Why bother when you are equipped with AD infrastructure. With moderate effort and buitin optimizer Adam, you can achieve state-of-the-art result on 2D Heisenberg model. Implementation of VMC has never been such easy as this.

Reference

For details on ADMC theory and application, see our work: arXiv:1911.09117

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].