序
在机器学习中,经常遇到需要对复杂分布进行近似的情况。目前常用的近似算法主要有三种:拉普拉斯近似、变分近似、Gibbs采样。其中拉普拉斯近似算法是用一个高斯分布来近似原始分布,当原始分布比较简单的时候效果会较好。
目标:
用一个高斯分布近似一组连续变量上的概率密度分布。
一维空间:
变量
z
,假设分布为
p(z)=1Zf(z)
,其中
Z=∫f(z)dz
是归一化项。拉普拉斯算法的目标是找到一个高斯近似分布
q(z)
,
q(z)
以
p(z)
的峰为中心。第一步:找
p(z)
的一个峰
z0
,
p′(z0)=0
。第二步: 高斯分布的log是一个二次函数,所以对
lnf(z)
进行泰勒展开,以
z0
为中心:
lnf(z)≃lnf(z0)−12A(z−z0)2,A=−d2dz2lnf(x)∣∣∣z=z0
两边取指数:
f(z)≃f(z0)exp{−A2(z−z0)2}
归一化高斯函数:
q(z)=(A2π)1/2exp{−A2(z−z0)2}
扩展到多维空间:
近似分布
p(z)=f(z)/Z
。泰勒展开,以
z0=▽f(z)
为中心:
lnf(z)≃lnf(z0)−12(z−z0)⊤A(z−z0),A=−▽▽lnf(z)|z=z0
两边取指数:
f(z)≃f(z0)exp{−12(z−z0)⊤A(z−z0)}
归一化高斯函数:
q(z)=|A|1/2(2π)M/2exp{−12(z−z0)⊤A(z−z0)}=N(z|z0,A−1)