重要性采样
前言
离散型随机变量 X X X,我们可以通过以下方法求取其期望:
-
直接计算法,需要知道概率分布:
E ( X ) = ∑ x ∈ X [ p ( x ) ⋅ x ] \mathbb{E}(X)=\sum_{x\in X}\left[p(x)\cdot x\right] E(X)=x∈X∑[p(x)⋅x] -
采样计算,这时即使 X X X概率分布未知,依据大数定律,当采样次数够大时,仍然可以求取期望
E ( X ) = 1 n lim n → + ∞ ∑ i = 0 n − 1 x i \mathbb{E}(X)=\frac{1}{n}\lim_{n\to +\infty}\sum_{i=0}^{n-1} x_i E(X)=n1n→+∞limi=0∑n−1xi
连续型随机变量 X X X
- 直接计算,需要 f f f表达式
E ( X ) = ∫ x x ⋅ f ( x ) d x \mathbb{E}(X)=\int_x x\cdot f(x)dx E(X)=∫xx⋅f(x)dx
- 抽样(蒙特卡洛积分估计),这里不多做介绍
重要性采样
思想:如果已知随机变量 X ∼ p 0 X\sim p_0 X∼p0,在 p 0 p_0 p0下随机采样了一批数据 { x i } ∼ p 0 \{x_i\}\sim p_0 {xi}∼p0,现在要求随机变量 X ∼ p 1 X\sim p_1 X∼p1下的期望,则:
E X ∼ p 1 [ X ] = ∑ x p 1 ( x ) ⋅ x = ∑ x p 0 ( x ) p 1 ( x ) p 0 ( x ) ⋅ x = E X ∼ p 0 [ f ( X ) ] \mathbb{E}{X\sim p_1}[X]=\sum_x p_1(x)\cdot x=\sum_x p_0(x) \frac{p_1(x)}{p_0(x)}\cdot x=\mathbb{E}{X\sim p_0}[f(X)] EX∼p1[X]=x∑p1(x)⋅x=x∑p0(x)p0(x)p1(x)⋅x=EX∼p0[f(X)]
那么就有如下几个问题:
-
对于离散型随机变量,为什么 p 1 ( x ) p_1(x) p1(x)已知,不直接计算期望呢?
- 因为有时候我们已经根据 p 0 p_0 p0采样了一些数据,再用 p 1 p_1 p1重新采样计算一遍,会增加很多计算量。
- 因为有些时候不方便对 p 1 p_1 p1采样
- 在强化学习中,我们根据一个策略采样,通过重要性采样可以求出另一个策略的期望,是一种On Policy向Off Policy转换的思想。
-
对于连续型随机变量,为什么 p 1 ( x ) p_1(x) p1(x)已知,不直接计算期望呢?
理论上不可能完全求出概率密度函数,所以无法从理论上计算期望,只能估计。
例如,如果我们通过神经网络来表示 f f f,那么对任意的输入 x x x,我们都可以求出 f ( x ) f(x) f(x),但是这并不代表我们求出 f f f的函数表达式,更无法进一步求积分。我们只是能从数值上计算出 f ( x ) f(x) f(x),神经网络本身就是一个黑盒。
综上所述,重要性采样使得我们能够从behavior policy采样,然后去估计target policy的期望,从而使得On Policy的算法转换为Off Policy