重要性采样(Importance Sampling)

重要性采样(Importance Sampling)

蒙特卡洛积分

重要性采样是蒙特卡洛积分的一种采样策略,所以在介绍重要性采样之前我们先来介绍一下蒙特卡洛积分的一些基本内容。

首先,当我们想要求一个函数 f(x) 在区间 [a,b] 上的积分 \int_{a}^{b}f(x)dx 时有可能会面临一个问题,那就是积分曲线难以解析,无法直接求积分。这时候我们可以采用一种估计的方式,即在区间 [a,b] 上进行采样: \left\{ x_{1},x_{2}...,x_{n} \right\} ,值为 \left\{ f(x_{1} ),f(x_{2}),...,f(x_{n})\right\} \left\{ f(x_{1} ),f(x_{2}),...,f(x_{n})\right\}

如果采样是均匀的,即如下图所示:

均匀采样

那么显然可以得到这样的估计: \int_{a}^{b}f(x)dx=\frac{b-a}{N}\sum_{i=1}^{N}{f(x_{i})} ,在这里 \frac{b-a}{N} 可以看作是上面小长方形的底部的“宽”,而 f(x_{i}) 则是竖直的“长”。

重要性采样

上述的估计方法随着取样数的增长而越发精确,那么有什么方法能够在一定的抽样数量基础上来增加准确度,减少方差呢?这就需要我们人为地对抽样的分布进行干预,首先我们看下图:

很明显在圆形区域的函数值对积分的贡献比方形区域要大很多,所以我们可以在抽样的时候以更大的概率抽取圆形区域的样本,这样一来就能够提高估计的准确度。假设我们以分布 p(x) 在原函数上进行采样:

依照这个分布进行采样我们一定程度上可以使得在原函数对积分贡献大的区域获得更多的采样机会。但这时我们不能对 \left\{ f(x_{1} ),f(x_{2}),...,f(x_{n})\right\} 进行简单的求和平均来获得估计值,因为此时采样不是均匀分布的,小矩形的“宽”并不等长,所以我们要对其进行加权,这个权重就是重要性权重

在得到重要性权重之前我们要重新思考一个问题:为什么我们要引入一个新的分布 p(x)

原因就是原函数 f(x) 也许本身就是定义在一个分布之上的,我们定义这个分布为 \pi(x) ,我们无法直接从 \pi(x) 上进行采样,所以另辟蹊径重新找到一个更加简明的分布 p(x) ,从它进行取样,希望间接地求出 f(x) 在分布 \pi(x) 下的期望。

搞清楚了这一点我们可以继续分析了。首先我们知道函数 f(x) 在概率分布 \pi(x) 下的期望为: E[f]=\int_{x}^{}\pi(x)f(x)dx ,当我们在 p(x) 上采样 \left\{ {x_{1},x_{2},...,x_{n}}\right\} 后可以估计 f 的期望: E[f]=\frac{1}{N}\sum_{i=1}^{N}{f(x_{i})}

我们可以对式子进行改写,即: \pi(x)f(x)=p(x)\frac{\pi(x)}{p(x)}f(x) ,所以我们可以得到:

\qquad \qquad \qquad \qquad E[f]=\int_{x}^{}p(x)\frac{\pi(x)}{p(x)}f(x)dx

这个式子我们可以看作是函数 \frac{\pi(x)}{p(x)}f(x) 定义在分布 p(x) 上的期望,当我们在 p(x) 上采样 \left\{ {x_{1},x_{2},...,x_{n}}\right\} 后可以估计 f 的期望E[f]=\frac{1}{N}\sum_{i=1}^{N}{\frac{\pi(x_{i})}{p(x_{i})}f(x_{i})}在这里 \frac{\pi(x_{i})}{p(x_{i})} 就是重要性权重。

编辑于 2019-04-17

文章被以下专栏收录