赞
踩
之前关于主题模型整理了《文本建模之Unigram Model,PLSA与LDA》与《再看LDA主题模型》两篇博客,以及针对PLSA的求解整理了博客《主题模型(3)——PLSA模型及其EM算法求解》,这一篇博客将继续整理LDA(Latent Dirichlet Allocation)模型的Gibbs Sample求解方法。
同样,首先回归下LDA模型的文档生成过程。我们知道,LDA在PLSA的基础上引入了贝叶斯框架,即参数不仅未知,而且取值不固定。 按照贝叶斯学派的思想,我们先给参数指定一个先验分布(prior),然后我们观察到一些样本,进而对参数的分布进行调整,得到参数的后验分布(posterior),参数先验分布与后验分布通过贝叶斯定理连接:
p
(
x
∣
y
)
=
p
(
x
,
y
)
p
(
y
)
=
p
(
y
∣
x
)
p
(
x
)
p
(
y
)
p(x|y)=\frac{p(x,y)}{p(y)}=\frac{p(y|x)p(x)}{p(y)}
p(x∣y)=p(y)p(x,y)=p(y)p(y∣x)p(x)
LDA模型将Dirichlet分布作为参数的先验分布,至于原因,是因为Dirichlet分布于多项式分布是一对共轭分布,保证了计算后验概率的便利。在给出LDA模型文档生成概率之前,我们先规定一些记号:
LDA通过模拟文档生成过程,找出文档最有可能的主题参数。 在生成文档时,首先根据主题参数的先验分布随机选取一个文档主题分布
θ
⃗
m
\vec{\theta}_{m}
θ
m与主题词分布
Φ
\Phi
Φ,然后从主题分布下生成主题,从主题对应的词分布下生成单词,因此第
m
m
m篇文档第
n
n
n个单词生成概率是
(1)
p
(
w
m
,
n
,
z
m
,
n
,
θ
⃗
m
,
ϕ
⃗
z
m
,
n
∣
α
⃗
,
β
⃗
)
=
p
(
w
m
,
n
∣
ϕ
⃗
z
m
,
n
)
p
(
z
m
,
n
∣
θ
⃗
m
)
p
(
θ
⃗
m
∣
α
⃗
)
p
(
ϕ
⃗
z
m
,
n
∣
β
⃗
)
p(w_{m,n},z_{m,n},\vec{\theta}_m,\vec{\phi}_{z_{m,n}}|\vec{\alpha},\vec{\beta})=p(w_{m,n}|\vec{\phi}_{z_{m,n}})p(z_{m,n}|\vec\theta_m)p(\vec{\theta}_m|\vec{\alpha})p(\vec{\phi}_{z_{m,n}}|\vec{\beta}) \tag 1
p(wm,n,zm,n,θ
m,ϕ
zm,n∣α
,β
)=p(wm,n∣ϕ
zm,n)p(zm,n∣θ
m)p(θ
m∣α
)p(ϕ
zm,n∣β
)(1)
上式中,
θ
⃗
m
\vec{\theta}_m
θ
m、
z
m
,
n
z_{m,n}
zm,n和
ϕ
⃗
z
m
,
n
\vec{\phi}_{z_{m,n}}
ϕ
zm,n都是隐变量,将
θ
⃗
m
\vec{\theta}_m
θ
m、
z
m
,
n
z_{m,n}
zm,n和
ϕ
⃗
z
m
,
n
\vec{\phi}_{z_{m,n}}
ϕ
zm,n积分掉,将得到全概率
p
(
w
m
,
n
∣
α
⃗
,
β
⃗
)
p(w_{m,n}|\vec{\alpha},\vec{\beta})
p(wm,n∣α
,β
)
(2)
p
(
w
m
,
n
∣
α
⃗
,
β
⃗
)
=
∑
z
m
,
n
∫
∫
p
(
w
m
,
n
∣
ϕ
⃗
z
m
,
n
)
p
(
z
m
,
n
∣
θ
⃗
m
)
p
(
θ
⃗
m
∣
α
⃗
)
p
(
ϕ
⃗
z
m
,
n
∣
β
⃗
)
d
ϕ
⃗
z
m
,
n
d
θ
⃗
m
p(w_{m,n}|\vec{\alpha},\vec{\beta})=\sum_{z_{m,n}}\int\int p(w_{m,n}|\vec{\phi}_{z_{m,n}})p(z_{m,n}|\vec\theta_m)p(\vec{\theta}_m|\vec{\alpha})p(\vec{\phi}_{z_{m,n}}|\vec{\beta})d\vec{\phi}_{z_{m,n}}d\vec{\theta}_m \tag 2
p(wm,n∣α
,β
)=zm,n∑∫∫p(wm,n∣ϕ
zm,n)p(zm,n∣θ
m)p(θ
m∣α
)p(ϕ
zm,n∣β
)dϕ
zm,ndθ
m(2)
重复上述单词生成过程,生成一篇文档;重复文档生成过程,产生整个文档集,文档集的生成概率为:
(3)
p
(
D
)
=
∏
m
=
1
M
∏
n
=
1
N
m
p
(
w
m
,
n
∣
α
⃗
,
β
⃗
)
=
∏
m
=
1
M
∏
n
=
1
N
m
∑
z
m
,
n
∫
∫
p
(
w
m
,
n
∣
ϕ
⃗
z
m
,
n
)
p
(
z
m
,
n
∣
θ
⃗
m
)
p
(
θ
⃗
m
∣
α
⃗
)
p
(
ϕ
⃗
z
m
,
n
∣
β
⃗
)
d
ϕ
⃗
z
m
,
n
d
θ
⃗
m
按照常理,最大化 p ( D ) p(D) p(D),我们就能求出主题参数,但是,上式包含无数隐变量的累加,即使给定一组主题参数,直接求出 p ( D ) p(D) p(D)都几乎不可能。好在计算机科学家们想到了通过随机模拟的方法(又称蒙特卡洛方法,Monte Carlo Simulation),生成分布的无数样本,用频率近似代替概率的方式解决概率求解的问题,Gibbs Sample便是其中的代表方法。
采样是从特定概率分布中抽取样本的过程,采样方法用于获得服从指定概率分布的样本。 因此要采样,我们就必须知道概率分布,但是,对于一个概率分布 p ( x ⃗ ) p(\vec{x}) p(x ),其分布可能非常复杂,无法直接求出其概率值,将导致采样遇到困难。此时就需要Gibbs Sample等更加复杂的能够work的采样方法。那Gibbs Sample是怎么操作的呢?
Gibbs Sample是马尔可夫链蒙特卡罗理论中用来近似求解多维概率分布(2个或多个随机变量的联合分布)的算法。Gibbs Sample形式化描述如下:对于一个复杂的概率分布 p ( x ⃗ ) p(\vec{x}) p(x ),我们没法求出其对应的概率分布,但如果我们能够求出在给定其他分量 x ¬ i x_{\neg i} x¬i情况下 x i x_i xi的概率 p ( x i ∣ x ¬ i ) p(x_i|x_{\neg i}) p(xi∣x¬i),那么我们可以根据 p ( x i ∣ x ¬ i ) p(x_i|x_{\neg i}) p(xi∣x¬i)采样每一个分量 x i x_i xi组成一个样本 x ⃗ \vec{x} x ,重复上述采样过程 T T T次,最后统计频率作为概率。 执行过程如下:
在引出Gibbs Sample前,需要先简要介绍下马尔可夫链及其平稳分布,马尔可夫链数学定义如下:
p
(
X
t
+
1
∣
X
t
,
X
t
−
1
,
⋯
 
)
=
p
(
X
t
+
1
∣
X
t
)
p(X_{t+1}|X_t,X_{t-1},\cdots)=p(X_{t+1}|X_t)
p(Xt+1∣Xt,Xt−1,⋯)=p(Xt+1∣Xt)
即当前状态只受到前一个状态的影响,而与其他状态无关。通常状态之间的转移概率用转移矩阵描述,如下图,展示了状态1,2,3之间的概率转移
其对应的状态转移矩阵如下:
P
=
[
0.65
0.28
0.07
0.15
0.67
0.18
0.12
0.36
0.52
]
P=
对于马尔可夫链状态转移矩阵,存在马氏链定理: 如果一个非周期马氏链具有状态转移矩阵 P P P,且它的任意两个状态是联通的(从任意一个状态能到其他任意状态),那么 lim n → ∞ P i j n \lim\limits_{n\to\infty} P_{ij}^n n→∞limPijn存在且与 i i i无关,记 lim n → ∞ P i j n = π ( j ) \lim\limits_{n\to\infty} P_{ij}^n=\pi(j) n→∞limPijn=π(j),我们有
其中,
π
=
[
π
(
1
)
,
π
(
2
)
,
⋯
 
,
π
(
j
)
,
⋯
 
]
,
∑
i
π
(
i
)
=
1
\pi = [\pi(1),\pi(2),\cdots,\pi(j),\cdots],\quad\sum \nolimits_i\pi(i)=1
π=[π(1),π(2),⋯,π(j),⋯],∑iπ(i)=1
称为马氏链的平稳分布。
上面1,2,3分别说明
如果我们从一个具体地初始状态
x
0
x_0
x0出发,时刻1所处状态
x
1
x_1
x1满足概率分布
P
i
P_i
Pi(
P
i
P_i
Pi是状态转移矩阵中状态
x
0
x_0
x0对应的转移概率),将其记为
π
1
(
x
)
\pi_{1}(x)
π1(x)。时刻2所处状态
x
2
x_2
x2满足概率分布
π
1
(
x
)
P
\pi_1(x)P
π1(x)P,将其记为
π
2
(
x
)
\pi_{2}(x)
π2(x)。以此类推,时刻n所处状态
x
n
x_n
xn满足概率分布
π
n
−
1
(
x
)
P
=
π
1
(
x
)
P
n
−
1
\pi_{n-1}(x)P=\pi_1(x)P^{n-1}
πn−1(x)P=π1(x)Pn−1,即
x
0
x
1
∼
π
1
(
x
)
=
P
i
⋯
x
n
∼
π
n
(
x
)
=
π
n
−
1
(
x
)
P
=
P
i
P
n
−
1
x
n
+
1
∼
π
n
+
1
(
x
)
=
π
n
(
x
)
P
=
P
i
P
n
x
n
+
2
∼
π
n
+
2
(
x
)
=
π
n
+
1
(
x
)
P
=
P
i
P
n
+
1
⋯
根据马氏链的收敛定理,假设 n n n时刻马氏链已经收敛到平稳分布 π ( x ) \pi(x) π(x),那么 x n + 1 , x n + 2 , ⋯ x_{n+1},x_{n+2},\cdots xn+1,xn+2,⋯都将是平稳分布 π ( x ) \pi(x) π(x)的样本。这不正是我们想要实现的从某个概率分布中采样的过程吗?
根据上面的推导,对于一个概率分布 p ( x ) p(x) p(x),如果我们能够构造一个转移矩阵为 P P P的马氏链,并且该马氏链的平稳分布恰好是 p ( x ) p(x) p(x),那么当马氏链收敛后,我们就得到了概率分布 p ( x ) p(x) p(x)的样本。 因为上述方法属于随机模拟方法的扩展,并且用到了马尔可夫链,因此这类方法被称为马尔可夫链蒙特卡罗方法(Markov Chain Monte Carlo,MCMC)。
基于马氏链做采样的关键是如何构造概率分布 p ( x ) p(x) p(x)对应的状态转移矩阵 P P P,直接找到这个矩阵 P P P通常很难做到,需要借助细致平稳条件(detailed balance condition)实现。
细致平稳条件的定义如下:如果非周期马氏链的转移矩阵
P
P
P和概率分布
p
(
x
)
p(x)
p(x)满足
p
(
i
)
P
(
i
,
j
)
=
p
(
j
)
P
(
j
,
i
)
for all
i
,
j
p(i)P(i,j)=p(j)P(j,i)\qquad \text{for all}\enspace i,j
p(i)P(i,j)=p(j)P(j,i)for alli,j
则概率分布 p ( x ) p(x) p(x)是马氏链转移矩阵 P P P的平稳分布。
也就是说我们只需要找到使概率分布满足细致平稳条件的矩阵
P
P
P。通常情况下,对于一个状态转移矩阵
Q
Q
Q,
p
(
i
)
q
(
i
,
j
)
 
/
=
p
(
j
)
q
(
j
,
i
)
p(i)q(i,j)\mathrlap{\,/}{=}p(j)q(j,i)
p(i)q(i,j)/=p(j)q(j,i),因此我们需要对转移矩阵
Q
Q
Q进行改造,使得
p
(
i
)
q
′
(
i
,
j
)
=
p
(
j
)
q
′
(
j
,
i
)
p(i)q'(i,j)=p(j)q'(j,i)
p(i)q′(i,j)=p(j)q′(j,i)。最直观的方法是引入一个
α
(
i
,
j
)
\alpha(i,j)
α(i,j),使得
p
(
i
)
q
(
i
,
j
)
α
(
i
,
j
)
=
p
(
j
)
q
(
j
,
i
)
α
(
j
,
i
)
p(i)q(i,j)\alpha(i,j)=p(j)q(j,i)\alpha(j,i)
p(i)q(i,j)α(i,j)=p(j)q(j,i)α(j,i)
按照对称性,我们可以取
α
(
i
,
j
)
=
p
(
j
)
q
(
j
,
i
)
α
(
j
,
i
)
=
p
(
i
)
q
(
i
,
j
)
\alpha(i,j)=p(j)q(j,i)\\ \alpha(j,i)=p(i)q(i,j)
α(i,j)=p(j)q(j,i)α(j,i)=p(i)q(i,j)
此时,新的转移矩阵 q ′ ( i , j ) = q ( i , j ) α ( i , j ) q'(i,j)=q(i,j)\alpha(i,j) q′(i,j)=q(i,j)α(i,j),即 Q ′ = Q ⊙ α Q'=Q\odot\alpha Q′=Q⊙α,此处是矩阵的Hadamard乘积。直接从 Q ′ Q' Q′中采样还是难以实现,可以将 α \alpha α看作接受率,应用接受-拒绝采样得到分布的一系列样本。
分析上面的MCMC采样,由于接受率 α \alpha α的存在,导致算法效率不高;另一方面,更为致命的是,很多时候我们很难求出多维联合概率分布 p ( x ⃗ ) p(\vec{x}) p(x ),导致上面的算法无法work,这时就需要使用Gibbs Sample。
考虑由二维特征
(
x
,
y
)
(x,y)
(x,y)描述的状态,假设其概率分布为
p
(
x
,
y
)
p(x,y)
p(x,y),现在固定其中的
x
x
x,对于两个状态
A
(
x
1
,
y
1
)
A(x_1,y_1)
A(x1,y1)和
B
(
x
1
,
y
2
)
B(x_1,y_2)
B(x1,y2),根据概率公式:
p
(
x
1
,
y
1
)
p
(
y
2
∣
x
1
)
=
p
(
x
1
)
p
(
y
1
∣
x
1
)
p
(
y
2
∣
x
1
)
p
(
x
1
,
y
2
)
p
(
y
1
∣
x
1
)
=
p
(
x
1
)
p
(
y
2
∣
x
1
)
p
(
y
1
∣
x
1
)
p(x_1,y_1)p(y_2|x_1)=p(x_1)p(y_1|x_1)p(y_2|x_1)\\ 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,y1)p(y2∣x1)=p(x1)p(y1∣x1)p(y2∣x1)p(x1,y2)p(y1∣x1)=p(x1)p(y2∣x1)p(y1∣x1)
可得
(4)
p
(
x
1
,
y
1
)
p
(
y
2
∣
x
1
)
=
p
(
x
1
,
y
2
)
p
(
y
1
∣
x
1
)
p(x_1,y_1)p(y_2|x_1)=p(x_1,y_2)p(y_1|x_1) \tag 4
p(x1,y1)p(y2∣x1)=p(x1,y2)p(y1∣x1)(4)
其中,因为
A
,
B
A,B
A,B两状态的
x
x
x特征相同,因此从
A
A
A状态转移到
B
B
B状态等价于在给定
x
1
x_1
x1时
y
2
y_2
y2的取值概率,即
p
(
y
2
∣
x
1
)
p(y_2|x_1)
p(y2∣x1),所以
p
(
y
2
∣
x
1
)
p(y_2|x_1)
p(y2∣x1)表示了转移概率
p
(
A
→
B
)
p(A\to B)
p(A→B),
p
(
y
1
∣
x
1
)
p(y_1|x_1)
p(y1∣x1)表示了转移概率
p
(
B
→
A
)
p(B\to A)
p(B→A),所以上面等式(4)表达了
(5)
p
(
A
)
p
(
A
→
B
)
=
p
(
B
)
p
(
B
→
A
)
p(A)p(A\to B)=p(B)p(B\to A) \tag 5
p(A)p(A→B)=p(B)p(B→A)(5)
同理,固定特征
y
y
y,我们也会得到同样的等式,这表明在二维概率分布中,固定其中一维,使用条件分布
p
(
y
∣
x
)
p(y|x)
p(y∣x)作为状态之间的转移概率,那么任意两个状态之间的转移满足细致平稳条件。即构造如下状态转移矩阵
Q
(
A
→
B
)
=
p
(
y
B
∣
x
1
)
if
x
A
=
x
B
=
x
1
Q
(
A
→
C
)
=
p
(
x
C
∣
y
1
)
if
y
A
=
y
B
=
y
1
Q
(
A
→
D
)
=
0
else
如下图所示:
根据上面的状态转移矩阵,我们可以很容易的验证任意两个状态
X
,
Y
X,Y
X,Y,满足细致平稳条件:
p
(
X
)
Q
(
X
→
Y
)
=
p
(
Y
)
Q
(
y
→
X
)
p(X)Q(X\to Y)=p(Y)Q(y\to X)
p(X)Q(X→Y)=p(Y)Q(y→X)
因此,在二维平面中,马氏链轮换的沿着 x x x轴和 y y y轴转移,得到样本 ( x 0 , y 0 ) , ( x 1 , y 1 ) , ⋯ (x_0,y_0),(x_1,y_1),\cdots (x0,y0),(x1,y1),⋯,等到马氏链收敛后,最终得到的样本就是概率分布 p ( x , y ) p(x,y) p(x,y)的样本,上述过程就是二维Gibbs Sample算法。推广到多维分布,我们就得到了Gibbs Sample的一般形式。
回到我们的LDA模型,我们已经写出文档集的生成概率为:
p
(
D
)
=
∏
m
=
1
M
∏
n
=
1
N
m
p
(
w
m
,
n
∣
α
⃗
,
β
⃗
)
=
∏
m
=
1
M
∏
n
=
1
N
m
∑
z
m
,
n
∫
∫
p
(
w
m
,
n
∣
ϕ
⃗
z
m
,
n
)
p
(
z
m
,
n
∣
θ
⃗
m
)
p
(
θ
⃗
m
∣
α
⃗
)
p
(
ϕ
⃗
z
m
,
n
∣
β
⃗
)
d
ϕ
⃗
z
m
,
n
d
θ
⃗
m
这个概率直接求解几乎不可能。遇到困难,再看一下目标,能保证我们不迷失方向。
LDA模型的目标是:找出文档的主题参数,也就是文档中每个单词对应的主题,那我们是不是可以对上面的
p
(
D
)
p(D)
p(D)放松一下,求出
p
(
w
⃗
,
z
⃗
)
p(\vec{w},\vec{z})
p(w
,z
)的概率呢?
p
(
w
⃗
,
z
⃗
)
=
p
(
w
⃗
∣
z
⃗
,
β
⃗
)
p
(
z
⃗
∣
α
⃗
)
上式在博客《再看LDA主题模型》中已经分析过,其包含两个独立的过程:先生成文档每个位置对应的主题,然后根据主题生成每个位置的单词。
文档
m
m
m的主题生成概率
p
(
z
m
⃗
∣
α
⃗
)
p(\vec{z_m}|\vec{\alpha})
p(zm
∣α
)计算如下:
p
(
z
m
⃗
∣
α
⃗
)
=
∫
p
(
z
m
⃗
∣
θ
m
⃗
)
p
(
θ
m
⃗
∣
α
⃗
)
d
θ
m
⃗
=
∫
p
(
z
m
⃗
∣
θ
m
⃗
)
D
i
r
(
θ
m
⃗
∣
α
⃗
)
d
θ
m
⃗
=
∫
∏
k
=
1
K
θ
k
,
m
n
k
,
m
1
Δ
(
α
⃗
)
∏
k
=
1
K
θ
k
,
m
α
k
,
m
−
1
d
θ
m
⃗
=
1
Δ
(
α
⃗
)
∫
∏
k
=
1
K
θ
k
,
m
n
k
,
m
+
α
k
−
1
d
θ
m
⃗
=
Δ
(
n
m
⃗
+
α
⃗
)
Δ
(
α
⃗
)
主题
k
k
k下单词生成概率
p
(
w
k
⃗
∣
z
k
,
β
⃗
)
p(\vec{w_k}|z_k,\vec{\beta})
p(wk
∣zk,β
)计算如下:
p
(
w
k
⃗
∣
z
k
,
β
⃗
)
=
∫
p
(
w
k
⃗
∣
φ
k
⃗
)
p
(
φ
k
⃗
∣
β
⃗
)
d
φ
k
⃗
=
∫
p
(
w
k
⃗
∣
φ
k
⃗
)
D
i
r
(
φ
k
⃗
∣
z
k
,
β
⃗
)
d
φ
k
⃗
=
∫
∏
v
=
1
V
φ
v
,
k
n
v
,
k
1
Δ
(
β
⃗
)
∏
v
=
1
V
φ
v
,
k
n
v
,
k
d
φ
k
⃗
=
1
Δ
(
β
⃗
)
∫
∏
v
=
1
V
φ
v
,
k
n
v
,
k
+
β
v
−
1
d
φ
k
⃗
=
Δ
(
n
k
⃗
+
β
⃗
)
Δ
(
β
⃗
)
因此
p
(
w
⃗
,
z
⃗
)
=
p
(
w
⃗
∣
z
⃗
,
β
⃗
)
p
(
z
⃗
∣
α
⃗
)
=
∏
k
=
1
K
p
(
w
⃗
∣
z
⃗
,
β
⃗
)
∏
m
=
1
M
p
(
z
⃗
∣
α
⃗
)
=
∏
k
=
1
K
Δ
(
n
k
⃗
+
β
⃗
)
Δ
(
β
⃗
)
∏
m
=
1
M
Δ
(
n
m
⃗
+
α
⃗
)
Δ
(
α
⃗
)
有了联合概率,下面就需要求解条件概率
p
(
z
i
=
k
∣
w
⃗
,
z
⃗
¬
i
)
p(z_i=k|\vec{w},\vec{z}_{¬i})
p(zi=k∣w
,z
¬i),这里
i
i
i是指第
m
m
m篇文档的第
n
n
n个词。因为词
w
i
w_i
wi是可以观察到的,因此我们有:
p
(
z
i
=
k
∣
w
⃗
,
z
⃗
¬
i
)
∝
p
(
z
i
=
k
,
w
i
=
t
∣
w
⃗
¬
i
,
z
⃗
¬
i
)
=
∫
∫
p
(
z
i
=
k
,
w
i
=
t
,
θ
⃗
m
,
φ
⃗
k
∣
w
⃗
¬
i
,
z
⃗
¬
i
)
d
θ
⃗
m
d
φ
⃗
k
=
∫
∫
p
(
z
i
=
k
,
θ
⃗
m
∣
w
⃗
¬
i
,
z
⃗
¬
i
)
p
(
w
i
=
t
,
φ
⃗
k
∣
w
⃗
¬
i
,
z
⃗
¬
i
)
d
θ
⃗
m
d
φ
⃗
k
=
∫
p
(
z
i
=
k
,
θ
⃗
m
∣
w
⃗
¬
i
,
z
⃗
¬
i
)
d
θ
⃗
m
∗
∫
p
(
w
i
=
t
,
φ
⃗
k
∣
w
⃗
¬
i
,
z
⃗
¬
i
)
d
φ
⃗
k
=
∫
p
(
z
i
=
k
∣
θ
⃗
m
)
p
(
θ
⃗
m
∣
w
⃗
¬
i
,
z
⃗
¬
i
)
d
θ
⃗
m
∗
∫
p
(
w
i
=
t
∣
φ
⃗
k
)
p
(
φ
⃗
k
∣
w
⃗
¬
i
,
z
⃗
¬
i
)
d
φ
⃗
k
=
∫
p
(
z
i
=
k
∣
θ
⃗
m
)
D
i
r
(
θ
⃗
m
∣
n
⃗
m
,
¬
i
+
α
⃗
)
d
θ
⃗
m
∗
∫
p
(
w
i
=
t
∣
φ
⃗
k
)
D
i
r
(
φ
⃗
k
∣
n
⃗
k
,
¬
i
+
β
⃗
)
d
φ
⃗
k
=
∫
θ
m
,
k
D
i
r
(
θ
⃗
m
∣
n
⃗
m
,
¬
i
+
α
⃗
)
d
θ
⃗
m
∗
∫
φ
k
,
t
D
i
r
(
φ
⃗
k
∣
n
⃗
k
,
¬
i
+
β
⃗
)
d
φ
⃗
k
=
E
(
θ
m
,
k
)
∗
E
(
φ
k
,
t
)
上式正是Dirichlet分布的期望,对于其中任意一项
i
i
i,我们有:
E
(
p
k
)
=
∫
0
1
p
k
∗
Γ
(
∑
i
=
1
K
α
i
)
∏
i
=
1
K
Γ
(
α
i
)
∏
i
=
1
K
p
i
α
i
−
1
d
p
⃗
=
Γ
(
∑
i
=
1
K
α
i
)
∏
i
=
1
K
Γ
(
α
i
)
∫
0
1
∏
i
=
1
k
−
1
p
i
α
i
−
1
∗
p
k
α
k
∗
∏
i
=
k
+
1
K
p
i
α
i
−
1
d
p
⃗
=
Γ
(
∑
i
=
1
K
α
i
)
∏
i
=
1
K
Γ
(
α
i
)
∗
∏
i
=
1
k
−
1
Γ
(
α
i
)
∗
Γ
(
α
k
+
1
)
∗
∏
i
=
k
+
1
K
Γ
(
α
i
)
Γ
(
∑
i
=
1
k
−
1
α
i
+
(
α
k
+
1
)
+
∑
i
=
k
+
1
K
α
i
)
=
α
k
∑
k
=
1
K
α
k
因此
p
(
z
i
=
k
∣
w
⃗
,
z
⃗
¬
i
)
∝
E
(
θ
m
,
k
)
∗
E
(
φ
k
,
t
)
=
n
m
,
¬
i
(
k
)
+
α
k
∑
k
=
1
K
(
n
m
,
¬
i
(
k
)
+
α
k
)
∗
n
k
,
¬
i
(
t
)
+
β
t
∑
t
=
1
V
(
n
k
,
¬
i
(
t
)
+
β
t
)
p(z_i=k|\vec{w},\vec{z}_{¬i})\propto E(\theta_{m,k})*E(\varphi_{k,t})=\frac{n_{m,¬i}^{(k)}+\alpha_k}{\sum_{k=1}^K(n_{m,¬i}^{(k)}+\alpha_k)}*\frac{n_{k,¬i}^{(t)}+\beta_t}{\sum_{t=1}^V(n_{k,¬i}^{(t)}+\beta_t)}
p(zi=k∣w
,z
¬i)∝E(θm,k)∗E(φk,t)=∑k=1K(nm,¬i(k)+αk)nm,¬i(k)+αk∗∑t=1V(nk,¬i(t)+βt)nk,¬i(t)+βt
有了上式,我们就可以借助Gibbs Sample算法对概率分布进行采样,待算法收敛后,采样出的样本就是概率分布 p ( w ⃗ , z ⃗ ) p(\vec{w},\vec{z}) p(w ,z )的样本。通过采样我们得到了每个词的主题,统计各个主题下单词出现频率,就可以得到各个主题的词分布。同样的,统计每篇文档的主题频率,我们就得到了各个文档的主题分布。通常,我们取Gibbs Sample收敛后的 n n n个样本进行平均做参数估计。
LDA参数估计是Gibbs Sample的一个非常好的应用实例,本文主要总结了Gibbs Sample的工作原理以及LDA模型的Gibbs Sample求解步骤。
关于采样:
个人也是最近才开始深入了采样方法,欢迎指正,多多交流。
MCMC(一)蒙特卡罗方法
一文了解采样方法
深度学习中的采样以及采样算法
各领域中采样方式研究 (持续更新)
从随机过程到马尔科夫链蒙特卡洛方法
MCMC(三)MCMC采样和M-H采样
MCMC(四)Gibbs采样
文本主题模型之LDA(二) LDA求解之Gibbs采样算法
LDA数学八卦
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。