变分推断学习笔记(2)——一维高斯模型的例子
2014-11-13 20:58
127 查看
ref:http://www.crescentmoon.info/?p=745
举一个一元高斯模型的例子。假设我们有数据X={x1,…,xM},要推断平均值μ和精度τ(1/σ)的后验概率分布。
写出似然
p(X|μ,τ)=(τ2π)N/2exp{−τ2∑n=1N(xn−μ)2}(1)
其中μ,τ各自服从先验分布
p(μ|τ)=N(μ|μ,(λ0τ)−1)(2)
p(τ)=Gam(τ|a0,b0)(3)
其中Gam为Gamma分布(见备注1)。
好,我们现在假设q之间的分布都独立。
q(μ,τ)=qu(μ)qr(τ)(4)
对于qu(μ)我们有
lnq∗u(μ)=Er[lnp(X|μ,τ)+lnp(μ|τ)]+const=−E[τ]2{λ0(μ−u0)2+∑n=1N(xn−μ)2}+const(5)
我们把未知数μ的项加和起来,就可以看出q∗u(μ)恰好是个高斯分布 N(μ|uN,λ−1N),其中
uNλN=λ0u0+Nx¯λ0+N=(λ0+N)E[τ](6)
同样对于qr(τ),我们有
lnq∗r(τ)=Eu[lnp(X|μ,τ)+lnp(μ|τ)]+lnp(τ)+const=(a0−1)lnτ−boτ+12lnτ+N2lnτ−τ2Eu[∑n=1N(xn−μ)2+λ0(μ−u0)2]+const(7)
这里q∗r(τ)也恰好是个Gamma分布 Gam(τ|aN,bN),其中
aNbN=a0+N2=b0+12Eu[∑n=1N(xn−μ)2+λ0(μ−u0)2](8)
首先,要注意我们并未对qu(μ)或qr(τ)的最佳形式作出任何假设,它们就自然地形成了似然函数的形式(高斯分布)和它的先验分布形式(Gamma分布)。
然后可以看到这里qu(μ)与qr(τ)通过Er与Eu相互依赖。我们展开这些式子,使用高斯分布与Gamma分布的性质(见备注1)计算它们的期望:
E[τ|aN,bN]=aNbNE[μ|uN,λ−1N]=uNE[X2]=Var(X)+(E[X])2E[μ2|uN,λ−1N]=λ−1N+u2N(9)
将式子(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)
所以这时候循环依赖的对象变成了λN和bN。然后我们迭代计算这些值
利用x的值,计算aN和uN。
给λN赋一个初始值
利用λN,获得新的bN。
利用bN,获得新的λN。
反复迭代3,4步,直到收敛为止。
最后我们就得到了近似分布Q(Z)的所有超参数的值。
首先我们看到,之前这个lnp(X)(也就是似然)难求是因为Z未知,在我们这个例子里的具体表现为未知参数μ与τ之间存在耦合关系,即μ是由τ生成的(p(μ|τ)。由于原模型存在共轭先验,所以变分后验分布的因子函数形式也可以用同样的共轭结构。因为我们定义Q(Z)分布的目的是要获得tractable的分布,所以可以在原模型的分布上作小修改,只要斩断耦合的部分即可。(这部分论述可能有问题,还需要多看书才行)
所以我们假设q(μ)与q(τ)之间相互独立,即q(μ)的参数不受τ的控制。但它依旧是个高斯分布,q(τ)依旧是个Gamma分布,只是各自的参数未知。所以我们只要把下界看成这些分布的未知参数的函数形式,然后通过对各自参数的求导就能获得下界的极大值。(可能是因为指数家族的关系,未知参数的期望都有固定的函数形式,所以比较好求)
以之前为例,我们假设
q(μ)=N(μ|uN,λ−1N)q(τ)=Gam(τ|aN,bN)(11)
其中,aN,bN,uN,λ−1N均为未知参数。
写出变分下界
L=∫∫q(μ,τ)lnp(X,μ,τ)q(μ,τ)dudr=Eq[lnp(X,μ,τ)]−Eq[lnq(μ,τ)]=Eq[lnp(X|μ,τ)]+Eq[lnp(μ|τ)]+Eq[lnp(τ)]−Eq[lnq(μ)]−Eq[lnq(τ)](12)
其中
Eq[lnp(X|μ,τ)]=N2Er[lnτ]−τ2Eu[∑n=1N(xn−μ)2]Eq[lnp(μ|τ)]=12Er[lnτ]−τ2Eu[λ0(μ−u0)2]Eq[lnp(τ)]=(a0−1)Er[lnτ]−boEr[τ]Eq[lnq(μ)]=uNEq[lnp(τ)]=aNbN(13)
根据Gamma分布的性质,将消去式(13)中的期望,最后我们获得的式子将只包括aN,bN,uN,λ−1N这4个变量,分别对其求导,就可以得到每个参数的更新公式了(同式(10))。
备注:
1.Gamma分布
Gam(λ|a,b)=1Γ(a)baλa−1exp(−bλ)(14)
它的一些期望
E[λ]=abvar[λ]=ab2E[lnλ]=Ψ(a)−ln(b)(15)
其中Ψ(a)=ddalnΓ(a)
举一个一元高斯模型的例子。假设我们有数据X={x1,…,xM},要推断平均值μ和精度τ(1/σ)的后验概率分布。
写出似然
p(X|μ,τ)=(τ2π)N/2exp{−τ2∑n=1N(xn−μ)2}(1)
其中μ,τ各自服从先验分布
p(μ|τ)=N(μ|μ,(λ0τ)−1)(2)
p(τ)=Gam(τ|a0,b0)(3)
其中Gam为Gamma分布(见备注1)。
通用的估计方法
好,我们现在假设q之间的分布都独立。q(μ,τ)=qu(μ)qr(τ)(4)
对于qu(μ)我们有
lnq∗u(μ)=Er[lnp(X|μ,τ)+lnp(μ|τ)]+const=−E[τ]2{λ0(μ−u0)2+∑n=1N(xn−μ)2}+const(5)
我们把未知数μ的项加和起来,就可以看出q∗u(μ)恰好是个高斯分布 N(μ|uN,λ−1N),其中
uNλN=λ0u0+Nx¯λ0+N=(λ0+N)E[τ](6)
同样对于qr(τ),我们有
lnq∗r(τ)=Eu[lnp(X|μ,τ)+lnp(μ|τ)]+lnp(τ)+const=(a0−1)lnτ−boτ+12lnτ+N2lnτ−τ2Eu[∑n=1N(xn−μ)2+λ0(μ−u0)2]+const(7)
这里q∗r(τ)也恰好是个Gamma分布 Gam(τ|aN,bN),其中
aNbN=a0+N2=b0+12Eu[∑n=1N(xn−μ)2+λ0(μ−u0)2](8)
首先,要注意我们并未对qu(μ)或qr(τ)的最佳形式作出任何假设,它们就自然地形成了似然函数的形式(高斯分布)和它的先验分布形式(Gamma分布)。
然后可以看到这里qu(μ)与qr(τ)通过Er与Eu相互依赖。我们展开这些式子,使用高斯分布与Gamma分布的性质(见备注1)计算它们的期望:
E[τ|aN,bN]=aNbNE[μ|uN,λ−1N]=uNE[X2]=Var(X)+(E[X])2E[μ2|uN,λ−1N]=λ−1N+u2N(9)
将式子(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)
所以这时候循环依赖的对象变成了λN和bN。然后我们迭代计算这些值
利用x的值,计算aN和uN。
给λN赋一个初始值
利用λN,获得新的bN。
利用bN,获得新的λN。
反复迭代3,4步,直到收敛为止。
最后我们就得到了近似分布Q(Z)的所有超参数的值。
另一种估计方法
首先我们看到,之前这个lnp(X)(也就是似然)难求是因为Z未知,在我们这个例子里的具体表现为未知参数μ与τ之间存在耦合关系,即μ是由τ生成的(p(μ|τ)。由于原模型存在共轭先验,所以变分后验分布的因子函数形式也可以用同样的共轭结构。因为我们定义Q(Z)分布的目的是要获得tractable的分布,所以可以在原模型的分布上作小修改,只要斩断耦合的部分即可。(这部分论述可能有问题,还需要多看书才行)所以我们假设q(μ)与q(τ)之间相互独立,即q(μ)的参数不受τ的控制。但它依旧是个高斯分布,q(τ)依旧是个Gamma分布,只是各自的参数未知。所以我们只要把下界看成这些分布的未知参数的函数形式,然后通过对各自参数的求导就能获得下界的极大值。(可能是因为指数家族的关系,未知参数的期望都有固定的函数形式,所以比较好求)
以之前为例,我们假设
q(μ)=N(μ|uN,λ−1N)q(τ)=Gam(τ|aN,bN)(11)
其中,aN,bN,uN,λ−1N均为未知参数。
写出变分下界
L=∫∫q(μ,τ)lnp(X,μ,τ)q(μ,τ)dudr=Eq[lnp(X,μ,τ)]−Eq[lnq(μ,τ)]=Eq[lnp(X|μ,τ)]+Eq[lnp(μ|τ)]+Eq[lnp(τ)]−Eq[lnq(μ)]−Eq[lnq(τ)](12)
其中
Eq[lnp(X|μ,τ)]=N2Er[lnτ]−τ2Eu[∑n=1N(xn−μ)2]Eq[lnp(μ|τ)]=12Er[lnτ]−τ2Eu[λ0(μ−u0)2]Eq[lnp(τ)]=(a0−1)Er[lnτ]−boEr[τ]Eq[lnq(μ)]=uNEq[lnp(τ)]=aNbN(13)
根据Gamma分布的性质,将消去式(13)中的期望,最后我们获得的式子将只包括aN,bN,uN,λ−1N这4个变量,分别对其求导,就可以得到每个参数的更新公式了(同式(10))。
备注:
1.Gamma分布
Gam(λ|a,b)=1Γ(a)baλa−1exp(−bλ)(14)
它的一些期望
E[λ]=abvar[λ]=ab2E[lnλ]=Ψ(a)−ln(b)(15)
其中Ψ(a)=ddalnΓ(a)
相关文章推荐
- 变分推断学习笔记(2)——一维高斯模型的例子
- 【深度学习】笔记4_caffe第二个比较经典的[小图片]识别例子CIFAR_10的运行,网络模型的详解
- 【深度学习】笔记3_caffe自带的第一个例子,Mnist手写数字识别所使用的LeNet网络模型的详细解释
- 机器学习第四篇(stanford大学公开课学习笔记) —生成型学习算法之高斯判别分析模型和朴素贝叶斯方法
- LDA主题模型学习笔记3:变分推断(E-step)
- JavaScript学习笔记8--一个文字自动匹配的例子
- JavaScript学习笔记8--一个文字自动匹配的例子
- [ASP.NET学习笔记之三十]ASP.NET 2.0的代码隐藏和编译模型
- AppFuse学习笔记-模型层
- 【.NET 学习笔记】Chapter.01 CLR的执行模型
- 产品生成器学习笔记---产品模型
- MPEG4 & H.264学习笔记之三 ------ 图像模型(图像处理过程)
- XPath学习笔记 XPath数据模型
- ajax学习笔记二:javascript实现命名空间(ajax封装类的例子)
- JavaScript学习笔记8--一个文字自动匹配的例子
- [mfc学习笔记一]以一个CGdiObject类的绘图例子来看一下绘图操作
- Microsoft .NET 的企业解决方案模式 > Web 表示模式 > 模型-视图-控制器(学习笔记四)
- osworkflow学习笔记1-概念及例子
- MPEG4 & H.264学习笔记之二 ------ 视频编码基本概念及时域模型
- [CSS2盒模型]--div学习笔记一