深度强化学习算法:PPO
1. Importance Sampling
先说一下什么是采样:对于一个随机变量,我们通常用概率密度函数来描述该变量的概率分布特性。具体来说,给定随机变量的一个取值,可以根据概率密度函数来计算该值对应的概率(密度)。反过来也可以根据概率密度函数提供的概率分布信息来生成随机变量的一个取值,这就是采样。
现在假设需要对一个变量 X 的值进行估计,这个变量在真实环境中有一个分布 p ;那么在这个分布下可以获取到它的采样值 x i {x_i} xi ,由于 x i 和 X x_i和X xi和X是同分布的,即 E [ x i ] = E [ X ] E[x_i]=E[X] E[xi]=E[X] ,则可以利用大数定理来求解变量X的估计值:
E [ x i ] = 1 n ∑ i = 1 n x i = E [ X ] (1) E[x_i] = \frac{1}{n}\sum^n_{i=1}x_i = E[X] \tag{1} E[xi]=n1i=1∑nxi=E[X](1)
当获取的采样值数量n增加,估计值越来越趋近于真实值。蒙特卡洛也会这样不是吗。
但是现在有一个新的情况,假如变量 X 的分布为 p ,而获取的采样值的分布为 q ,则此时 E [ x i ] ≠ E [ X ] E[x_i] \neq E[X] E[xi]=E[X] ,那么便无法通过大数定理来估计了。但是现在的情况是我们不能从分布 p 采样数据,只能从分布 q 采样数据,q可以是任何分布。这时候就要用到重要性采样了。
E x ∼ p [ f ( x ) ] = E x ∼ q [ f ( x ) p ( x ) q ( x ) ] (2) E_{x \sim p}[f(x)] = E_{x \sim q}[f(x) \frac{p(x)}{q(x)}] \tag{2} Ex∼p[f(x)]=Ex∼q[f(x)q(x)p(x)](2)
我们从 q 里面采样 x ,再计算 f ( x ) p ( x ) q ( x ) f(x) \frac{p(x)}{q(x)} f(x)q(x)p(x) ,再取期望值。所以就算我们不能从 p 里面采样数据,但只要从 q 里面采样数据,就可以计算从 p 采样 x 代入 f 之后的期望值了。这里需要乘上一个重要性权重 p ( x ) q ( x ) \frac{p(x)}{q(x)} q(x)p(x) 来修正这两个分布的差异。 q ( x ) q(x) q(x) 可以是任何分布,唯一的限制就是 q ( x ) q(x) q(x) 的概率是 0 的时候, p ( x ) p(x) p(x) 的概率不为 0 ,不然会没有定义。
尽管上面提到分布 q 可以是任何分布,但是仍有限制,就是分布 q 不能和分布 p 的差距太多,两个分布需要差不多的,只有这样两个分布的方差( V a r x ∼ p [ f ( x ) ] 和 V a r x ∼ p [ f ( x ) p ( x ) q ( x ) ] Var_{x \sim p}[f(x)] 和 Var_{x \sim p}[f(x)\frac{p(x)}{q(x)}] Varx∼p[f(x)]和Varx∼p[f(x)q(x)p(x)])才会没有太多的差距。
分别把 f ( x ) f(x) f(x) 和 f ( x ) p ( x ) q ( x ) f(x)\frac{p(x)}{q(x)} f(x)q(x)p(x) 代入方差的公式 V a r [ X ] = E [ X 2 ] − ( E [ x ] ) 2 Var[X]=E[X^2] - (E[x])^2 Var[X]=E[X2]−(E[x])2,可得
V a r x ∼ p [ f ( x ) ] = E x ∼ p [ f ( x ) 2 ] − ( E x ∼ p [ f ( x ) ] ) 2 V a r x ∼ q [ f ( x ) p ( x ) q ( x ) ] = E x ∼ q [ ( f ( x ) p ( x ) q ( x ) ) 2 ] − ( E x ∼ q [ f ( x ) p ( x ) q ( x ) ] ) 2 = E x ∼ q [ f ( x ) 2 p ( x ) q ( x ) ] − ( E x ∼ p [ f ( x ) ] ) 2 (3) Var_{x \sim p}[f(x)] = E_{x \sim p}[f(x)^2] - (E_{x \sim p}[f(x)])^2 \tag{3}\\ Var_{x \sim q}[f(x)\frac{p(x)}{q(x)}]=E_{x\sim q}[(f(x)\frac{p(x)}{q(x)})^2] - (E_{x \sim q}[f(x)\frac{p(x)}{q(x)}])^2\\ =E_{x\sim q}[f(x)^2\frac{p(x)}{q(x)}] - (E_{x \sim p}[f(x)])^2 Varx∼p[f(x)]=Ex∼p[f(x)2]−(Ex∼p[f(x)])2Varx∼q[f(x)q(x)p(x)]=Ex∼q[(f(x)q(x)p(x))2]−(Ex∼q[f(x)q(x)p(x)])2=Ex∼q[f(x)2q(x)p(x)]−(Ex∼p[f(x)])2(3)
可以看到两者方差的差别在第一项, V a r x ∼ q [ f ( x ) p ( x ) q ( x ) ] Var_{x\sim q}[f(x)\frac{p(x)}{q(x)}] Varx∼q[f(x)