蒙特卡洛方法旨在求得复杂概率分布下的期望值: E z ∣ x [ f ( z ) ] = ∫ p ( z ∣ x ) f ( z ) d z ≃ 1 N ∑ i = 1 N f ( z i ) \mathbb{E}_{z|x}[f(z)]=\int p(z|x)f(z)dz\simeq\frac{1}{N}\sum\limits_{i=1}^Nf(z_i) Ez∣x[f(z)]=∫p(z∣x)f(z)dz≃N1i=1∑Nf(zi),也就是说,从概率分布中取N个点,从而近似计算这个积分。采样方法有:
马尔科夫链式是一种时间状态都是离散的随机变量序列。我们关注的主要是齐次的一阶马尔科夫链。马尔科夫链满足: p ( X t + 1 ∣ X 1 , X 2 , ⋯ , X t ) = p ( X t + 1 ∣ X t ) p(X_{t+1}|X_1,X_2,\cdots,X_t)=p(X_{t+1}|X_t) p(Xt+1∣X1,X2,⋯,Xt)=p(Xt+1∣Xt)。这个式子可以写成转移矩阵的形式 p i j = p ( X t + 1 = j ∣ X t = i ) p_{ij}=p(X_{t+1}=j|X_t=i) pij=p(Xt+1=j∣Xt=i)。我们有:
π t + 1 ( x ∗ ) = ∫ π i ( x ) p x → x ∗ d x \pi_{t+1}(x^*)=\int\pi_i(x)p_{x\to x^*}dx πt+1(x∗)=∫πi(x)px→x∗dx
如果存在 π = ( π ( 1 ) , π ( 2 ) , ⋯ ) , ∑ i = 1 + ∞ π ( i ) = 1 \pi=(\pi(1),\pi(2),\cdots),\sum\limits_{i=1}^{+\infin}\pi(i)=1 π=(π(1),π(2),⋯),i=1∑+∞π(i)=1,有上式成立,这个序列就叫马尔科夫链 X t X_t Xt的平稳分布,平稳分布就是表示在某一个时刻后,分布不再改变。MCMC就是通过构建马尔科夫链概率序列,使其收敛到平稳分布 p ( z ) p(z) p(z)。引入细致平衡: π ( x ) p x → x ∗ = π ( x ∗ ) p x ∗ → x \pi(x)p_{x\to x^*}=\pi(x^*)p_{x^*\to x} π(x)px→x∗=π(x∗)px∗→x。如果一个分布满足细致平衡,那么一定满足平稳分布:
∫ π ( x ) p x → x ∗ d x = ∫ π ( x ∗ ) p x ∗ → x d x = π ( x ∗ ) \int\pi(x)p_{x\to x^*}dx=\int\pi(x^*)p_{x^*\to x}dx=\pi(x^*) ∫π(x)px→x∗dx=∫π(x∗)px∗→xdx=π(x∗)
细致平衡条件将平稳分布的序列和马尔科夫链的转移矩阵联系在一起了,通过转移矩阵可以不断生成样本点。假定随机取一个转移矩阵 ( Q = Q i j ) (Q=Q_{ij}) (Q=Qij),作为一个提议矩阵。我们有:
p ( z ) ⋅ Q z → z ∗ α ( z , z ∗ ) = p ( z ∗ ) ⋅ Q z ∗ → z α ( z ∗ , z ) p(z)\cdot Q_{z\to z^*}\alpha(z,z^*)=p(z^*)\cdot Q_{z^*\to z}\alpha(z^*,z) p(z)⋅Qz→z∗α(z,z∗)=p(z∗)⋅Qz∗→zα(z∗,z)
取:
α ( z , z ∗ ) = min { 1 , p ( z ∗ ) Q z ∗ → z p ( z ) Q z → z ∗ } \alpha(z,z^*)=\min\{1,\frac{p(z^*)Q_{z^*\to z}}{p(z)Q_{z\to z^*}}\} α(z,z∗)=min{1,p(z)Qz→z∗p(z∗)Qz∗→z}
则
p ( z ) ⋅ Q z → z ∗ α ( z , z ∗ ) = min { p ( z ) Q z → z ∗ , p ( z ∗ ) Q z ∗ → z } = p ( z ∗ ) ⋅ Q z ∗ → z α ( z ∗ , z ) p(z)\cdot Q_{z\to z^*}\alpha(z,z^*)=\min\{p(z)Q_{z\to z^*},p(z^*)Q_{z^*\to z}\}=p(z^*)\cdot Q_{z^*\to z}\alpha(z^*,z) p(z)⋅Qz→z∗α(z,z∗)=min{p(z)Qz→z∗,p(z∗)Qz∗→z}=p(z∗)⋅Qz∗→zα(z∗,z)
于是,迭代就得到了序列,这个算法叫做Metropolis-Hastings算法:
定义随机矩阵:
Q = ( Q 11 Q 12 ⋯ Q 1 K ⋮ ⋮ ⋮ ⋮ Q k 1 Q k 2 ⋯ Q K K ) Q=\begin{pmatrix}Q_{11}&Q_{12}&\cdots&Q_{1K}\\\vdots&\vdots&\vdots&\vdots\\Q_{k1}&Q_{k2}&\cdots&Q_{KK}\end{pmatrix} Q=⎝⎜⎛Q11⋮Qk1Q12⋮Qk2⋯⋮⋯Q1K⋮QKK⎠⎟⎞
这个矩阵每一行或者每一列的和都是1.随机矩阵的特征值都小于等于1.假设只有一个特征值为 λ i = 1 \lambda_i=1 λi=1。于是在马尔科夫过程中:
q t + 1 ( x = j ) = ∑ i = 1 K q t ( x = i ) Q i j ⇒ q t + 1 = q t ⋅ Q = q 1 Q t q^{t+1}(x=j)=\sum\limits_{i=1}^Kq^t(x=i)Q_{ij}\\ \Rightarrow q^{t+1}=q^t\cdot Q=q^1Q^t qt+1(x=j)=i=1∑Kqt(x=i)Qij⇒qt+1=qt⋅Q=q1Qt
于是有:
q t + 1 = q 1 A Λ t A − 1 q^{t+1}=q^1A\Lambda^t A^{-1} qt+1=q1AΛtA−1
如果 m m m 足够大,那么, Λ m = d i a g ( 0 , 0 , ⋯ , 1 , ⋯ , 0 ) \Lambda^m=diag(0,0,\cdots,1,\cdots,0) Λm=diag(0,0,⋯,1,⋯,0),则: q m + 1 = q m q^{m+1}=q^{m} qm+1=qm ,则趋于平稳分布了。马尔可夫链可能具有平稳分布的性质,所以我们可以构建马尔可夫链使其平稳分布收敛于需要的概率分布(设计转移矩阵)。
在采样过程中,需要经历一定的时间(燃烧期/混合时间)才能达到平稳分布。但是MCMC方法有一些问题: