本系列分为三部分:
LDA基本概念
LDA求解之Gibbs采样
LDA求解之变分推断EM算法
该篇为第二部分:LDA求解之Gibbs采样
对于Gibbs采样不了解的可以参考这里
本文只包括思路,具体的数学推导可以参考刘建平老师的博客
回顾LDA模型
Gibbs 采样思路
α , η \alpha, \eta α,η 是已知的先验输入,目标是得到各个 z d n , w d n z_{d n}, w_{d n} zdn,wdn 对应的整体 z ⃗ , w ⃗ \vec{z}, \vec{w} z,w 的概率分布,即文档主题的分布和主题词的分布。
由于我们是采用Gibbs采样法,则对于要求的目标分布,我们需要得到对应分布各个特征维度的条件概率分布。
所有文档联合起来形成的词向量 w ⃗ \vec{w} w 是已知的数据, 不知道的是语料库主题 z ⃗ \vec{z} z 的分布。
假如可以先求出 w , z w, z w,z 的联合分布 p ( w ⃗ , z ⃗ ) p(\vec{w}, \vec{z}) p(w,z), 进而可以求出某一个词 w i w_{i} wi 对应主题特征 z i z_{i} zi 的条件概率分布 p ( z i = k ∣ w ⃗ , z ⃗ ¬ i ) p\left(z_{i}=k \mid \vec{w}, \vec{z}_{\neg i}\right) p(zi=k∣w,z¬i) 其中, z ⃗ ¬ i \vec{z}_{\neg i} z¬i 代表去掉下标为 i i i 的词对应的主题k后的主题分布。
有了条件概 率分布 p ( z i = k ∣ w ⃗ , z ⃗ ¬ i ) p\left(z_{i}=k \mid \vec{w}, \vec{z}_{\neg i}\right) p(zi=k∣w,z¬i), 就可以进行Gibbs采样,最终在Gibbs采样收敘后得到第 i i i 个词的主题。
得到了所有词的主题,那么通过统计所有词的主题计数, 就可以得到各个主题的词分布。
接着统计各个文档对应词的主题计数, 就可以得到各个文档的主题分布。
以上就是Gibbs采样算法求解LDA的思路。
主题和词的联合分布与条件分布的求解
我们的目标是先得到
w
,
z
w, z
w,z 的联合分布
p
(
w
⃗
,
z
⃗
)
p(\vec{w}, \vec{z})
p(w,z), 由于
p
(
w
⃗
,
z
⃗
)
∝
p
(
w
⃗
,
z
⃗
∣
α
⃗
,
η
⃗
)
=
p
(
z
⃗
∣
α
⃗
)
p
(
w
⃗
∣
z
⃗
,
η
⃗
)
p(\vec{w}, \vec{z}) \propto p(\vec{w}, \vec{z} \mid \vec{\alpha}, \vec{\eta})=p(\vec{z} \mid \vec{\alpha}) p(\vec{w} \mid \vec{z}, \vec{\eta})
p(w,z)∝p(w,z∣α,η)=p(z∣α)p(w∣z,η)
所以我们先求解
p
(
z
⃗
∣
α
⃗
)
p
(
w
⃗
∣
z
⃗
,
η
⃗
)
p(\vec{z} \mid \vec{\alpha}) p(\vec{w} \mid \vec{z}, \vec{\eta})
p(z∣α)p(w∣z,η)
p
(
z
⃗
∣
α
⃗
)
p(\vec{z} \mid \vec{\alpha})
p(z∣α)是所以文档的主题的条件分布,即
p
(
z
⃗
∣
α
⃗
)
=
Π
d
=
1
D
p
(
z
d
⃗
∣
α
⃗
)
p(\vec{z} \mid \vec{\alpha}) = \Pi_{d=1}^D p(\vec{z_d} \mid \vec{\alpha})
p(z∣α)=Πd=1Dp(zd∣α)
利用
α
→
θ
d
→
z
⃗
d
\alpha \rightarrow \theta_{d} \rightarrow \vec{z}_{d}
α→θd→zd 这组Dirichlet-multi共轭分布,可以得到
p
(
z
⃗
∣
α
⃗
)
=
∏
d
=
1
M
p
(
z
⃗
d
∣
α
⃗
)
=
∏
d
=
1
M
Δ
(
n
⃗
d
+
α
⃗
)
Δ
(
α
⃗
)
p(\vec{z} \mid \vec{\alpha})=\prod_{d=1}^{M} p\left(\vec{z}_{d} \mid \vec{\alpha}\right)=\prod_{d=1}^{M} \frac{\Delta\left(\vec{n}_{d}+\vec{\alpha}\right)}{\Delta(\vec{\alpha})}
p(z∣α)=d=1∏Mp(zd∣α)=d=1∏MΔ(α)Δ(nd+α)
Δ
(
α
)
\Delta({\alpha})
Δ(α)是归一化参数
如果在第d个文档中,第k个主题的词的个数为:
n
d
(
k
)
n_{d}^{(k)}
nd(k), 则对应的多项分布的计数可以表示为
n
⃗
d
=
(
n
d
(
1
)
,
n
d
(
2
)
,
…
n
d
(
K
)
)
\vec{n}_{d}=\left(n_{d}^{(1)}, n_{d}^{(2)}, \ldots n_{d}^{(K)}\right)
nd=(nd(1),nd(2),…nd(K))
利用 K K K 个主题与词的Dirichlet分布, 而对应的数据有 K K K 个主题编号的多项分布 ( η → β k → w ⃗ ( k ) ) \left(\eta \rightarrow \beta_{k} \rightarrow \vec{w}_{(k)}\right) (η→βk→w(k))
主题对应的词的条件分布
p
(
w
⃗
∣
z
⃗
,
η
⃗
)
p(\vec{w} \mid \vec{z}, \vec{\eta})
p(w∣z,η) 为
p
(
w
⃗
∣
z
⃗
,
η
⃗
)
=
∏
k
=
1
K
p
(
w
⃗
k
∣
z
⃗
,
η
⃗
)
=
∏
k
=
1
K
Δ
(
n
⃗
k
+
η
⃗
)
△
(
η
⃗
)
p(\vec{w} \mid \vec{z}, \vec{\eta})=\prod_{k=1}^{K} p\left(\vec{w}_{k} \mid \vec{z}, \vec{\eta}\right)=\prod_{k=1}^{K} \frac{\Delta\left(\vec{n}_{k}+\vec{\eta}\right)}{\triangle(\vec{\eta})}
p(w∣z,η)=k=1∏Kp(wk∣z,η)=k=1∏K△(η)Δ(nk+η)
在第k个主题中, 第v个词的个数为:
n
k
(
v
)
n_{k}^{(v)}
nk(v), 对应的多项分布的计数可以表示为
n
⃗
k
=
(
n
k
(
1
)
,
n
k
(
2
)
,
…
n
k
(
V
)
)
\vec{n}_{k}=\left(n_{k}^{(1)}, n_{k}^{(2)}, \ldots n_{k}^{(V)}\right)
nk=(nk(1),nk(2),…nk(V))
最终我们得到主题和词的联合分布
p
(
w
⃗
,
z
⃗
∣
α
⃗
,
η
⃗
)
p(\vec{w}, \vec{z} \mid \vec{\alpha}, \vec{\eta})
p(w,z∣α,η) 如下:
p
(
w
⃗
,
z
⃗
)
∝
p
(
w
⃗
,
z
⃗
∣
α
⃗
,
η
⃗
)
=
p
(
z
⃗
∣
α
⃗
)
p
(
w
⃗
∣
z
⃗
,
η
⃗
)
=
∏
d
=
1
M
Δ
(
n
⃗
d
+
α
⃗
)
Δ
(
α
⃗
)
∏
k
=
1
K
Δ
(
n
⃗
k
+
η
⃗
)
Δ
(
η
⃗
)
p(\vec{w}, \vec{z}) \propto p(\vec{w}, \vec{z} \mid \vec{\alpha}, \vec{\eta})=p(\vec{z} \mid \vec{\alpha}) p(\vec{w} \mid \vec{z}, \vec{\eta})=\prod_{d=1}^{M} \frac{\Delta\left(\vec{n}_{d}+\vec{\alpha}\right)}{\Delta(\vec{\alpha})} \prod_{k=1}^{K} \frac{\Delta\left(\vec{n}_{k}+\vec{\eta}\right)}{\Delta(\vec{\eta})}
p(w,z)∝p(w,z∣α,η)=p(z∣α)p(w∣z,η)=d=1∏MΔ(α)Δ(nd+α)k=1∏KΔ(η)Δ(nk+η)
有了联合分布就可以求Gibbs采样需要的条件分布
p
(
z
i
=
k
∣
w
⃗
,
z
⃗
¬
i
)
p\left(z_{i}=k \mid \vec{w}, \vec{z}_{\neg i}\right)
p(zi=k∣w,z¬i)
此时i是个二维下标,对应d篇文档中第n个词
对于下标
i
i
i,由于它对应的词
w
i
w_{i}
wi 是可以观察到的,因此我们有:
p
(
z
i
=
k
∣
w
⃗
,
z
⃗
¬
i
)
∝
p
(
z
i
=
k
,
w
i
=
t
∣
w
⃗
¬
i
,
z
⃗
¬
i
)
p\left(z_{i}=k \mid \vec{w}, \vec{z}_{\neg i}\right) \propto p\left(z_{i}=k, w_{i}=t \mid \vec{w}_{\neg i}, \vec{z}_{\neg i}\right)
p(zi=k∣w,z¬i)∝p(zi=k,wi=t∣w¬i,z¬i)
对于
z
i
=
k
,
w
i
=
t
z_{i}=k, w_{i}=t
zi=k,wi=t,只设计d篇文档和第k个主题两个Dirichlet-multi共轭分布
(
α
→
θ
d
→
z
⃗
d
)
(\alpha \rightarrow \theta_{d} \rightarrow \vec{z}_{d})
(α→θd→zd)
(
η
→
β
k
→
w
⃗
(
k
)
)
\left(\eta \rightarrow \beta_{k} \rightarrow \vec{w}_{(k)}\right)
(η→βk→w(k))
其余D+K-2组Dirichlet-multi共轭分布是独立的,从语料库中去除
z
i
=
k
,
w
i
=
t
z_{i}=k, w_{i}=t
zi=k,wi=t并不会改变D+K个Dirichlet-multi共轭结构
因此对于
θ
⃗
d
,
β
⃗
k
\vec{\theta}_{d}, \vec{\beta}_{k}
θd,βk, 对应的后验分布为:
p
(
θ
⃗
d
∣
w
⃗
¬
i
,
z
⃗
¬
i
)
=
Dirichlet
(
θ
⃗
d
∣
n
⃗
d
,
¬
i
+
α
⃗
)
p
(
β
⃗
k
∣
w
⃗
¬
i
,
z
⃗
¬
i
)
=
Dirichlet
(
β
⃗
k
∣
n
⃗
k
,
¬
i
+
η
⃗
)
\begin{array}{l} p\left(\vec{\theta}_{d} \mid \vec{w}_{\neg i}, \vec{z}_{\neg i}\right)=\text { Dirichlet }\left(\vec{\theta}_{d} \mid \vec{n}_{d, \neg i}+\vec{\alpha}\right) \\ p\left(\vec{\beta}_{k} \mid \vec{w}_{\neg i}, \vec{z}_{\neg i}\right)=\text { Dirichlet }\left(\vec{\beta}_{k} \mid \vec{n}_{k, \neg i}+\vec{\eta}\right) \end{array}
p(θd∣w¬i,z¬i)= Dirichlet (θd∣nd,¬i+α)p(βk∣w¬i,z¬i)= Dirichlet (βk∣nk,¬i+η)
p
(
z
i
=
k
∣
w
⃗
,
z
⃗
¬
i
)
∝
p
(
z
i
=
k
,
w
i
=
t
∣
w
⃗
¬
i
,
z
⃗
¬
i
)
=
E
Dirichlet
(
θ
d
)
(
θ
d
k
)
E
Dirichlet
β
k
)
(
β
k
t
)
\begin{aligned} p\left(z_{i}=k \mid \vec{w}, \vec{z}_{\neg i}\right) & \propto p\left(z_{i}=k, w_{i}=t \mid \vec{w}_{\neg i}, \vec{z}_{\neg i}\right)=\\E_{\text {Dirichlet }\left(\theta_{d}\right)}\left(\theta_{d k}\right) E_{\text {Dirichlet } \left.\beta_{k}\right)}\left(\beta_{k t}\right) \end{aligned}
p(zi=k∣w,z¬i)EDirichlet (θd)(θdk)EDirichlet βk)(βkt)∝p(zi=k,wi=t∣w¬i,z¬i)=
根据Dirichlet分布的期望公式:
E
Dirichlet
(
θ
d
)
(
θ
d
k
)
=
n
d
,
¬
i
k
+
α
k
∑
s
=
1
K
n
d
,
¬
i
s
+
α
s
E
Dirichlet
(
β
k
)
(
β
k
t
)
=
n
k
,
¬
i
t
+
η
t
∑
f
=
1
V
n
k
,
¬
i
f
+
η
f
\begin{array}{l} E_{\text {Dirichlet }\left(\theta_{d}\right)}\left(\theta_{d k}\right)=\frac{n_{d, \neg i}^{k}+\alpha_{k}}{\sum_{s=1}^{K} n_{d, \neg i}^{s}+\alpha_{s}} \\ E_{\text {Dirichlet }\left(\beta_{k}\right)}\left(\beta_{k t}\right)=\frac{n_{k, \neg i}^{t}+\eta_{t}}{\sum_{f=1}^{V} n_{k, \neg i}^{f}+\eta_{f}} \end{array}
EDirichlet (θd)(θdk)=∑s=1Knd,¬is+αsnd,¬ik+αkEDirichlet (βk)(βkt)=∑f=1Vnk,¬if+ηfnk,¬it+ηt
最终每个词对应主题的Gibbs采样的条件概率公式为:
p
(
z
i
=
k
∣
w
⃗
,
z
⃗
¬
i
)
=
n
d
,
¬
i
k
+
α
k
∑
s
=
1
K
n
d
,
¬
i
s
+
α
s
n
k
,
¬
i
t
+
η
t
∑
f
=
1
V
n
k
,
¬
i
f
+
η
f
p\left(z_{i}=k \mid \vec{w}, \vec{z}_{\neg i}\right)=\frac{n_{d, \neg i}^{k}+\alpha_{k}}{\sum_{s=1}^{K} n_{d, \neg i}^{s}+\alpha_{s}} \frac{n_{k, \neg i}^{t}+\eta_{t}}{\sum_{f=1}^{V} n_{k, \neg i}^{f}+\eta_{f}}
p(zi=k∣w,z¬i)=∑s=1Knd,¬is+αsnd,¬ik+αk∑f=1Vnk,¬if+ηfnk,¬it+ηt