LDA主题模型系列(二)求解之Gibbs采样

本系列分为三部分:

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=kw ,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=kw ,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} αθdz d 这组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=1Mp(z dα )=d=1MΔ(α )Δ(n d+α )
Δ ( α ) \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) n d=(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) (ηβkw (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=1Kp(w kz ,η )=k=1K(η )Δ(n k+η )
在第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) n k=(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=1MΔ(α )Δ(n d+α )k=1KΔ(η )Δ(n k+η )
有了联合分布就可以求Gibbs采样需要的条件分布 p ( z i = k ∣ w ⃗ , z ⃗ ¬ i ) p\left(z_{i}=k \mid \vec{w}, \vec{z}_{\neg i}\right) p(zi=kw ,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=kw ,z ¬i)p(zi=k,wi=tw ¬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}) (αθdz d)
( η → β k → w ⃗ ( k ) ) \left(\eta \rightarrow \beta_{k} \rightarrow \vec{w}_{(k)}\right) (ηβkw (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(θ dw ¬i,z ¬i)= Dirichlet (θ dn d,¬i+α )p(β kw ¬i,z ¬i)= Dirichlet (β kn k,¬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=kw ,z ¬i)EDirichlet (θd)(θdk)EDirichlet βk)(βkt)p(zi=k,wi=tw ¬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=kw ,z ¬i)=s=1Knd,¬is+αsnd,¬ik+αkf=1Vnk,¬if+ηfnk,¬it+ηt

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值