拉普拉斯近似#
在机器学习中,很多时候无法确定一个概率分布的具体密度函数,因此在后续的操作上难度很大(比如求后验概率),为了简化这些问题我们需要对这种复杂分布进行近似,目前常用的近似方法有三种:拉普拉斯近似,变分近似和 Gibbs 采样。
拉普拉斯近似是使用一个高斯分布来近似复杂分布,求救过程也就是求正态分布的期望 μ 和方差 σ2 或者精度 σ21,该方法是对连续变量的概率密度函数进行近似的。
一维变量的情况#
假设有一个变量 z,他的分布为 p(z),定义如下:
p(z)=Z1f(z)Z=∫f(z)dz这里的Z为归一化项,拉普拉斯近似就是想找一个正态分布q(z)来近似p(z),那么怎么找到这个近似?在拉普拉斯近似中,分布q(z)和p(z)近似的定义为:q(z)和p(z)的峰值相同,也就是俩期望相同。
首先我们观察单变量正态分布的形式
N(x∣μ,σ2)=(2πσ2)1/21exp{−2σ21(x−μ)2}指数项中包含(x−μ)2,在正态分布q(z)中的均值μ应该为p(z)的最大值点。
假设z0是p(z)的最大值点,则在z0处的一阶导数为0:
dzdp(z)z=z0=0⇔dzdf(z)z=z0=0借用lnf(z)在z0处的二阶Taylor展开来构建指数中的平方项,如下:
lnf(z)≃lnf(z0)−21A(z−z0)2where: A=−dz2d2lnf(z)z=z0NOTE泰勒展开是用多项式来近似表示一个函数的方法。如果函数 f(x) 在点 a 处具有足够的光滑性(即存在各阶导数),则可以在点 a 附近将 f(x) 展开为无穷级数。
一般形式
f(x)=n=0∑∞n!f(n)(a)(x−a)n展开式写法
f(x)=f(a)+f′(a)(x−a)+2!f′′(a)(x−a)2+3!f′′′(a)(x−a)3+⋯
对式两边去掉ln,则:
f(z)≃f(z0)exp{−2A(z−z0)2}NOTE上公式未归一化
对比上式中的指数项与正态分布中的指数项可以发现,如果A=σ21,则可得归一化的高斯函数q(z)为下式:
q(z)=(2πA)1/2exp{−2A(z−z0)2}也就是期望μ=z0,也就是f(z)的最大值点,精度σ21=A,也就是ln(f(z))在z0的二阶导
多维变量情况#
多维的推导与一维类似,目标就是找到有一个多维正态分布q(z)来近似这个分布p(z),多维高斯分布x公式如下
N(x∣μ,Σ)=(2π)D/21∣Σ∣1/21exp{−21(x−μ)TΣ−1(x−μ)}这里的D是x的维度,Σ是协方差矩阵
NOTE这里我们不难发现,和一维相比,多维的高斯分布吧(x−μ)2写成了矩阵表示
同样的,我们取在z0(也就是f(z)的驻点)的二阶泰勒展开,得到
lnf(z)≃lnf(z0)−21(z−z0)TA(z−z0)其中 A 是 MxM 的矩阵,是 lnf(z) 在驻点 z0 的海森矩阵
A=∇∇lnf(z)∣z=z0对于公式 5 两边去掉 ln,则:
f(z)≃f(z0)exp{−21(z−z0)TA(z−z0)}(6)对比式 4 中的指数项与式 6 中的指数项可以发现,如果 A=Σ−1,则可得归一化的高斯函数 q(z) 为下式:
q(z)=(2π)M/2A1/2exp{−21(z−z0)TΣ−1(z−z0)}
- 求其分布函数的最大值 (mode),即,驻点。通常是通过一些数值优化算法求的。实际情况下会存在多峰情况的分布,那么可以对不同的波峰进行拉普拉斯近似。
- 求海森矩阵。