Monte Carlo Markov Chain
上一篇里,我们从随机变量的状态转移和随机变量的分布转移这两个角度,来解释了马尔可夫链的转移过程,以及收敛这一重要的性质。这个性质与我们本文的主题采样有什么关系呢?下面我们从第三个角度来考察马尔可夫链 —— 样本的转移。
分布的转移是数学中抽象的过程,我们无法观测到分布函数或者密度函数,我们可以观测到的是样本。我们已经知道关于随机变量 X X X的任意分布 π 0 ( x ) \pi_0(x) π0(x)按照 f ( X t + 1 ∣ X t ) f(X_{t+1}|X_t) f(Xt+1∣Xt)进行转移,最终会收敛到分布 π ( x ) \pi(x) π(x)。那么相应地,一组服从 π 0 ( x ) \pi_0(x) π0(x)的样本,按照 f ( X t + 1 ∣ X t ) f(X_{t+1}|X_t) f(Xt+1∣Xt)进行转移,最终会变成一组服从分布 π ( x ) \pi(x) π(x)的样本。每一次转移的过程可以描述如下:
- 在初始时刻,我们有一组样本 { x 0 1 , x 0 2 , ⋯   , x 0 N } \left\{ x_0^1, x_0^2, \cdots, x_0^N\right\} { x01,x02,⋯,x0N},服从任意分布,将这个分布记为 π 0 ( x ) \pi_0(x) π0(x)
- 样本中的每一个观测值 x 0 i x_0^i x0i,对应一个条件分布 f ( x ∣ x 0 i ) f(x|x_0^i) f(x∣x0i)。我们从分布 f ( x ∣ x 0 i ) f(x|x_0^i) f(x∣x0i)中采样一次,将观测值记为 x 1 i x_1^i x1i
- 于是我们得到一组新的样本 { x 1 0 , x 1 1 , ⋯   , x 1 N } \left\{x_1^0, x_1^1, \cdots, x_1^N \right\} { x10,x11,⋯,x1N},这组样本服从 π 1 ( x ) \pi_1(x) π1(x)
重复上述过程直至收敛,那么之后获得的每一组样本都服从分布 π ( x ) \pi(x) π(x)。
那么我们会自然地想到,如果对于我们想要采样的目标分布 π ( x ) \pi(x) π(x),我们能够找到与之对应的 f ( X t + 1 ∣ X t ) f(X_{t+1}|X_t) f(Xt+1∣Xt),并且设计一个从 f ( X t + 1 ∣ X t ) f(X_{t+1}|X_t) f(Xt+1∣Xt)中采样的方法,那么我们不就解决了从 π ( x ) \pi(x) π(x)中采样的问题吗?
然而,上面的提到的两点,我们都很难解决。我们先来考虑 X X X是离散的情况,求解与 π ( x ) \pi(x) π(x)对应的一组条件概率,等同于解一个方程组。假设 X X X是十维的随机变量,每个维度上有十个可能的取值,那么 X X X总共可能的取值有 1 0 10 10^{10} 1010个,意味着我们需要 1 0 10 10^{10} 1010个条件分布。同时,每个条件分布的在 1 0 10 10^{10} 1010个点上有定义,于是我们的方程组中有 1 0 20 10^{20} 1020个未知数,而这些未知数还要服从约束,即每个条件分布中各个点的概率非负并且求和等于1。上面还是极其简化的情况,在实际应用中,我们需要采样的分布经常是几十维或者上百维,并且分布是连续的,这样的问题规模是无法求解的,从中采样更无从谈起。
但是这个困难还是被伟大的前人解决了。Metropolis在1953年提出了一个绝妙的解决方案,可以基于一组我们能够采样的分布,巧妙地构造出了我们需要的转移概率。接下来,就让我们来看看,这个巧妙的方法是如何构思的。为了方便大家思考,我们假定我们的目标分布 π ( x ) \pi(x) π(x)是一维的离散分布,在 x 1 , x 2 , ⋯   , x N x_1, x_2, \cdots, x_N x1,x2,⋯,xN处有取值,记 π ( x ) = ( π 1 , π 2 , ⋯   , π N ) \pi(x)=(\pi_1, \pi_2, \cdots, \pi_N) π(x)=