9 comments

[ 3.1 ms ] story [ 45.1 ms ] thread
This is so incredibly far over my head.
Yup, going to have to save this for later... I vaguely remember a Metropolis Light Transport from my college graphics course, which I assume uses similar sampling methodology
it's not. set aside for a moment the prose description, find an MH module in your language of choice and study the code then play around w/ it in the REPL. A couple of things will probably surprise you when you look at an MCMC implementation (either MH or Gibbs): (i) very compact (eg, MH ~ 40 loc in python; 120 in scala; Gibbs ~10 lines in python, ~40 in scala); and (ii) the primary data structures are ones you probably use every day (eg, 2D array, which is used to represent the transition probabilities among the nodes comprising the graph that models the random walk). (A python/numpy implementation of MH: http://isaacslavitt.com/2013/12/30/metropolis-hastings-and-s...)
I'm sad that every explanation of MCMC uses complicated symbolic explanations. I was trying to explain it once and came up with a fairly intuitive way to visualize it. Probably that is the way it was first discovered, though who knows.

In words, you can visualize it as doing a random walk around the area of a probability graph. Then it just turns into an explanation of why random walks accurately sample from an area, and the various tricks used in MCMC methods to make random walks more efficient.

Relatedly, bayes theorem makes much more sense when you visualize it, e.g. this post: https://oscarbonilla.com/2009/05/visualizing-bayes-theorem/