变分推断学习笔记(2)——一维高斯模型的例子

变分推断学习笔记(2)——一维高斯模型的例子

变分推断学习笔记系列:

  1. 变分推断学习笔记(1)——概念介绍
  2. 变分推断学习笔记(2)——一维高斯模型的例子
  3. 变分推断学习笔记(3)——三硬币问题的变分推断解法

举一个一元高斯模型的例子。假设我们有数据 X={x1,,xM} X={x1,…,xM},要推断平均值 μ μ和精度 τ(1/σ) τ(1/σ)的后验概率分布。 写出似然

p(X|μ,τ)=(τ2π)N/2exp{τ2n=1N(xnμ)2}(1) (1)p(X|μ,τ)=(τ2π)N/2exp⁡{−τ2∑n=1N(xn−μ)2}
其中 μ,τ μ,τ各自服从先验分布
p(μ|τ)=N(μ|μ,(λ0τ)1)(2) (2)p(μ|τ)=N(μ|μ,(λ0τ)−1)
p(τ)=Gam(τ|a0,b0)(3) (3)p(τ)=Gam(τ|a0,b0)
其中Gam为Gamma分布(见备注1)。

通用的估计方法

好,我们现在假设 q q之间的分布都独立。

q(μ,τ)=qu(μ)qr(τ)(4) (4)q(μ,τ)=qu(μ)qr(τ)

对于 qu(μ) qu(μ)我们有

lnqu(μ)  =Er[lnp(X|μ,τ)+lnp(μ|τ)]+const=E[τ]2{λ0(μu0)2+n=1N(xnμ)2}+const(5) (5)ln⁡qu∗(μ)=Er[ln⁡p(X|μ,τ)+ln⁡p(μ|τ)]+const =−E[τ]2{λ0(μ−u0)2+∑n=1N(xn−μ)2}+const 

我们把未知数 μ μ的项加和起来,就可以看出 qu(μ) qu∗(μ)恰好是个高斯分布 N(μ|uN,λ1N) N(μ|uN,λN−1),其中

uNλN=λ0u0+Nx¯λ0+N=(λ0+N)E[τ](6) (6)uN=λ0u0+Nx¯λ0+NλN=(λ0+N)E[τ]

同样对于 qr(τ) qr(τ),我们有

lnqr(τ)=Eu[lnp(X|μ,τ)+lnp(μ|τ)]+lnp(τ)+const=(a01)lnτboτ+12lnτ+N2lnττ2Eu[n=1N(xnμ)2+λ0(μu0)2]+const(7) (7)ln⁡qr∗(τ)=Eu[ln⁡p(X|μ,τ)+ln⁡p(μ|τ)]+ln⁡p(τ)+const=(a0−1)ln⁡τ−boτ+12ln⁡τ+N2ln⁡τ−τ2Eu[∑n=1N(xn−μ)2+λ0(μ−u0)2]+const
这里 qr(τ) qr∗(τ)也恰好是个Gamma分布 Gam(τ|aN,bN) Gam(τ|aN,bN),其中
aNbN=a0+N2=b0+12Eu[n=1N(xnμ)2+λ0(μu0)2](8) (8)aN=a0+N2bN=b0+12Eu[∑n=1N(xn−μ)2+λ0(μ−u0)2]
首先,要注意我们并未对 qu(μ) qu(μ) qr(τ) qr(τ)的最佳形式作出任何假设,它们就自然地形成了似然函数的形式(高斯分布)和它的先验分布形式(Gamma分布)。 然后可以看到这里 qu(μ) qu(μ) qr(τ) qr(τ)通过 Er Er Eu Eu相互依赖。我们展开这些式子,使用高斯分布与Gamma分布的性质(见备注1)计算它们的期望:
E[τ|aN,bN]=aNbNE[μ|uN,λ1N]=uNE[X2]=Var(X)+(E[X])2E[μ2|uN,λ1N]=λ1N+u2N(9) (9)E[τ|aN,bN]=aNbNE[μ|uN,λN−1]=uNE[X2]=Var(X)+(E[X])2E[μ2|uN,λN−1]=λN−1+uN2
将式子(9)带入之前的式子(7)消去期望,最终得到:
uN=λ0u0+Nx¯λ0+NλN=(λ0+N)aNbNaN=a0+N+12bN=b0+12[(λ0+N)(λ1N+μ2N)2(λ0u0+n=1Nxn)uN+(n=1Nxn2)+λ0u02)](10) (10)uN=λ0u0+Nx¯λ0+NλN=(λ0+N)aNbNaN=a0+N+12bN=b0+12[(λ0+N)(λN−1+μN2)−2(λ0u0+∑n=1Nxn)uN+(∑n=1Nxn2)+λ0u02)]
所以这时候循环依赖的对象变成了 λN λN bN bN。然后我们迭代计算这些值

  1. 利用x的值,计算 aN aN uN uN
  2. λN λN赋一个初始值
  3. 利用 λN λN,获得新的 bN bN
  4. 利用 bN bN,获得新的 λN λN
  5. 反复迭代3,4步,直到收敛为止。

最后我们就得到了近似分布 Q(Z) Q(Z)的所有超参数的值。

另一种估计方法

首先我们看到,之前这个 lnp(X) ln⁡p(X)(也就是似然)难求是因为 Z Z未知,在我们这个例子里的具体表现为未知参数 μ μ τ τ之间存在耦合关系,即 μ μ是由 τ τ生成的( p(μ|τ) p(μ|τ)。由于原模型存在共轭先验,所以变分后验分布的因子函数形式也可以用同样的共轭结构。因为我们定义 Q(Z) Q(Z)分布的目的是要获得tractable的分布,所以可以在原模型的分布上作小修改,只要斩断耦合的部分即可。(这部分论述可能有问题,还需要多看书才行)

所以我们假设 q(μ) q(μ) q(τ) q(τ)之间相互独立,即 q(μ) q(μ)的参数不受 τ τ的控制。但它依旧是个高斯分布, q(τ) q(τ)依旧是个Gamma分布,只是各自的参数未知。所以我们只要把下界看成这些分布的未知参数的函数形式,然后通过对各自参数的求导就能获得下界的极大值。(可能是因为指数家族的关系,未知参数的期望都有固定的函数形式,所以比较好求)

以之前为例,我们假设

q(μ)=N(μ|uN,λ1N)q(τ)=Gam(τ|aN,bN)(11) (11)q(μ)=N(μ|uN,λN−1)q(τ)=Gam(τ|aN,bN)
其中, aN,bN,uN,λ1N aN,bN,uN,λN−1均为未知参数。

写出变分下界

L=q(μ,τ)lnp(X,μ,τ)q(μ,τ)dudr=Eq[lnp(X,μ,τ)]Eq[lnq(μ,τ)]=Eq[lnp(X|μ,τ)]+Eq[lnp(μ|τ)]+Eq[lnp(τ)]Eq[lnq(μ)]Eq[lnq(τ)](12) (12)L=∫∫q(μ,τ)ln⁡p(X,μ,τ)q(μ,τ)dudr=Eq[ln⁡p(X,μ,τ)]−Eq[ln⁡q(μ,τ)]=Eq[ln⁡p(X|μ,τ)]+Eq[ln⁡p(μ|τ)]+Eq[ln⁡p(τ)]−Eq[ln⁡q(μ)]−Eq[ln⁡q(τ)]
其中
Eq[lnp(X|μ,τ)]=N2Er[lnτ]τ2Eu[n=1N(xnμ)2]Eq[lnp(μ|τ)]=12Er[lnτ]τ2Eu[λ0(μu0)2]Eq[lnp(τ)]=(a01)Er[lnτ]boEr[τ]Eq[lnq(μ)]=uNEq[lnp(τ)]=aNbN(13) (13)Eq[ln⁡p(X|μ,τ)]=N2Er[ln⁡τ]−τ2Eu[∑n=1N(xn−μ)2]Eq[ln⁡p(μ|τ)]=12Er[ln⁡τ]−τ2Eu[λ0(μ−u0)2]Eq[ln⁡p(τ)]=(a0−1)Er[ln⁡τ]−boEr[τ]Eq[ln⁡q(μ)]=uNEq[ln⁡p(τ)]=aNbN
根据Gamma分布的性质,将消去式(13)中的期望,最后我们获得的式子将只包括 aN,bN,uN,λ1N aN,bN,uN,λN−1这4个变量,分别对其求导,就可以得到每个参数的更新公式了(同式(10))。

备注: 1.Gamma分布

Gam(λ|a,b)=1Γ(a)baλa1exp(bλ)(14) (14)Gam(λ|a,b)=1Γ(a)baλa−1exp⁡(−bλ)
它的一些期望
E[λ]=abvar[λ]=ab2E[lnλ]=Ψ(a)ln(b)(15) (15)E[λ]=abvar[λ]=ab2E[ln⁡λ]=Ψ(a)−ln⁡(b)
其中 Ψ(a)=ddalnΓ(a) Ψ(a)=ddaln⁡Γ(a)

分享到 Comments
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值