854 字
4 分钟
拉普拉斯近似
2025-08-18

拉普拉斯近似#

在机器学习中,很多时候无法确定一个概率分布的具体密度函数,因此在后续的操作上难度很大(比如求后验概率),为了简化这些问题我们需要对这种复杂分布进行近似,目前常用的近似方法有三种:拉普拉斯近似,变分近似和 Gibbs 采样。

拉普拉斯近似是使用一个高斯分布来近似复杂分布,求救过程也就是求正态分布的期望 μ\mu 和方差 σ2\sigma^2 或者精度 1σ2\frac{1}{\sigma^2},该方法是对连续变量的概率密度函数进行近似的。

一维变量的情况#

假设有一个变量 zz,他的分布为 p(z)p(z),定义如下:

p(z)=1Zf(z)p(z) = \frac{1}{Z} f(z)Z=f(z)dzZ = \int f(z)\,dz

这里的Z为归一化项,拉普拉斯近似就是想找一个正态分布q(z)q(z)来近似p(z)p(z),那么怎么找到这个近似?在拉普拉斯近似中,分布q(z)q(z)p(z)p(z)近似的定义为:q(z)q(z)p(z)p(z)的峰值相同,也就是俩期望相同。

首先我们观察单变量正态分布的形式

N(xμ,σ2)=1(2πσ2)1/2exp{12σ2(xμ)2}\mathcal{N}(x|\mu,\sigma^2) = \frac{1}{(2\pi\sigma^2)^{1/2}}\exp\left\{-\frac{1}{2\sigma^2}(x-\mu)^2\right\}

指数项中包含(xμ)2(x-\mu)^2,在正态分布q(z)q(z)中的均值μ\mu应该为p(z)p(z)的最大值点。

假设z0z_0p(z)p(z)的最大值点,则在z0z_0处的一阶导数为0:

dp(z)dzz=z0=0df(z)dzz=z0=0 \left.\frac{dp(z)}{dz}\right|_{z=z_0} = 0 \Leftrightarrow \left.\frac{df(z)}{dz}\right|_{z=z_0} = 0

借用lnf(z)\ln f(z)z0z_0处的二阶Taylor展开来构建指数中的平方项,如下:

lnf(z)lnf(z0)12A(zz0)2 \ln f(z) \simeq \ln f(z_0) - \frac{1}{2}A(z-z_0)^2 where: A=d2dz2lnf(z)z=z0 \text{where: } A = -\left.\frac{d^2}{dz^2}\ln f(z)\right|_{z=z_0}
NOTE

泰勒展开是用多项式来近似表示一个函数的方法。如果函数 f(x)f(x) 在点 aa 处具有足够的光滑性(即存在各阶导数),则可以在点 aa 附近将 f(x)f(x) 展开为无穷级数。

一般形式

f(x)=n=0f(n)(a)n!(xa)nf(x) = \sum_{n=0}^{\infty} \frac{f^{(n)}(a)}{n!}(x-a)^n

展开式写法

f(x)=f(a)+f(a)(xa)+f(a)2!(xa)2+f(a)3!(xa)3+f(x) = f(a) + f'(a)(x-a) + \frac{f''(a)}{2!}(x-a)^2 + \frac{f'''(a)}{3!}(x-a)^3 + \cdots

对式两边去掉ln\ln,则:

f(z)f(z0)exp{A2(zz0)2} f(z) \simeq f(z_0)\exp\left\{-\frac{A}{2}(z-z_0)^2\right\}
NOTE

上公式未归一化

对比上式中的指数项与正态分布中的指数项可以发现,如果A=1σ2A = \frac{1}{\sigma^2},则可得归一化的高斯函数q(z)q(z)为下式:

q(z)=(A2π)1/2exp{A2(zz0)2} q(z) = \left(\frac{A}{2\pi}\right)^{1/2}\exp\left\{-\frac{A}{2}(z-z_0)^2\right\}

也就是期望μ=z0\mu=z_{0},也就是f(z)f(z)的最大值点,精度1σ2=A\frac{1}{\sigma^2}=A,也就是ln(f(z))ln(f(z))z0z_0的二阶导

多维变量情况#

多维的推导与一维类似,目标就是找到有一个多维正态分布q(z)q(z)来近似这个分布p(z)p(z),多维高斯分布x公式如下

N(xμ,Σ)=1(2π)D/21Σ1/2exp{12(xμ)TΣ1(xμ)}\mathcal{N}(\mathbf{x}|\boldsymbol{\mu}, \boldsymbol{\Sigma}) = \frac{1}{(2\pi)^{D/2}} \frac{1}{|\boldsymbol{\Sigma}|^{1/2}} \exp\left\{-\frac{1}{2}(\mathbf{x}-\boldsymbol{\mu})^{\mathrm{T}}\boldsymbol{\Sigma}^{-1}(\mathbf{x}-\boldsymbol{\mu})\right\}

这里的D是x的维度,Σ\Sigma是协方差矩阵

NOTE

这里我们不难发现,和一维相比,多维的高斯分布吧(xμ)2(x-\mu)^2写成了矩阵表示

同样的,我们取在z0z_{0}(也就是f(z)f(z)的驻点)的二阶泰勒展开,得到

lnf(z)lnf(z0)12(zz0)TA(zz0)\ln f(\mathbf{z}) \simeq \ln f(\mathbf{z}_0) - \frac{1}{2}(\mathbf{z}-\mathbf{z}_0)^{\mathrm{T}}\mathbf{A}(\mathbf{z}-\mathbf{z}_0)

其中 A 是 MxM 的矩阵,是 lnf(z)lnf(z) 在驻点 z0z_{0} 的海森矩阵

A=lnf(z)z=z0\mathbf{A} = \left.\nabla\nabla\ln f(\mathbf{z})\right|_{\mathbf{z}=\mathbf{z}_0}

对于公式 5 两边去掉 ln\ln,则:

f(z)f(z0)exp{12(zz0)TA(zz0)}(6)f(\mathbf{z}) \simeq f(\mathbf{z}_0)\exp\left\{-\frac{1}{2}(\mathbf{z}-\mathbf{z}_0)^{\mathrm{T}}\mathbf{A}(\mathbf{z}-\mathbf{z}_0)\right\} \tag{6}

对比式 4 中的指数项与式 6 中的指数项可以发现,如果 A=Σ1\mathbf{A} = \boldsymbol{\Sigma}^{-1},则可得归一化的高斯函数 q(z)q(\mathbf{z}) 为下式:

q(z)=A1/2(2π)M/2exp{12(zz0)TΣ1(zz0)}q(\mathbf{z}) = \frac{A^{1/2}}{(2\pi)^{M/2}}\exp\left\{-\frac{1}{2}(\mathbf{z}-\mathbf{z}_0)^{\mathrm{T}}\boldsymbol{\Sigma}^{-1}(\mathbf{z}-\mathbf{z}_0)\right\}

总结#

  1. 求其分布函数的最大值 (mode),即,驻点。通常是通过一些数值优化算法求的。实际情况下会存在多峰情况的分布,那么可以对不同的波峰进行拉普拉斯近似。
  2. 求海森矩阵。
拉普拉斯近似
https://f1yingwhite.github.io/posts/数学/拉普拉斯近似/
作者
F1yingWhite
发布于
2025-08-18
许可协议
CC BY-NC-SA 4.0