【点滴】策略梯度之PPO

本文是李宏毅老师DRL Lecture 2: Proximal Policy Optimization (PPO)的学习笔记。


在正式展开之前,需要有以下准备知识:

  • on policy强化学习与off policy的区别
  • 策略梯度(Policy Gradient,以下简称pg)
  • 重要性采样
  1. 所谓的on-policy和off-policy,它们的区别在于智能体与环境交互的策略与它自身正在学习的策略是否是同一个。对于off-policy,比如在Q-Learning中,无论智能体在环境中采用什么策略选择动作(常见是 \varepsilon-greedy ),它在更新Q值时的采用的策略都是选那个最大化状态效益值的动作,简单来说就是学习和采样用的不是是同一个策略;当学习的策略和采样的策略一致,则我们称为on-policy,常见的算法有SARSA;
  2. 通过pg进行强化学习训练时,其目标是使每个状态的期望收益值最大(包括长远收益),以这个目标优化策略 \pi 的参数 \theta ,通过梯度下降的方法来实现优化过程(具体推导可见一代宗师Sutton的强化学习介绍),其目标函数的梯度表示为:

g=\nabla J{(\theta)}=E_{a\tilde~\pi(\theta)}[ Q_{\pi(\theta)}(S_t,a_t)\nabla log\pi_{\theta}] \space(1)

3. 最后再回顾一下重要性采样。

假设我们需要估计期望值 E_{x \tilde~ p}[f(x)]p 表示采样变量 x 的分布:

E_{x \tilde~ p}[f(x)]=\int p(x)f(x)dx\approx \frac{1}{N}\sum_{i=1}^{N}{f(x_i)} \space(2)

最好是通过积分来确定这个期望,如果分布 p 很难积分,我们往往会通过 p 采样来进行期望的估计。但是如果 p 采样很麻烦,我们就得借助另一个更简单的分布 q 来代为采样了,这就是重要性采样的初衷,具体的关系如下:

E_{x \tilde~ p}[f(x)]=E_{x \tilde~ q}[\frac{p(x)}{q(x)}f(x)] \space(3)

但是重要性采样有一个问题,尽管重要性采样可保证估计的均值一致,但它们对应的方差并不能确定是一致的,证明如下:

已知 Var(x)=E(x^2)-[E(x)]^2 \space(4)


原方差为:

Var_{x \tilde~p}[ f(x)]=E _{x \tilde~p}[ f(x)^2]-(E_{x \tilde~q}[ f(x)])^2 \space(5)


由重要性采样后的方差为:

Var_{x \tilde~q}[\frac{p(x)}{q(x)}f(x)]=E _{x \tilde~q}[\frac{p(x)}{q(x)}f(x))^2]-(E_{x \tilde~q}[\frac{p(x)}{q(x)}f(x)])^2\space \space \space(6)

因为:

E _{x \tilde~q}[\frac{p(x)}{q(x)}f(x))^2]=\int(\frac{p(x)}{q(x)}f(x))^2q(x)dx=\int\frac{p(x)}{q(x)}f(x)^2p(x)dx=E _{x \tilde~p}[\frac{p(x)}{q(x)}f(x)^2]

(E_{x \tilde~q}[\frac{p(x)}{q(x)}f(x)])^2=(E_{x \tilde~ p}[f(x)])^2

由此易得:

Var_{x \tilde~q}[\frac{p(x)}{q(x)}f(x)]=E_{x \tilde~ p}[\frac{p(x)}{q(x)}f(x)^2]-(E_{x \tilde~ p}[f(x)])^2 \space(7)

对比(5)和(7)我们可以发现,当分布 p、q 越接近,其方差就越接近,而如果两者差距很大时,则方差差别很大,这就意味着,在采样次数较少时,基于重要性采样得到的样本并不能很好反映变量的原始分布,从而产生较大误差。


基于以上准备知识,我们正式开始PPO的介绍。现在我们已知pg的梯度为:

g=\nabla J{(\theta)}=E_{a\tilde~\pi(\theta)}[ Q_{\pi(\theta)}(S_t,a_t)\nabla log\pi_{\theta}] \space(8)

pg实际上就是一种on-policy的学习方法,我们容易发现采样的策略跟被优化的策略就是是同一个 \pi ,这种做法的一个不足是,每进行一次更新,又得采样,然后进行下一次更新,导致学习效率不高。为了提高学习效率,我们一般先采样多次,再更新,而且我们希望采样的样本可以重复使用,从而节省大量训练成本。为此,需要另一个策略 \pi{'} 代为采样,即转换为off-policy的方法,对应的更新梯度变为:

g=\nabla J{(\theta)}=E_{a\tilde~\pi(\theta)^{'}}[ \frac{\pi(\theta)}{\pi(\theta)^{'}}Q_{\pi(\theta)^{'}}(S_t,a_t)\nabla log\pi_{\theta}] \space(9)

由上式,变成off-policy实际上就是引入了重要性采样,就得考虑之前提到的重要性采样的不足


PPO就是为了解决这个不足而产生的,此外,它与传统的策略梯度还有一点点不一样,它考虑的是每步收益会比期望的收益好多少,也就是advantage:

A_{\pi(\theta)}(s_t,a_t)=Q_{\pi(\theta)}(s_t,a_t)-V_{\pi(\theta)}(s_t) \space(10)

此时的策略梯度可以写为:

g=E_{a\tilde~\pi(\theta) }[A_{\pi(\theta)}(s_t,a_t)\nabla log\pi_{\theta}] \space(11)

通过另一个策略帮助采样(重要性采样),得:

g=E_{a\tilde~\ \pi(\theta)^{'}}[\frac{\pi(\theta)}{{\pi(\theta)^{'}}}A_{\pi(\theta)^{'}}(s_t,a_t)\nabla log\pi_{\theta}] \space(12)

又因为: \\pi_{\theta}\nabla log\pi_{\theta}=\nabla\pi_{\theta} ,得:

g=E_{a\tilde~\ \pi(\theta)^{'}}[\frac{\nabla\pi(\theta)}{{\pi(\theta)^{'}}}A_{\pi(\theta)^{'}}(s_t,a_t)] \space(13)

该梯度对应的目标函数为: J{(\theta)}’=E_{a\tilde~\ \pi(\theta)^{'}}[\frac{\pi(\theta)}{{\pi(\theta)^{'}}}A_{\pi(\theta)^{'}}(s_t,a_t)] \space{(14)}

为了克服采样分布与原分布差距过大的不足,PPO对采样分布和原分布做了约束,其做法是为目标函数引入KL距离作为正则项:

 J{(\theta)}’=E_{a\tilde~\ \pi(\theta)^{'}}[\frac{\pi(\theta)}{{\pi(\theta)^{'}}}A_{\pi(\theta)^{'}}(s_t,a_t)] -\beta KL(\pi(\theta)^{'},\pi(\theta)) \space{(15)}

其中,系数 \beta 可以在迭代过程中动态调整:

  • 若当前的KL距离比最大KL距离还大,说明采样分布与更新的分布距离更大了,表示约束还不够强力,需要 \beta 增大;
  • 反之,若当前的KL距离比最小的KL距离还小,则 \beta 缩小。

上述是理论的推导,在实际应用中,我们基于采样估计期望,并省略了KL距离的计算,对应的目标函数为:


 J{(\theta)}’\approx \sum_{(s,a)} min(\frac{ \pi(\theta)}{\pi(\theta)'}A_{\pi(\theta)^{'}} ,clip(\frac{\pi(\theta)}{\pi(\theta)'},1-\varepsilon,1+\varepsilon)A_{\pi(\theta)’} ) \space{(16)}

其中 1-\varepsilon \leq clip(\frac{\pi(\theta)}{\pi(\theta)'},1-\varepsilon,1+\varepsilon)\leq 1+\varepsilon ,由上式我们可以看出PPO的意图:

  • 当目前策略表现较好时,即 A_{\pi(\theta)^{'}}>0 , 此时由min(\frac{ \pi(\theta)}{\pi(\theta)'}A_{\pi(\theta)^{'}} ,clip(\frac{\pi(\theta)}{\pi(\theta)'},1-\varepsilon,1+\varepsilon)A_{\pi(\theta)’} ’)\\frac{ \pi(\theta)}{\pi(\theta)'} \leq 1+\varepsilon ,其表达的意思是:此时策略表现好,理应让  \pi(\theta) 变大,但我们不能任由其变大,这样会使得 \frac{ \pi(\theta)}{\pi(\theta)'} 变得太大,导致两个分布相差太大,引入误差;
  • 当目前的策略表现糟糕,即A_{\pi(\theta)^{'}}\leq0 , 此时由min(\frac{ \pi(\theta)}{\pi(\theta)'}A_{\pi(\theta)^{'}} ,clip(\frac{\pi(\theta)}{\pi(\theta)'},1-\varepsilon,1+\varepsilon)A_{\pi(\theta)’} ’)\frac{ \pi(\theta)}{\pi(\theta)'} \geq 1-\varepsilon ,其表达的意思是:由于现在策略已经够糟糕了,采样的好坏已经不那么重要了, \frac{ \pi(\theta)}{\pi(\theta)'} 不必限制,因为 \pi(\theta)必须得变小!

编辑于 04-06

文章被以下专栏收录