Collapsed Variational Inference(Collapsed变分推断)算法以LDA推导为例

本文作者:合肥工业大学 管理学院 钱洋 email:1563178220@qq.com 内容可能有不到之处,欢迎交流。
未经本人允许禁止转载

简介

Collapsed Variational Inference(CVI)来源于下面这篇文章:
Teh Y W, Newman D, Welling M. A collapsed variational Bayesian inference algorithm for latent Dirichlet allocation[C]//Advances in neural information processing systems. 2007: 1353-1360.
其联合了变分推断以及Collapsed Gibbs Sampling的思想。
Collapsed Variational Inference(CVI)最重要的思想是将一些隐变量积分掉。例如在LDA的推理中,积分掉的变量 θ \theta θ以及 ϕ \phi ϕ
在讲解Collapsed Variational Inference for LDA之前,首先回顾一下LDA的变分推断和Gibbs抽样。

LDA变分推断

LDA的变量以及参数的全概率分布可以表示为:
在这里插入图片描述
在LDA的变分推断中,ELBO可以表示如下:
在这里插入图片描述
其中, q ~ ( z , θ , ϕ ) \widetilde{q}\left ( z,\theta ,\phi \right ) q (z,θ,ϕ)为近似后验, H ( q ~ ( z , θ , ϕ ) ) H\left (\widetilde{q}\left ( z,\theta ,\phi \right ) \right ) H(q (z,θ,ϕ))为variational entropy,其可以表示为:
在这里插入图片描述
基于平均场定理有:
在这里插入图片描述
其中, γ ~ i j \widetilde{\gamma}_{ij} γ ij z i j z_{ij} zij对应的变分参数, α ~ j \widetilde{\alpha}_{j} α j θ j \theta_{j} θj对应的变分参数, β ~ k \widetilde{\beta}_{k} β k对应的是 ϕ k \phi_{k} ϕk的变分参数。
将ELBO的式子整理成各项期望的加减后,对各参数进行求导,令导数等于0,进而可以得到各参数的更新表达式。这里不作过多说明,详细可参考相关文章以及相关博客说明。
Inference Methods for Latent Dirichlet Allocation,Chase Geigle,2016
Study Notes on the Latent Dirichlet Allocation,Xugang Ye
https://blog.csdn.net/qy20115549/article/details/87247363
http://www.cnblogs.com/pinard/p/6873703.html
对应的三个变分参数表达式为:
在这里插入图片描述

LDA的Collapsed Gibbs Sampling

LDA的Collapsed Gibbs Sampling比较简单,这里直接给出主题分配的抽样公式:
在这里插入图片描述
也可将其表示成:
在这里插入图片描述
公式里面的 T T T和上面的 K K K是对应的。这里比较简单不作过多推导。

Collapsed Variational Bayesian Inference for LDA

主题模型中,包含的隐变量(latent variables)包括 z z z, θ \theta θ,和 ϕ \phi ϕ。在Collapsed Gibbs采样中,积分掉了 θ \theta θ ϕ \phi ϕ,进而对 z z z进行采样。Collapsed Variational Bayesian(CVB)融合了Gibbs采样以及变分推断的优点。
在CVB中,有两种方式处理参数,并且这两种方式得到的结果是等价的。第一种方式对联合概率分布中的一些隐变量进行积分,例如LDA模型中,需要对 θ \theta θ ϕ \phi ϕ进行积分,进而得到 z z z x x x的联合后验分布,如下面公式所示:
在这里插入图片描述
第二种方式是表达出 θ \theta θ ϕ \phi ϕ的联合后验,在给定的 z z z以及 x x x的情况下。例如,在LDA中,假设隐变量 z z z都是独立的,则有:
在这里插入图片描述
其中, γ ^ i j \widehat{\gamma} _{ij} γ ij为变分参数,则variational free energy可以表示为:
在这里插入图片描述
令:
q ^ ( θ , ϕ ∣ z ) = p ( θ , ϕ ∣ x , z , α , β ) \widehat{q}\left ( \theta ,\phi |z \right )=p\left ( \theta ,\phi|x,z,\alpha ,\beta \right ) q (θ,ϕz)=p(θ,ϕx,z,α,β)
即用真实后验表示,将这个式子带入到上面的式子(带入展开一下就能看到结果,较为简单)中,有:
在这里插入图片描述
看到这个公式,一切到变得简单了。完整的表达出这个公式,然后对 γ ^ i j k \widehat{\gamma} _{ijk} γ ijk求偏导,就可得到结果。

详细推导

敲公式费劲。。。。
E q ^ ( z ) [ − l o g p ( x , z ∣ α , β ) ] − H ( q ^ ( z ) ) = E q ^ ( z ) [ − l o g p ( x , z ∣ α , β ) ] − E q ^ ( z ) [ − l o g q ^ ( z ) ] E_{\widehat{q}\left ( z \right )}\left [ -logp\left ( x,z|\alpha ,\beta \right ) \right ]- \boldsymbol{H}\left ( \widehat{q}\left ( z \right ) \right )= E_{\widehat{q}\left ( z \right )}\left [ -logp\left ( x,z|\alpha ,\beta \right ) \right ] -E_{\widehat{q}\left ( z \right )}\left [ -log \widehat{q}\left ( z \right )\right ] Eq (z)[logp(x,zα,β)]H(q (z))=Eq (z)[logp(x,zα,β)]Eq (z)[logq (z)]
为了方便,这里把写成:
E q ^ ( z ) [ l o g p ( x , z ∣ α , β ) ] + H ( q ^ ( z ) ) = E q ^ ( z ) [ l o g p ( x , z ∣ α , β ) ] − E q ^ ( z ) [ l o g q ^ ( z ) ] E_{\widehat{q}\left ( z \right )}\left [ logp\left ( x,z|\alpha ,\beta \right ) \right ]+ \boldsymbol{H}\left ( \widehat{q}\left ( z \right ) \right )= E_{\widehat{q}\left ( z \right )}\left [ logp\left ( x,z|\alpha ,\beta \right ) \right ] -E_{\widehat{q}\left ( z \right )}\left [ log \widehat{q}\left ( z \right )\right ] Eq (z)[logp(x,zα,β)]+H(q (z))=Eq (z)[logp(x,zα,β)]Eq (z)[logq (z)]
相当于对这个公式求极值。
对于后面一项由期望公式有
E q ^ ( z ) [ l o g q ^ ( z ) ] = ∑ i ∑ j ∑ k q ( z d n = k ) l o g q ( z d n = k ) = ∑ i ∑ j ∑ k γ ^ i j k l o g γ ^ i j k E_{\widehat{q}\left ( z \right )}\left [ log \widehat{q}\left ( z \right )\right ]=\sum_{i}\sum_{j}\sum_{k}q\left ( z_{dn}=k \right )logq\left ( z_{dn}=k \right )=\sum_{i}\sum_{j}\sum_{k}\widehat{\gamma} _{ijk}log\widehat{\gamma} _{ijk} Eq (z)[logq (z)]=ijkq(zdn=k)logq(zdn=k)=ijkγ ijklogγ ijk
这里的 i j k ijk ijk实际表示的意思是第 i i i篇文档,第 j j j个单词,第 k k k个主题。

对于有约束条件的极值求解问题可使用拉格朗日乘法,这个在之前我的博客中有个小案例,博客地址为:
https://blog.csdn.net/qy20115549/article/details/80232561

E q ^ ( z ) [ l o g p ( x , z ∣ α , β ) ] − E q ^ ( z ) [ l o g q ^ ( z ) ] + ∑ i j λ i j ( ∑ k γ ^ i j k − 1 ) E_{\widehat{q}\left ( z \right )}\left [ logp\left ( x,z|\alpha ,\beta \right ) \right ] -E_{\widehat{q}\left ( z \right )}\left [ log \widehat{q}\left ( z \right )\right ] + \sum_{ij}\lambda _{ij}\left ( \sum_{k} \widehat{\gamma} _{ijk}-1\right ) Eq (z)[logp(x,zα,β)]Eq (z)[logq (z)]+ijλij(kγ ijk1)
= E q ^ ( z i j ) ( E q ^ ( z − i j ) [ l o g p ( x , z ∣ α , β ) ] ) − ∑ i ∑ j ∑ k γ ^ i j k l o g γ ^ i j k + ∑ i j λ i j ( ∑ k γ ^ i j k − 1 ) =E_{\widehat{q}\left ( z_{ij} \right )}\left ( E_{\widehat{q}\left ( z^{-ij} \right )}\left [ logp\left ( x,z|\alpha ,\beta \right ) \right ] \right ) -\sum_{i}\sum_{j}\sum_{k}\widehat{\gamma} _{ijk}log\widehat{\gamma} _{ijk} + \sum_{ij}\lambda _{ij}\left ( \sum_{k} \widehat{\gamma} _{ijk}-1\right ) =Eq (zij)(Eq (zij)[logp(x,zα,β)])ijkγ ijklogγ ijk+ijλij(kγ ijk1)
= ∑ k γ ^ i j k E q ^ ( z − i j ) [ l o g p ( x , z − i j , z i j ∣ α , β ) ] − ∑ i ∑ j ∑ k γ ^ i j k l o g γ ^ i j k + ∑ i j λ i j ( ∑ k γ ^ i j k − 1 ) =\sum_{k}\widehat{\gamma} _{ijk} E_{\widehat{q}\left ( z^{-ij} \right )}\left [ logp\left ( x,z^{-ij},z_{ij}|\alpha ,\beta \right ) \right ] -\sum_{i}\sum_{j}\sum_{k}\widehat{\gamma} _{ijk}log\widehat{\gamma} _{ijk} + \sum_{ij}\lambda _{ij}\left ( \sum_{k} \widehat{\gamma} _{ijk}-1\right ) =kγ ijkEq (zij)[logp(x,zij,zijα,β)]ijkγ ijklogγ ijk+ijλij(kγ ijk1)
针对这个式子,对 γ ^ i j k \widehat{\gamma} _{ijk} γ ijk求偏导有:
E q ^ ( z − i j ) [ l o g p ( x , z − i j , z i j ∣ α , β ) ] − l o g γ ^ i j k − 1 + λ i j E_{\widehat{q}\left ( z^{-ij} \right )}\left [ logp\left ( x,z^{-ij},z_{ij}|\alpha ,\beta \right ) \right ]-log\widehat{\gamma} _{ijk} -1 + \lambda _{ij} Eq (zij)[logp(x,zij,zijα,β)]logγ ijk1+λij
令其等于0得到论文中的结果(论文这里应该有笔误,少了log):
在这里插入图片描述
对于第一项由
在这里插入图片描述
则:
l o g p ( x , z ∣ α , β ) = − l o g ∑ j ∑ m = 0 n j ⋅ ⋅ − 1 ( K α + m ) + ∑ j ∑ k ∑ m = 0 n j k ⋅ − 1 l o g ( α + m ) − ∑ k ∑ m = 0 n ⋅ k ⋅ − 1 l o g ( W β + m ) log p\left ( x,z|\alpha ,\beta \right )=-log\sum_{j}\sum_{m=0}^{n_{j \cdot \cdot }-1}\left ( K\alpha +m \right )+\sum_{j}\sum_{k}\sum_{m=0}^{n_{jk \cdot}-1}log\left ( \alpha + m \right )-\sum_{k}\sum_{m=0}^{n_{ \cdot k \cdot }-1 }log\left ( W\beta +m \right ) logp(x,zα,β)=logjm=0nj1(Kα+m)+jkm=0njk1log(α+m)km=0nk1log(Wβ+m)
+ ∑ k ∑ w ∑ m = 0 n ⋅ k w − 1 l o g ( β + m ) + \sum_{k}\sum_{w}\sum_{m=0}^{n_{\cdot kw}-1}log\left ( \beta +m \right ) +kwm=0nkw1log(β+m)

待续。。。。明天写,有其他事

算法实现(Java)

开发的代码,未上传。

CVB其他相关论文

参考内容

Teh Y W, Newman D, Welling M. A collapsed variational Bayesian inference algorithm for latent Dirichlet allocation[C]//Advances in neural information processing systems. 2007: 1353-1360.
Collapsed Variational Inference for LDA,BT Thomas Yeo

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值