首页摘要:
以前一直不能理解为什么特定分布可以通过均匀分布来进行采样,今天突然就想通了。俗语说得好,文章本天成,“妙手”偶得之。
为什么需要采样
采样是机器学习中,特别是生成模型中经常采用的一种技术。为什么要采样呢?因为很多时候我们需要获取的期望很难求得解析式时,利用蒙特卡洛模拟来近似求解是一种非常方便有效的方法。例如对于一个特定的服从$p(x)$分布的函数$f(x)$而言,其期望可以表示为:
对于复杂的$f(x)$或者$p(x)$而言,几无可能求出期望的表达式,这个时候就可以利用蒙特卡洛近似求解了:
也就是说,蒙特卡洛是从分布$p(x)$中采样到大量样本取平均来进行近似的,这里涉及到一个问题:如何从$p(x)$进行采样。要知道,计算机只能模拟均匀分布,一旦$p(x)$不是均匀分布就需要另寻他途进行模拟了。事实上,聪明的前人找到了如何基于均匀分布对复杂的$p(x)$进行采样。对于可逆的分布而言,可以利用可逆采样(inverse sampling)来进行采样。
可逆采样
假设$p(x)$的累积分布函数为:
那么 $y \in [0,1]$, $x \in [- \infty ,+\infty]$,其逆分布为 $x=F^{-1}(y)$ 。
定义在区间 $[0,1]$ 上的均匀分布可以用
来表示,假设其累积分布函数为:
那么可以推导出:
其中 $F^{-1}(y)\leq x$ 可以变化成 $y\leq F(x)$ 是因为 $F(x)$ 是单调递增函数。这样就完成了整个过程的推导。在实际应用中就可以利用均匀分布产生大量样本,进一步根据 $F(x)$ 的反函数转换成 $F(x)$ 的样本。样本越多,近似的精度越高。但是问题又来了,如果 $F(x)$ 不存在逆分布怎么办呢?这个时候就轮到重要性采样上场了,请见下一节。
重要性采样
在实际应用中, $F(x)$ 的分布是很难求出其反函数的,那么要怎么做才能实现基于均匀分布的采样呢?回顾我们的采样目的,无非是求出期望值:
那么我们可以找到一个累积分布函数存在反函数的的概率密度 $q(x)$ 来间接采样,进而实现相同的目的呢?答案是可行的。请看推导过程:
$ \frac{p(x)}{q(x)}$ 也被称为重要性权重,$q(x)$ 的选取可以按照使得它能够在 $f(x)*p(x)$ 取值大的地方尽可能多地采样,这样就能较好地逼近原函数期望。
结语
重要性采样在机器学习中具有非常多且重要的应用,这篇文章介绍的仅仅是基础,进阶可在解决具体问题时,设计针对问题特点的方案进行改进。