Correlated Topic model 的Gibbs sampling

本文详细介绍了Correlated Topic Model (CTM) 中的主题采样、文档主题分布参数采样及其先验分布的采样方法。针对CTM模型的非共轭特性,通过Gibbs采样解决了参数估计难题。

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

原文来自师兄的博客:http://blog.csdn.net/wjj5881005/article/details/53320577

1.关于经典LDA的 θ

自从David Blei 2003的一篇Latent Dirichlet Allocation文章横空出世之后,LDA模型就火遍全球了,无数的博士生就靠修改这个模型的图模型毕业了,呵呵,当然也包括我在内。在经典的LDA模型中,设置文档的主题分布是服从狄利克雷分布,即 θDir(α) 。这么做的主要原因是为了推导的方便,我们知道主题z是服从多项式分布的,即 zMult(θ) ,此时狄利克雷分布就和多项式构成了共轭分布。为什么便于推导,我们可以感受一下文献[1]中给出的关于 p(z⃗ |α)

p(z⃗ |α)=p(z⃗ |Θ)p(Θ|α)dΘ=[m=1Mk=1Kθnkmm,k][1Δ(α)m=1Mk=1Kθαk1m,k]dθ⃗ m=1Δ(α)m=1Mk=1Kθnkm+αk1m,kdθ⃗ m=m=1MΔ(n⃗ m+α⃗ )Δ(α⃗ ),n⃗ m={nkm}Kk=1,Δ(α)=[Γ(α)]KΓ(Kα)

这里写图片描述
上式中,很明显看到两个中括号中的形式非常相似,右边的中括号里的是狄利克雷分布,左边中括号里的是似然函数,是由多项式分布组织起来。这就是共轭分布的好处, 推理简单。然而,我们令 θ 服从狄利克雷分布的一个缺陷就是,不能建模各个主题的关系,这是由狄利克雷分布的性质导致的。下面我们我们介绍David Blei在2006年提出的一个新的模型Correlated Topic model。

2.Correlated Topic Model中的 θ

在实际中,主题之间并不是不相关的。例如一篇文档中如果有跟遗传学(genetics)有关的主题,那么非常有可能该篇文档也会涉及健康(health)以及疾病(disease)主题。而经典LDA中的狄利克雷分布,由于该分布自身的局限性,并不能很好的建模topics之间的correlation。为了解决这个问题,David Blei在2006年提出了Correlated Topic model(简称CTM)[2],该模型为了考虑主题之间的关系,摒弃了标准LDA模型中的先验狄利克雷分布,而是使logistic Normal分布,使用正态分布中的协方差矩阵 Σ 建模各个主题之间的关系。具体地一篇文档 d 的生成过程如下:

ηdN(μ,Σ),θkd=eηkdKj=1eηjd,n{1,...,Nd}:zdnMult(θd),wdnMult(Φzdn)

这里写图片描述
在文中,作者指出,该模型比LDA模型更具有表现力(expressive)。然而,问题来了,此时的先验与多项式分布并不是共轭分布,因此这会给模型求解带来了更大的困难(呵呵,这个世界总是不完美的)。Blei在文中使用的是近似推理(approximate techniques),也就是依赖于unwarranted mean-field assumptions的变分推理(variational inference)。此时,如果mean-field假设做的不好的话,那么近似的结果可能会令人unsatisfactory[3]。因此,近年来,有多位学者试图使用Gibbs sampling的方法来求解CTM模型。代表做有文献[3][4]。文献[4]中的作者还强调了:Gibbs sampling is more accurate than variational inference and better supports the construction of composite models。关于and后面一句我的理解是:我们如果对LDA模型进行各种改进,使用Gibbs sampling的话求解不会困难太多,但是如果使用变分的话,推理起来可能就难度特别大。本文主要参考文献[3]介绍一下,CTM模型的吉布斯抽样方法。

3. CTM的Gibbs sampling

首先我们给出标准LDA模型中关于主题 z 的抽样公式:

p(zdn=k|z⃗ n,wdn=t,w⃗ dn)=C(t)k,n+βtVj=1[C(j)k,n+βt]C(k)m,n+αk[Kk=1C(k)m+αk]1(1)

3.1 CTM中关于主题 z 的采样

按照文献[3],我们直接给出CTM模型中关于主题z的抽样公式,如下:

p(zdn=k|z⃗ n,wdn=t,w⃗ dn)=C(t)k,n+βtVj=1[C(j)k,n+βt]eηkdKj=1eηjd(2)

对比公式(1)和公式(2),我们发现区别就在于等式右边的第二项,二者都表示文档 d 中主题k所占的比例,但是因为所使用的先验不同,导致最终的式子不同。在标准LDA中,因为我们可以将 θ 积分掉(一般文献里称为integrated out),所以我们不需要对 θ 进行抽样,而在CTM中,因为是非共轭先验,所以 θ 积不掉,也就是 η 积不掉,因此我们需要对 η 进行抽样,这也就是使用Gibbs sampling求解CTM模型的核心。

3.2 CTM中关于文档主题分布参数 η 的后验分布

在文档 d 中观测到主题k的概率为:

p(zdn=k)=eηkdKj=1eηjd(3)

很明显,在给定 Z 的情况下,这是一个多项式逻辑回归,Z是多项式观测值(multinomial observations)。因此观测到所有文档中的主题的似然概率函数为:
p(Z|η)=d=1Dn=1NdeηzdndKj=1eηjd(4)

加上先验, η 的后验分布为:
p(η|Z,W)d=1Dn=1NdeηzdndKj=1eηjdN(ηd|μ,Σ)(5)

公式(5)就是一个贝叶斯逻辑回归模型。因此我们可以在现有文献中寻找求解多项式逻辑回归模型的方法来抽样 eta ,例如文献[4]中提出可以参考文献[5]中的方法。本文主要介绍文献[3]中年给出的方法。这里为了方便描述,我们只考虑文档 d (事实上,在给定Z的情况下,其它文档对文档 d 的主题分布参数ηkd并没有影响,因此我们可以treat documents seperately)。依据文献[6],可以得到在能够观测到 Z 以及ηkd的情况下 ηkd 的似然函数,如下所示:
L(ηkd|Zd,ηkd)=n=1Nd(eρkd1+eρkd)zkdn(11+eρkd)1zkdn=(eρkd)Ckd(1+eρkd)Nd(6)

其中 ρkd=ηkdζkd ; ζkd=log(jkeηjd) ;并且 Ckd=Ndn=1zkdn 表示文档 d 中属于主题k的单词的数量。因此,加上 ηkd 的先验分布,我们就可以得到 ηkd 的后验分布,如下所示:
p(ηkd|ηkd,Z,W)L(ηkd|ηkd,Z)N(ηkd|μkd,σ2k)(7)

其中 μkd=μkΛ1kkΛk,k(ηkdμk) 以及 σ2k=Λ1kk Λ=Σ1 是正态分布的precision matrix。

3.3 CTM中关于文档主题分布参数 η 的Gibbs sampling

上一小节给出了文档主题分布参数 ηkd 的后验分布。因为非共轭性,导致我们无法直接根据后验分布形式进行采样。一般情况下,我们可以采用MH(Metropolis-Hastings)算法对参数 ηkd 进行采样,但是MH算法会存在两个问题:一个是我们需要指定一个合理建议分布(proposal distribution),这个不太好办;另一个就是接受率的问题,如果接受率过低会导致最终的采样非常缓慢。另一个种根据此后验分布进行采样的思路就是使用Data augmentation技术。例如文献[4]中使用的数据增加方法使得我们可以截断高斯分布中进行采样,但是文献[3]指出,该方法依然涉及到复杂的accept/reject strategies。本文介绍文献[3]中提出的方法,它是一个不需要指定建议分布并且简单精确地抽样方法,方法核心是参考文献[7]。首先根据文献[7]我们可以给出如下定理。

定理1(Scale Mixture Representation).似然函数 L(ηkd|ηkd,Z) 可以表示为

(eρkd)Ckd(1+eρkd)Nd=12Ndeκkdρkd0eλkd(ρkd)22p(λkd|Nd,0)dλkd

其中 κkd=CkdNd/2 并且 p(λkd|Nd,0) 是Polya-Gamma分布 PG(Nd,0)

其中是 λkd 辅助变量。从该定理中,我们很容易可以发现 p(ηkd|ηkd,Z,W) 是公式(8)联合分布 p(ηkd,λkd|ηkd,Z,W) 的边缘分布。

p(ηkd,λkd|ηkd,Z,W)12Ndexp(κkdρkdλkd(ρkd)22)N(ηkd|μkd,σ2k)(8)

基于公式(8),我们就可以交替采样 ηkd λkd 。在给定 λkd 的情况下(即discarding辅助变量),我们就可以根据后验分布 p(ηkd|ηkd,Z,W) 得到采样样本。具体地, 对于 ηkd ,有:
p(ηkd|ηkd,Z,W,λkd)exp(κkdηkdλkd(ρkd)22)N(ηkd|μkd,σ2k)=N(γkd|μkd,(τkd)2)(9)

其中后验均值为 μkd=(τkd)2(σ2kμkd+κkd+λkdζkd) 并且后验分布的方差为 (τkd)2=(σ2k+λkd)1 。这时候,从一元正态分布中进行采样就变得极其简单了,一般都有现成的采样代码。
对于 λkd ,有:
p(λkd|η,Z,W,)exp(λkd(ρkd)22)p(λkd|Nd,0)=PG(λkd;Nd,ρkd)(10)

可以很容易看出, λkd 的后验分布依然是ploya-Gamma分布。剩下的就是关于如何从PG分布中进行采样了。文献[7]中给出了一种从PG中进行采样的方法。

定理2(PG分布的可加性)假如 xiPG(1,ρ) 并且 y=ni=1xi ,那么有 yPG(n,ρ)

因此从 PG(Nd,ρkd) 中采样就是从 PG(1,ρkd) 抽样 Nd 个样本然后想加就是我们需要的 λkd Nd 一般是文档 d 中单词的数量。因为Nd经常是非常大,这会导致抽样变得非常慢,所以也可以取 MNd 个样本来代替,一般效果也不会太大。文献[7]同时给出了如何高效地从 PG(1,ρkd) 中抽取样本。
虽然文献[7]中的方法已经很赞,但是这里我们要介绍的文献[3]中的方法更加地赞。根据中心极限定理,当 Nd 足够大时, y 服从正态分布。即有:

λkdN(μkd,(σkd)2)(11)

文献[8]中给出了 PG(a,c) 分布的矩母函数为

f(t)=E[exp(λkdt)]=cosha(c/2)cosha(c22t2)(12)

因此我们可以根据矩母函数求解 PG(a,c) 分布的均值和方差,并将此均值方差当做正态分布的均值和方差。
E[λkd]=limt0f(t)=a2ctanh(c2)(13)E[(λkd)2]=limt0f′′(t)=a((2+a)c2+ac2cosh(c)+2csinh(c))8c4cosh(c2)2(14)

根据 Var(λkd)=E[(λkd)2]E[λkd]2 就可以求得正态分布的近似方差。到这里,整个CTM的Gibbs推导就介绍完了,再下一小节我们介绍如何采样 η 的先验正态分布中的参数。

3.4 CTM中对先验分布 μ Σ 的采样

我们将 μ Σ 也看成是随机变量,并且再上面加共轭的Normal-Inverse-Wishart先验,即 π(μ,Σ)=NIW(μ0,ρ,κ,W) ,具体为:

Σ|κ,W1IW(κ,W1),μ|Σ,μ0,ρN(μ0,Σ/ρ)(15)

根据观测到的 η Z ,我们可以求得μ Σ 的后验分布,如下所示:
p(μ,Σ|η,Z,W)π(μ,Σ)dp(ηd|μ,Σ)=NIW(μ0,ρ,κ,W)(16)

具体地参数更新公式为: μ0=ρρ+Dμ0+Dρ+Dη¯ ρ=ρ+D κ=κ+D 并且 W=W+Q+ρDρ+D(η¯μ0)(η¯μ0)T ,其中 η¯=1Ddηd 以及 Q=d(ηdη¯)(ηdη¯)T
关于这四个参数的初始化可以设: ρ=κ=0.01D,μ0=0,andW=κI

全文终。

[1] Gregor Heinrich, Parameter estimation for text analysis
[2] David Blei, Correlated Topic Models
[3] Jianfei Chen, Jun Zhu, et al., Scalable Inference for Logistic-Normal Topic Models
[4] David Mimno et al., Gibbs Sampling for Logistic Normal Topic Models with Graph-Based Priors
[5] P. C. Groenewald & L. Mokgatlhe. Bayesian computation for logistic regression
[6] C. Holmes and L. Held. Bayesian auxiliary variable models for binary and multinomial regression
[7] N. G. Polson, J. G. Scott, and J. Windle. Bayesian inference for logistic models using Polya-Gamma latent variables
[8] N. G. Polson and J. G. Scott. Default bayesian analysis for multi-way tables:
a data-augmentation approach

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值