小白都能读懂的Gibbs Sampling

本文深入探讨了Gibbs抽样算法的工作原理,详细解释了在二维场景下,如何通过沿着坐标轴进行转移来实现状态的更新,进而达到算法的收敛。文章通过具体的数学表达和概率转移矩阵,阐述了细致平稳条件的重要性,并提供了算法的实施步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Gibbs Sampling

假设二维场景下,状态(x, y)转移到(x’, y’),可以分为三种场景

  • 平行于y轴转移,如上图中从状态A转移到状态B
  • 平行于x轴转移,如上图中从状态A转移到状态C
  • 其他情况转移,如上图从状态A转移到状态D

A->B:

p(x1,y1)p(y2∣x1)=p(x1)p(y1∣x1)p(y2∣x1) p(x_{1},y_{1})p(y_{2}|x_{1}) = p(x_{1})p(y_{1}|x_{1})p(y_{2}|x_{1}) p(x1,y1)p(y2x1)=p(x1)p(y1x1)p(y2x1)

B->A:

p(x1,y2)p(y1∣x1)=p(x1)p(y2∣x1)p(y1∣x1) p(x_{1},y_{2})p(y_{1}|x_{1}) = p(x_{1})p(y_{2}|x_{1})p(y_{1}|x_{1}) p(x1,y2)p(y1x1)=p(x1)p(y2x1)p(y1x1)

即:
P(A)p(y2∣x1)=P(B)p(y1∣x1) P(A)p(y_{2}|x_{1}) = P(B)p(y_{1}|x_{1}) P(A)p(y2x1)=P(B)p(y1x1)
同理,对于场景二:
P(A)p(x2∣y1)=P(C)p(x1∣y1) P(A)p(x_{2}|y_{1}) = P(C)p(x_{1}|y_{1}) P(A)p(x2y1)=P(C)p(x1y1)
对于场景三,规定不允许转移
P(A)∗0=P(D)∗0 P(A) * 0 = P(D) * 0 P(A)0=P(D)0
实际上,从状态A转移到状态D可以通过一次场景一转移和一次场景二转移得到。所以即使规定A到D的转移概率为0,也满足A到D可以经过有限次转移达到。
于是,我们可以构造二维平面上任意两点之间的转移概率矩阵Q:

Q(A−>B)=p(yB∣x1)−−−xA=xB=x1 Q(A->B) = p(y_{B}|x_{1})---x_{A} = x_{B} = x_{1} Q(A>B)=p(yBx1)xA=xB=x1
Q(A−>C)=p(xC∣y1)−−−yA=yC=y1 Q(A->C) = p(x_{C}|y_{1})---y_{A} = y_{C} = y_{1} Q(A>C)=p(xCy1)yA=yC=y1
Q(A−>D)=0−−−其他 Q(A->D) = 0---其他 Q(A>D)=0
这里的yBy_{B}yB就是y2y_{2}y2,xCx_{C}xC就是x2x_{2}x2,由此可得:
p(A)Q(A−>B)=p(B)Q(B−>A) p(A)Q(A->B) = p(B)Q(B->A) p(A)Q(A>B)=p(B)Q(B>A)
p(A)Q(A−>C)=p(C)Q(C−>A) p(A)Q(A->C) = p(C)Q(C->A) p(A)Q(A>C)=p(C)Q(C>A)
对于这样的概率转移Q,很容易验证对于平面上任意两点X和Y,满足细致平稳条件:
p(X)P(X−>Y)=p(Y)P(Y−>X) p(X)P(X->Y) = p(Y)P(Y->X) p(X)P(X>Y)=p(Y)P(Y>X)

什么是细致平稳条件?

假设向量v:
v=[0.6,0.4] v = [0.6,0.4] v=[0.6,0.4]
和一个概率转移矩阵P:
P=[0.70.30,80.2] P = \begin{bmatrix} 0.7&0.3 \\ 0,8& 0.2 \end{bmatrix} P=[0.70,80.30.2]
当v与n个P相乘,n趋于无穷大时,发现最后得到的向量会收敛到一个稳定值:
lim⁡n−>∞vpn=[0.73,0.27] \lim_{n->\infty }vp^{n} = [0.73,0.27] n>limvpn=[0.73,0.27]
代码验证:

import numpy as np

v = np.array([0.6, 0.4])

P = np.array([[0.7, 0.3],[0.8, 0.2]])

for n in range(1000):
    v = np.dot(v, P)
    print v

Out:
...
[0.72727273 0.27272727]
[0.72727273 0.27272727]

细致平衡条件(Detailed Balance Condition):给定一个马尔科夫链,分布π和概率转移矩阵P,如果下面等式成立
πiPij=πjPji π_{i}P_{ij} = π_{j}P_{ji} πiPij=πjPji
则此马尔科夫链具有一个平稳分布(Stationary Distribution)π

回到上面,直观理解就是从X点走到Y点,需要沿着坐标轴轮换着走若干步,其路径就是一条折线
最后这个二维空间的马氏链会收敛到平稳分布p(x,y)

最后,Gibbs Sampling算法的大概流程

  • 随机初始化X0=x0X_{0}=x_{0}X0=x0,Y0=y0Y_{0}=y_{0}Y0=y0
  • 对t=0,1,2,…,循环采样
    1、yt+1y_{t+1}yt+1 ~ p(y|x_{t})
    2、xt+1x_{t+1}xt+1 ~ p(x|y_{t+1})

马氏链的转换就是轮换着沿着x轴、y轴不断走折线,得到样本(x0,y0),(x0,y1),(x1,y1),(x1,y2),...,(x_{0},y_{0}),(x_{0},y_{1}),(x_{1},y_{1}),(x_{1},y_{2}),...,(x0,y0),(x0,y1),(x1,y1),(x1,y2),...,直到马氏链收敛,也就是平稳。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值