问题背景
很多时候,无法确定一个概率分布的具体密度函数,因而在对这种分布进行后续操作(例如,作为贝叶斯学派求后验概率)时难度很大,无法进行。这时候则需要对这种无法精确知道分布函数的概率进行近似处理成已知的概率分布,从而方便计算或操作。拉普拉斯近似便是一种简单且广泛应用的近似方法,并且是很多采样方法的基础思想。
拉普拉斯近似
该方法的目的是找到一组定义在连续变量变量上的高斯近似,假设任一单一连续变量z<script type="math/tex" id="MathJax-Element-17883">z</script>,假设分布p(z)<script type="math/tex" id="MathJax-Element-17884">p(z)</script>的定义为:
p(z)=1Zf(z)
<script type="math/tex; mode=display" id="MathJax-Element-17885">p(z)={1 \over Z }f(z)</script>其中
Z<script type="math/tex" id="MathJax-Element-17886">Z</script>是归一化系数,为
Z=∫f(z)dz<script type="math/tex" id="MathJax-Element-17887">Z=\int f(z)dz</script>(联系
softmax<script type="math/tex" id="MathJax-Element-17888">softmax</script>),
Z<script type="math/tex" id="MathJax-Element-17889">Z</script>是未知的。拉普拉斯方法的目的是寻找一个高斯分布
q(z)<script type="math/tex" id="MathJax-Element-17890">q(z)</script>来近似
p(z)<script type="math/tex" id="MathJax-Element-17891">p(z)</script>,它的中心位于
q(z)<script type="math/tex" id="MathJax-Element-17892">q(z)</script>的众数位置,即寻找一个点
z0<script type="math/tex" id="MathJax-Element-17893">z_{0}</script>使得
p′(z0)=0<script type="math/tex" id="MathJax-Element-17894">p^{'}(z_0)^=0</script>,也等价于:
df(z)dz|z=z0=0
<script type="math/tex; mode=display" id="MathJax-Element-17895">{df(z) \over dz}|_{z=z_0}=0</script>考虑高斯分布的密度函数形式,它的对数有着变量的二次形式,故
lnf(z)<script type="math/tex" id="MathJax-Element-17896">lnf(z)</script>进行泰勒展开有:
lnf(z)=lnf(z0)−12A(z−z0)2+Rn
<script type="math/tex; mode=display" id="MathJax-Element-17897">lnf(z)=lnf(z_0)-{1 \over 2}A(z-z_0)^2+R_n</script>其中
A=−d2dz2lnf(z)|z=z0
<script type="math/tex; mode=display" id="MathJax-Element-17898">A=-{d^2 \over dz^2}lnf(z)|_{z=z_0}</script>忽略余式
Rn<script type="math/tex" id="MathJax-Element-17899">R_n</script>,并在两边同时取指数有:
f(z)=f(z0)exp{−A2(z−z0)2}
<script type="math/tex; mode=display" id="MathJax-Element-17900">f(z)=f(z_0)exp\{-{A \over 2}(z-z_0)^2\}</script>对比标准高斯分布函数,可以得到归一化的高斯分布
q(z)<script type="math/tex" id="MathJax-Element-17901">q(z)</script>:
q(z)=(A2π)12exp{−A2(z−z0)2}
<script type="math/tex; mode=display" id="MathJax-Element-17902">q(z)=({A \over 2\pi})^{1 \over 2}exp\{-{A \over 2}(z-z_0)^2\}</script>从这个式子可以看见(1)最后的近似高斯与原先
p(z)<script type="math/tex" id="MathJax-Element-17903">p(z)</script>的归一化系数
Z<script type="math/tex" id="MathJax-Element-17904">Z</script>无关,(2)
A>0<script type="math/tex" id="MathJax-Element-17905">A>0</script>时近似才有定义。也就是说
z=z0<script type="math/tex" id="MathJax-Element-17906">z=z_0</script>处
p(z0)<script type="math/tex" id="MathJax-Element-17907">p(z_0)</script>具有波峰,对应
f(z0)<script type="math/tex" id="MathJax-Element-17908">f(z_0)</script>局部最大值,并且
f(z0)<script type="math/tex" id="MathJax-Element-17909">f(z_0)</script>的二阶导数小于0。
多维近似
将单变量的拉普拉斯近似进行推广,去近似M<script type="math/tex" id="MathJax-Element-17910">M</script>维空间上z<script type="math/tex" id="MathJax-Element-17911">\mathbf z</script>的概率分布p(z)=f(z)Z<script type="math/tex" id="MathJax-Element-17912">p(\mathbf z)={f(\mathbf z) \over \mathbf Z}</script>,这里z<script type="math/tex" id="MathJax-Element-17913">\mathbf z</script>和Z<script type="math/tex" id="MathJax-Element-17914">\mathbf Z</script>是向量,同理在驻点z0<script type="math/tex" id="MathJax-Element-17915">\mathbf z_0</script>有:
lnf(z)=lnf(z0)−12(z−z0)TA(z−z0)
<script type="math/tex; mode=display" id="MathJax-Element-17916">lnf(\mathbf z)=lnf(\mathbf z_0)-{1 \over 2}(\mathbf {z-z_0})^TA(\mathbf {z-z_0})</script>其中
A<script type="math/tex" id="MathJax-Element-17917">\mathbf A</script>是
M∗M<script type="math/tex" id="MathJax-Element-17918">M*M</script>的
Hessian<script type="math/tex" id="MathJax-Element-17919">Hessian</script>矩阵,定义为:
A=−∇∇lnf(z)|z=z0
<script type="math/tex; mode=display" id="MathJax-Element-17920">\mathbf A=-\nabla\nabla lnf(\mathbf z)|_{\mathbf {z=z_0}}</script>其中
∇<script type="math/tex" id="MathJax-Element-17921">\nabla</script>为梯度算子,同理,两边取指数有:
f(z)=f(z0)exp{−12(z−z0)TA(z−z0)}
<script type="math/tex; mode=display" id="MathJax-Element-17922">f(\mathbf z)=f( \mathbf z_0)exp\{-{1 \over 2}( \mathbf {z-z_0})^T \mathbf A (\mathbf{z-z_0})\}</script>最后考虑多维高斯分布形式,有:
q(z)=|A|122πM2exp{−12(z−z0)TA(z−z0)}=N(z|z0,A−1)
<script type="math/tex; mode=display" id="MathJax-Element-17923">q(z)={{|\mathbf A|}^{1 \over 2} \over {2\pi}^{M \over 2}}exp\{{-1 \over 2}(\mathbf z - \mathbf z_0)^T \mathbf A(\mathbf z- \mathbf z_0)\}=N(\mathbf z | \mathbf z_0, A^{-1})</script>同样,
A<script type="math/tex" id="MathJax-Element-17924">\mathbf A</script>需要是正定的。
归一化系数的近似
前面说到在进行拉普拉斯近似的时候,归一化系数Z<script type="math/tex" id="MathJax-Element-17925">Z</script>是不需要知道的,但在某些时候需要用到Z<script type="math/tex" id="MathJax-Element-17926">Z</script>,我们同样可以都它进行近似。因为:
Z=∫f(z)dz
<script type="math/tex; mode=display" id="MathJax-Element-17927">\mathbf Z=\int f(\mathbf z)d\mathbf z</script>利用前面的对
f(z)<script type="math/tex" id="MathJax-Element-17928">f(\mathbf z)</script>的泰勒展开,可得:
Z=f(z0)∫exp{−12}(z−z0)TA(z−z0)dz
<script type="math/tex; mode=display" id="MathJax-Element-17929">\mathbf Z=f(\mathbf z_0)\int exp\{-{1 \over 2}\}(\mathbf z - \mathbf z_0)^T \mathbf A(\mathbf z- \mathbf z_0)d\mathbf z</script>也就是:
Z=f(z0)2πM2A12
<script type="math/tex; mode=display" id="MathJax-Element-17930">\mathbf Z=f(\mathbf z_0){{2\pi}^{M \over 2} \over {\mathbf A}^{1 \over 2}}</script>这里从2式到3式使用了概率积分为1的性质,所以后面的积分是多维高斯密度函数中归一化系数的倒数。
总结
拉普拉斯近似只需要寻找到众数z0<script type="math/tex" id="MathJax-Element-17931">\mathbf z_0</script>,然后该点处的黑塞矩阵,z0<script type="math/tex" id="MathJax-Element-17932">\mathbf z_0</script>可以用优化算法得到,但往往在实际中,会存在多峰情况的分布,那么可以对不同的波峰进行拉普拉斯近似。在应⽤拉普拉斯⽅法时,真实概率分布的归⼀化常数Z<script type="math/tex" id="MathJax-Element-17933">\mathbf Z</script>不必事先知道。根据中⼼极限定理,我们可以预见模型的后验概率会随着观测数据点的增多⽽越来越近似于⾼斯分布,因此我们可以预见在数据点相对较多的情况下,拉普拉斯近似会更有⽤。
所有评论(0)