概述
Gibbs sampling 详细分析
- 问题描述:
- 一个通俗的例子:
- 最简单的二维情况
- 重新思考这个过程 希望能拓展到n维
- 高维等价
问题描述:
在学习主题模型的时候遇到的采样问题,看了很多博客,我都不能理解,自己想了很久解决了这个问题。
已知:
p
(
x
i
∣
x
⃗
¬
i
)
(
i
=
1
,
.
.
.
,
n
)
p(x_{i}|vec x_{lnot i})quad(i =1,...,n)
p(xi∣x¬i)(i=1,...,n)
x
⃗
=
(
x
1
,
x
2
,
x
3
,
.
.
.
,
x
n
)
qquad quadvec x = (x_1,x_2,x_3,...,x_n)
x=(x1,x2,x3,...,xn)
x
⃗
¬
i
=
(
x
1
,
.
.
.
,
x
i
−
1
,
x
i
+
1
,
.
.
.
,
x
n
)
qquadquad vec x_{lnot i}=(x_1,...,x_{i-1},x_{i+1},...,x_n)
x¬i=(x1,...,xi−1,xi+1,...,xn)
求:
p
(
x
1
,
x
2
,
x
3
,
x
4
,
x
5
,
.
.
.
,
x
n
)
p(x_{1},x_{2},x_{3},x_{4},x_{5},...,x_{n})
p(x1,x2,x3,x4,x5,...,xn)联合分布的样本
一个通俗的例子:
PDD是个大老板,家里和公司里有各有100辆车,每天早晨上班会从家里出发去距离家2km的公司,他可以选开车或者走路,晚上回家也是一样有两种选择。小黑是一个私家侦探,统计了PDD早晨和晚上是否开车了信息,写在了一张纸上,结果他搞丢了。。。小黑现在只记得自己曾经心里默念的
如果他早晨是开车出去的,呢么晚上开车回来的概率是80%;如果早晨是走路去的,晚上走路的概率是80%;如果晚上是走路回来的,第二天早晨走路的概率是80%;如果晚上是开车回来的,第二天开车的概率是80%
他现在想预测PDD某天的行程,该怎么办?
呢就假设他一年前的第一天是开车去的,然后依照条件概率生成一年的序列,然后求每个情况的概率期望。
接下来看数学部分!!
最简单的二维情况
两个维度,每个维度两个取值。
Y Y Y / X X X | 0 | 1 | p ( X ) p(X) p(X) |
---|---|---|---|
0 | p 1 p_{1} p1 | p 2 p_{2} p2 | p 1 + p 2 p_1+p_2 p1+p2 |
1 | p 3 p_{3} p3 | p 4 p_{4} p4 | p 3 + p 4 p_3+p_4 p3+p4 |
p ( Y ) p(Y) p(Y) | p 1 + p 3 p_1+p_3 p1+p3 | p 2 + p 4 p_2+p4 p2+p4 |
p ( Y ∣ X ) p(Y|X) p(Y∣X) 条件概率分布
X X X / Y Y Y | 0 | 1 |
---|---|---|
0 | p 1 / ( p 1 + p 3 ) p_{1}/(p_{1}+p_{3}) p1/(p1+p3) | p 3 / ( p 1 + p 3 ) p_{3}/(p_{1}+p_{3}) p3/(p1+p3) |
1 | p 2 / ( p 2 + p 4 ) p_{2}/(p_{2}+p_{4}) p2/(p2+p4) | p 4 / ( p 2 + p 4 ) p_{4}/(p_{2}+p_{4}) p4/(p2+p4) |
p ( X ∣ Y ) p(X|Y) p(X∣Y) 条件概率分布
Y Y Y / X X X | 0 | 1 |
---|---|---|
0 | p 1 / ( p 1 + p 2 ) p_{1}/(p_{1}+p_{2}) p1/(p1+p2) | p 2 / ( p 1 + p 2 ) p_{2}/(p_{1}+p_{2}) p2/(p1+p2) |
1 | p 3 / ( p 3 + p 4 ) p_{3}/(p_{3}+p_{4}) p3/(p3+p4) | p 4 / ( p 3 + p 4 ) p_{4}/(p_{3}+p_{4}) p4/(p3+p4) |
将条件概率看作是
X
X
X和
Y
Y
Y状态的两个转移矩阵 (从
X
X
X中的
0
0
0状态或者
1
1
1状态转移到
Y
Y
Y中的
0
0
0状态或者
1
1
1状态)
p
(
Y
∣
X
)
p(Y|X)
p(Y∣X)就是
X
X
X转移到
Y
Y
Y的矩阵(要按照转移矩阵的要求写,行和等于1)定义为
A
Y
∣
X
A_{Y|X}
AY∣X
p
(
X
∣
Y
)
p(X|Y)
p(X∣Y)就是
Y
Y
Y转移到
X
X
X的矩阵(要按照转移矩阵的要求写,行和等于1)定义为
A
X
∣
Y
A_{X|Y}
AX∣Y
思考1:
X
X
X转移到
X
X
X的矩阵怎么写
答案:
X
X
X先转移到
Y
Y
Y,
Y
Y
Y在转移到
X
X
X 即:
A
X
∣
X
=
A
Y
∣
X
∗
A
X
∣
Y
A_{X|X}=A_{Y|X} * A_{X|Y}
AX∣X=AY∣X∗AX∣Y
举个例子:
A
(
x
=
0
∣
x
=
1
)
A_{(x=0|x=1)}
A(x=0∣x=1)代表从
X
X
X的
0
0
0状态转移到
X
X
X的
1
1
1状态的概率,按照
A
X
∣
X
=
A
Y
∣
X
∗
A
X
∣
Y
A_{X|X}=A_{Y|X} * A_{X|Y}
AX∣X=AY∣X∗AX∣Y计算结果对不对?
计算:
A
(
x
=
0
∣
x
=
1
)
=
A
(
y
=
0
∣
x
=
0
)
∗
A
(
x
=
1
∣
y
=
0
)
+
A
(
y
=
0
∣
x
=
0
)
∗
A
(
x
=
1
∣
y
=
0
)
A_{(x=0|x=1)}=A_{(y=0|x=0)}*A_{(x=1| y=0)}+A_{(y=0|x=0)}*A_{(x=1|y=0)}
A(x=0∣x=1)=A(y=0∣x=0)∗A(x=1∣y=0)+A(y=0∣x=0)∗A(x=1∣y=0)
理论上转移方式:
x
=
0
转
到
y
=
0
,
y
=
0
转
到
x
=
1
x=0转到y=0,y=0转到x=1
x=0转到y=0,y=0转到x=1
qquadqquadqquadquad
x
=
0
转
到
y
=
1
,
y
=
1
转
到
x
=
1
x=0转到y=1,y=1转到x=1
x=0转到y=1,y=1转到x=1
计算出的结果和转移方式是相对应的,这么算是对的。
思考2:
X
X
X转移
N
N
N步之后,当
N
N
N足够大,得到平稳分布,这个平稳分布是什么。
解答:
假设x的初始分布为
f
X
0
=
(
s
,
t
)
f_{X_{0}} = (s,t)
fX0=(s,t)
π
(
X
0
)
∗
(
A
X
∣
X
)
N
=
π
(
X
N
)
{pi}_{(X_{0})}*(A_{X|X})^N={pi}_{(X_{N})}
π(X0)∗(AX∣X)N=π(XN)
即可以推出:
π
(
X
0
)
∗
(
A
X
∣
X
)
N
=
π
(
X
0
)
∗
(
A
X
∣
X
)
N
−
1
A
X
∣
X
=
π
(
X
(
N
−
1
)
)
∗
(
A
X
∣
X
)
=
π
(
X
N
)
{pi}_{(X_{0})}*(A_{X|X})^N={pi}_{(X_{0})}*(A_{X|X})^{N-1}A_{X|X}={pi}_{(X_{(N-1)})}*(A_{X|X})={pi}_{(X_{N})}
π(X0)∗(AX∣X)N=π(X0)∗(AX∣X)N−1AX∣X=π(X(N−1))∗(AX∣X)=π(XN)
令马尔科夫链的平稳分布等于
π
{pi}
π,有:
π
x
(
N
−
1
)
=
π
x
N
=
π
qquad{pi}_{x_{(N-1)}} = {pi}_{x_{N}} ={pi}
πx(N−1)=πxN=π
即求解:
π
∗
(
A
X
∣
X
)
=
π
{pi}*(A_{X|X})={pi}
π∗(AX∣X)=π
已知这个方程有唯一解,因为平稳分布唯一(只考虑这个情况哦):
π
∗
(
A
X
∣
X
)
=
π
∗
(
A
X
∣
X
)
=
π
∗
(
A
Y
∣
X
)
∗
(
A
X
∣
Y
)
{pi}*(A_{X|X})={pi}*(A_{X|X})={pi}*(A_{Y|X})*(A_{X|Y})
π∗(AX∣X)=π∗(AX∣X)=π∗(AY∣X)∗(AX∣Y)
令:
π
=
(
p
1
+
p
3
,
p
2
+
p
4
)
{pi}=(p_{1}+p_{3},p_{2}+p_{4})
π=(p1+p3,p2+p4)
带进方程,检查是否相等。是相等的,非常合理。
这个平稳分布就是x的边缘分布。
思考3:在平稳分布后,对
X
X
X进行抽样得到就是x的边缘分布的样本,如果我想得到
(
x
,
y
)
(x,y)
(x,y)联合分布样本该怎么办?
解答:咱们观察一下,达到平稳分布时:
π
=
(
p
1
+
p
3
,
p
2
+
p
4
)
{pi}=(p_{1}+p_{3},p_{2}+p_{4})
π=(p1+p3,p2+p4),仅在这时候抽样,得到的是
X
X
X服从边缘分布
p
(
X
)
p(X)
p(X)的样本
接下来一步在做转移的时候:转移矩阵是
(
A
Y
∣
X
)
∗
(
A
X
∣
Y
)
(A_{Y|X})*(A_{X|Y})
(AY∣X)∗(AX∣Y)的乘积,我们把它拆成两步:
X
−
Y
−
X
X-Y-X
X−Y−X
在
X
X
X服从平稳分布的时候,抽样得到
x
x
x,思考这个样本
x
x
x根据
(
A
Y
∣
X
=
x
)
(A_{Y|X=x})
(AY∣X=x)概率转移抽样得到一个
y
y
y,呢么这一组
(
x
,
y
)
(x,y)
(x,y)服从什么分布????
p
(
X
=
x
)
∗
(
A
Y
=
y
∣
X
=
x
)
=
p
(
X
=
x
)
∗
p
(
Y
=
y
∣
X
=
x
)
=
p
(
X
=
x
,
Y
=
y
)
p(X=x)*(A_{Y=y|X=x})=p(X=x)*p(Y=y|X=x)=p(X=x,Y=y)
p(X=x)∗(AY=y∣X=x)=p(X=x)∗p(Y=y∣X=x)=p(X=x,Y=y)
这组
(
x
,
y
)
(x,y)
(x,y)就是联合分布的样本。
整理抽样过程
1.随机给定x
2.经过足够多的转移步数
N
N
N,得到
x
∼
平
稳
分
布
π
xthicksim平稳分布pi
x∼平稳分布π
3.此时,记录
x
x
x,在使用
A
Y
∣
X
A_{Y|X}
AY∣X进行
X
−
Y
X-Y
X−Y的转移变换,抽样得到
y
y
y,总共得到
(
x
,
y
)
(x,y)
(x,y)作为联合分布的样本。
y
y
y在依据进行
A
X
∣
Y
A_{X|Y}
AX∣Y进行状态转移,重复步骤3,可以得到服从联合分布的足够多的样本。
重新思考这个过程 希望能拓展到n维
重新定义原过程:给当初始值 x 0 x_0 x0,经过足够多的转移步数 N N N,达到平稳分布时抽样,得到 x n x_n xn,先经过 A ( Y ∣ X = x n + 1 ) A_{(Y|X=x_{n+1})} A(Y∣X=xn+1)抽样得到 y n + 1 y_{n+1} yn+1, y n + 1 y_{n+1} yn+1再经过 A ( X ∣ Y = y n + 1 ) A_{(X|Y=y_{n+1})} A(X∣Y=yn+1)抽样得到 x n + 1 x_{n+1} xn+1,完成又一次转移,这个状态记录 ( x n + 1 , y n + 1 ) (x_{n+1},y_{n+1}) (xn+1,yn+1),所以之后的每一次状态转移都可以到一组样本列 ( x n + i , y n + i ) (x_{n+i},y_{n+i}) (xn+i,yn+i)
如果将初始任意
x
0
x_0
x0换成初始给定任意的
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0),概率转移矩阵不变,采样过程发生了什么变化?
本质没有发生任何变化。只是单变量再变化,写成了双变量而已。
所以联合分布
(
x
,
y
)
(x,y)
(x,y)的概率转移矩阵就是
(
A
Y
∣
X
)
∗
(
A
X
∣
Y
)
(A_{Y|X})*(A_{X|Y})
(AY∣X)∗(AX∣Y)
继续将过程等价:从
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0)样本出发,得到符合分布的样本
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的状态转移方式是:(在纸上画出来就是),先沿着
x
x
x轴变化得到
y
i
y_i
yi,再沿着
y
y
y轴变化得到
x
i
x_i
xi。(其实就是将一切不沿着轴进行转移的矩阵等价为两次沿着坐标轴的转移,记住这个,gibbs采样就是找到了转移方式的特殊解,就是将一步转移等价成两步)
即:
(
x
i
,
y
i
)
→
(
x
i
+
1
,
y
i
+
1
)
=
(
x
i
,
y
i
)
→
(
x
i
,
y
i
+
1
)
→
(
x
i
+
1
,
y
i
+
1
)
quad (x_i,yi) to(x_{i+1},y_{i+1})=(x_i,yi)to (x_{i},y_{i+1})to(x_{i+1},y_{i+1})
(xi,yi)→(xi+1,yi+1)=(xi,yi)→(xi,yi+1)→(xi+1,yi+1)
等价到高纬:这就很容易了,沿着轴依照条件概率 p ( x i ∣ x ⃗ ¬ i ) p(x_{i}|vec x_{lnot i}) p(xi∣x¬i)采样就是了。
高维等价
已知:
p
(
x
i
∣
x
⃗
¬
i
)
(
i
=
1
,
.
.
.
,
n
)
p(x_{i}|vec x_{lnot i})quad(i =1,...,n)
p(xi∣x¬i)(i=1,...,n)
求:
p
(
x
1
,
x
2
,
x
3
,
x
4
,
x
5
,
.
.
.
,
x
n
)
p(x_{1},x_{2},x_{3},x_{4},x_{5},...,x_{n})
p(x1,x2,x3,x4,x5,...,xn)联合分布的样本
1.给定初始值
(
x
0
,
x
1
,
x
2
,
.
.
.
,
x
n
)
(x_0,x_1,x_2,...,x_n)
(x0,x1,x2,...,xn),定义概率转移矩阵为
∏
i
=
1
n
p
(
x
i
∣
x
¬
i
)
prodlimits_{i=1}^{n} p(x_{i}|x_{lnot i})
i=1∏np(xi∣x¬i)
2.达到平稳分布之后,每使用一次
p
(
x
i
∣
x
¬
i
)
(
i
=
1
,
.
.
.
,
n
)
p(x_{i}|x_{lnot i})quad(i =1,...,n)
p(xi∣x¬i)(i=1,...,n)记录一下
x
i
x_i
xi,整个一次转移结束得到
(
x
1
,
x
2
,
x
3
,
.
.
.
,
x
n
)
(x_1,x_2,x_3,...,x_n)
(x1,x2,x3,...,xn),重复步骤2。(为什么不直接使用
∏
i
=
1
n
p
(
x
i
∣
x
¬
i
prodlimits_{i=1}^{n} p(x_{i}|x_{lnot i}
i=1∏np(xi∣x¬i)直接一次转移而是一次次记录再转移一小步?因为不方便计算,存储。而且抽样得到样本并不覆盖全部情况。一次计算出来就浪费空间时间了。)
附上大家和我看过无数遍却不能理解的算法过程:
最后
以上就是迷路棒球为你收集整理的Gibbs sampling详细分析问题描述:一个通俗的例子:最简单的二维情况高维等价的全部内容,希望文章能够帮你解决Gibbs sampling详细分析问题描述:一个通俗的例子:最简单的二维情况高维等价所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复