Skip to main content

Local-Global MCMC kernels: the bost of both worlds (NeurIPS 2022)

Project description

Ex2MCMC: Local-Global MCMC kernels: the bost of both worlds (NeurIPS 2022) [Paper]

[ArXiv]

Authors: Sergey Samsonov, Evgeny Lagutin, Marylou Gabrié, Alain Durmus, Alexey Naumov, Eric Moulines.

Abstract: In the present paper we study an Explore-Exploit Markov chain Monte Carlo strategy (Ex2MCMC) that combines local and global samplers showing that it enjoys the advantages of both approaches. We prove V-uniform geometric ergodicity of Ex2MCMC without requiring a uniform adaptation of the global sampler to the target distribution. We also compute explicit bounds on the mixing rate of the Explore-Exploit strategy under realistic conditions. Moreover, we also analyze an adaptive version of the strategy (FlEx2MCMC) where a normalizing flow is trained while sampling to serve as a proposal for global moves. We illustrate the efficiency of Ex2MCMC and its adaptive version on classical sampling benchmarks as well as in sampling high-dimensional distributions defined by Generative Adversarial Networks seen as Energy Based Models.

Single chain mixing

i-SIR

Sampling from GAN as Energy-Based Models with MCMC

FID Inception Score

Algorithms

Ex2MCMC:

Ex<sup>2</sup>MCMC

FlEx2MCMC:

FlEx<sup>2</sup>MCMC

Installation

Create environment:

conda create -n ex2mcmc python=3.8
conda activate ex2mcmc
pip install ex2mcmc
pip install git+https://github.com/kwotsin/mimicry.git

Developement installation

Install poetry (if absent):

curl -sSL https://install.python-poetry.org | python3 -
poetry config virtualenvs.create false

Install the project:

poetry install --with dev
poetry add git+https://github.com/kwotsin/mimicry.git@a7fda06c4aff1e6af8dc4c4a35ed6636e434c766

Download checkpoints and stats

CIFAR10 checkpoints:

GAN Steps Path, G Path, D
DCGAN NS 100k netG_100000_steps.pth netD_100000_steps.pth
SNGAN, Hinge 100k netG.pth netD.pth

MNIST checkpoints:

GAN Path
Vanilla vanilla_gan.pth
WGAN CP wgan.pth

You also can run script to download checkpoints:

chmod +x get_ckpts.sh
./get_ckpts.sh

Download statistics for FID cimputation for CIFAR10 dataset:

mkdir -p stats & gdown 1jjgB_iuvmoVAXPRvVTI_hBfuIz7mQgOg -O stats/fid_stats_cifar10.npz

Usage

Demonstration on SNGAN

Try with colab: Open In Colab

Experiments with synthetic distributions:

FlEx2MCMC vs NUTS:

FlEx<sup>2</sup>MCMC NUTS

Experiment Path Colab
Toyish Gaussian experiments/exp_synthetic/toyish_gaussian.ipynb TBD
Gaussian mixture experiments/exp_synthetic/gaussian_mixture.ipynb Open In Colab
FlEx for Mixture of Gaussians experiments/exp_synthetic/flex_mog.ipynb Open In Colab
FlEx for banana-shaped distribution experiments/exp_synthetic/flex_banana.ipynb Open In Colab
FlEx for Neal's funnel distribution experiments/exp_synthetic/flex_funnel.ipynb Open In Colab

To reproduce the experimets on banana-shaped and funnel distributions:

python experiments/exp_synthetic/banana_funnel_metrics.py --distribution {banana,funnel} --device cuda:0

Experiments with GANs on MNIST dataset

experiments/exp_mnist/JSGAN_samples.ipynb Open In Colab

experiments/exp_mnist/WGAN_samples.ipynb Open In Colab

Experiments with GANs on CIFAR10 dataset

experiments/exp_cifar10_demo/DCGAN_samples.ipynb

experiments/exp_cifar10_demo/SNGAN_samples.ipynb

Sampling and FID computation

python experiments/exp_cifar10_fid/run.py configs/mcmc_configs/{ula,mala,isir,ex2mcmc,flex2mcmc}.yml configs/mmc_dcgan.yml

To run a full experiment:

chmod +x experiments/exp_cifar10_fid/run.sh & ./experiments/exp_cifar10_fid/run.sh

Results

FID and Inception Score (CIFAR10)

GAN MCMC Steps Inception Score FID
DCGAN none 0 6.3 28.4
DCGAN i-SIR 1k 6.96 22.7
DCGAN MALA 1k 6.95 23.4
DCGAN Ex2MCMC (our) 1k 7.56 19.0
DCGAN FlEx2MCMC (our) 1k 7.92 19.2
DCGAN FlEx2MCMC (our) 180 7.62 17.1

Sampling trajectories (CIFAR10)

Generation trajectories for DCGAN.

  • ULA:
CIFAR10 generations with ULA
  • MALA:
CIFAR10 generations with MALA
  • i-SIR:
CIFAR10 generations with i-SIR
  • Ex2MCMC:
CIFAR10 generations with Ex2MCMC
  • FlEx2MCMC:
CIFAR10 generations with FlEx2MCMC

Energy landscape approximation (MNIST)

Projection of GAN samples onto the energy landsape when trained on MNIST dataset:

energy landscape

Citation

@article{samsonov2022local,
  title={Local-Global MCMC kernels: the best of both worlds},
  author={Samsonov, Sergey and Lagutin, Evgeny and Gabri{\'e}, Marylou and Durmus, Alain and Naumov, Alexey and Moulines, Eric},
  journal={Advances in Neural Information Processing Systems},
  volume={35},
  pages={5178--5193},
  year={2022}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ex2mcmc-0.0.4.tar.gz (53.4 kB view hashes)

Uploaded Source

Built Distribution

ex2mcmc-0.0.4-py3-none-any.whl (58.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page