本文作者:合肥工业大学 管理学院 钱洋 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)]=i∑j∑k∑q(zdn=k)logq(zdn=k)=i∑j∑k∑γ
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∑γ
ijk−1)
=
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
(z−ij)[logp(x,z∣α,β)])−i∑j∑k∑γ
ijklogγ
ijk+ij∑λij(k∑γ
ijk−1)
=
∑
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
(z−ij)[logp(x,z−ij,zij∣α,β)]−i∑j∑k∑γ
ijklogγ
ijk+ij∑λij(k∑γ
ijk−1)
针对这个式子,对
γ
^
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
(z−ij)[logp(x,z−ij,zij∣α,β)]−logγ
ijk−1+λ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∣α,β)=−logj∑m=0∑nj⋅⋅−1(Kα+m)+j∑k∑m=0∑njk⋅−1log(α+m)−k∑m=0∑n⋅k⋅−1log(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 )
+k∑w∑m=0∑n⋅kw−1log(β+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