PRML读书笔记 第十一章 采样方法(1)
整本书的核心都是在知道样本以及假设先验概率分布的情况下,求后验概率分布问题,后验概率的主要用处则是用来计算期望,所以这里的话 E [ f ] = ∫ f ( z ) p ( z ) d z E[f]=\int f(z)p(z)dz E[f]=∫f(z)p(z)dz(在离散型变量中,我们可以把积分换成求和来进行计算),基于这一核心目标,我们提出了采样方法的概念,即通过一组样本 z ( l ) z^{(l)} z(l)来计算 f ^ = 1 L ∑ l = 1 L f ( z ( l ) ) \hat{f}=\frac{1}{L}\sum_{l=1}^Lf(z^{(l)}) f^=L1∑l=1Lf(z(l))来进行计算。此时 f ^ \hat{f} f^具有正确的均值和 p ( z ) p(z) p(z)下的方差,并且原则上,对于数量较少的样本可能会具有很高的精度,且其精度与z的维度无关。
常见的采样算法有基本采样算法,马尔科夫蒙特卡洛算法,吉布斯算法,切片采样算法,基于物理的哈密顿系统的动态系统采样算法等。本节主要概述其中的前四种算法,下一节将会概述后面的几种算法以及不同算法之间的对比差异。
基本采样算法
标准概率分布下的采样算法
这里主要说的是在标准概率分布下,如何将均匀分布(或某种分布)的随机数种子变为我们想要的分布的情况。
我们假设z是 ( 0 , 1 ) (0,1) (0,1)上均匀分布的随机数函数。那么有其概率密度函数 p ( z ) = 1 p(z)=1 p(z)=1,假设我们所要得到的概率分布是 p ( y ) p(y) p(y),我们现在所要做的是找一组 y y y和 z z z之间的变换。记做 p ( y ) = p ( z ) ∣ d z d y ∣ p(y)=p(z)|\frac{dz}{dy}| p(y)=p(z)∣dydz∣,我们不妨设y与z之间的变换为 z = h ( y ) = ∫ − ∞ y p ( y ^ ) d y ^ z=h(y)=\int_{-\infty}^yp(\hat{y})d\hat{y} z=h(y)=∫−∞yp(y^)dy^, y = h − 1 ( z ) y=h^{-1}(z) y=h−1(z),那么根据我们所需要的y的形式,反解出 h ( y ) h(y) h(y)即可,例如对于 p ( y ) = λ e x p ( − λ y ) p(y)=\lambda exp(-\lambda y) p(y)=λexp(−λy),代入上式,即得到 h ( y ) = 1 − e x p ( − λ y ) h(y)=1-exp(-\lambda y) h(y)=1−exp(−λy)
对于多元的问题,我们要将 ∣ d z d y ∣ |\frac{dz}{dy}| ∣dydz∣的情况换成一个Jacobian行列式。即 p ( y 1 , . . . , y M ) = p ( z 1 , . . . , z M ) ∣ ∂ ( z 1 , . . . , z n ) ∂ ( y 1 , . . . , y n ) ∣ p(y_1,...,y_M)=p(z_1,...,z_M)|\frac{\partial{(z_1,...,z_n)}}{\partial{(y_1,...,y_n)}}| p(y1,...,yM)=p(z1,...,zM)∣∂(y1,...,yn)∂(z1,...,zn)∣
标准概率分布下的拒绝采样方法
拒绝采样的引入主要是针对 p ( z ) p(z) p(z)的概率分布比较难以确定但是将其化成 p ( z ) = 1 Z p p ~ ( z ) p(z)=\frac{1}{Z_p}\tilde{p}(z) p(z)=Zp1p~(z)当中 p ~ ( z ) \tilde{p}(z) p~(z)比较好求的情况下,这个时候我们选择一个提议分布 k q ( x ) kq(x) kq(x)来对其进行近似,采样当中,首先在样本当中选择一个 z 0 z_0 z0,再在 k q ( z 0 ) kq(z_0) kq(z0)的范围内选择一个 u 0 u_0 u0此时
如果 u 0 > p