PPO

作者: 六回彬 | 来源:发表于2020-05-03 17:11 被阅读0次

On-policy VS Off-policy

  • On-policy: The agent learned and the agent interacting with the environment is the same.
  • Off-policy: The agent learned and the agent interacting with the environment is different.


On-policy \rightarrow Off-policy

  • 使用\pi_\theta来手机数据,当\theta已经更新,我们要重新采样训练数据
  • 目标:用\pi_{\theta^\prime}采样到的数据来训练\theta\theta^\prime是固定的,所有我们可以重复使用采样到的数据

Importance Sampling

E_{x\sim p\lbrack f(x)\rbrack}代表从分布p中取样本x送入f(x)并求期望,可以近似为从p中取N个x^i,然后代入f(x)求平均,即


现在假设我们不能从分布 p 中 sample 数据,只能从分布 q 中 sample,这样不能直接套上述近似。而要用:

即从p分布sample数据变为从q分布sample数据,只需在后面乘上一个weight,即

Importance Sampling 存在的问题:


通过上述公式看出,即便两者期望值一样,但是他们的方差(variance)不同,两式的区别在于红框那里多了一项。

Issue of Importance Sampling


这幅图具体说明了上述问题:蓝线代表 p的分布,绿线代表 q 分布,红线代表f(x)函数,现在我们要从 p、q 分布中 sample 出 x ,投到f(x)中计算。

可以看出 p、q 分布对于f(x)的计算而言差别是很大的。如果sample次数不够多,会造成只sample到每一种分布中,数量比较多的那些样本,比如从p中sample,会容易sample到使f(x)小于0的x;从q中sample,会容易sample到使f(x)大于0的x。


可以看到,sample次数够多的时候,可能就能sample到左边的点,在这里可以人为给它设定一个很大的weight。
这样sample到左边绿线那个点的时候,会得到一个很大的值,这样就会将原本应该是正的f(x)拉回负的。
但这个前提是sample足够多次。如果sample次数不够多,就会造成
有很大的差别,这就是importance sampling的不足。
回到一开始,讲了importance sampling后,我们知道如何由θ变为θ’。只

使用 off-policy,使用梯度做参数更新时要注意的点:
  • A^\theta(a_t,s_t)是总计的reward减掉bias,即A^\theta(a_t,s_t)=R(\tau^n)-b,就是衡量在状态s_t下采取行动用做a_t的回报。A^{\theta^\prime}(a_t,s_t)是根据sample到的数据计算
  • 因为是\pi_{\theta^\prime}与环境做互动,所以A^\theta(a_t,s_t)要变为A^{\theta^\prime}(a_t,s_t)
  • 这里我们估计\frac{p_\theta(s_t)}{p_{\theta^\prime}(s_t)}=1,因为猜测 state 的出现与θ关系不大,况且这一项本来就无法计算,因为state出现的概率我们是不能控制或估计的。
  • \frac{p_\theta(a_t|s_t)}{q_{\theta^\prime}(a_t|s_t)}可以直接计算,由此可以得到新的目标函数:
  • 上标\theta^\prime代表跟环境互动的,\theta是要更新的参数。

PPO / TRPO 算法

\theta^\prime\theta相差太多,就会导致结果错误
为了防止\theta^\prime\theta相差太多,就可以使用PPO算法


在原来的目标函数后再加一项约束值 ,这个约束就像深度学习中的正则化项
这一项和衡量和的差距,这里的差距指的是actor行为上的差距而不是参数上的差距。
下面这个是TRPO算法:

TRPO和PPO的区别:
TRPO在作梯度上升的时候,只对
求梯度上升,而
只作为一个额外的约束,很难计算。
而PPO的约束是放到式子中减去的一项,比较容易算。
所以,为了方便使用,而且两者性能差不多,就直接使用PPO吧
PPO中和学习率有点类似,需要手动设置。我们可以**设定两个阈值。经过一次参数更新后,查看KL的值
  • 如果大于最大值,说明\theta^\prime\theta相差太大,惩罚项没有发挥作用,需要加大\beta,加大惩罚。
  • 反之则减小\beta,减小惩罚。
  • 绿线代表min()函数的第一项的图像,蓝线代表min()函数的第二项的图像,红线代表最终min()函数的输出结果。
  • 若A>0,则取下图左边红线部分,若A<0则取下图右边红色部分。
  • 这个式子其实就是让 \theta^k\theta不要差距太大。
    • 如果A(advantage function)>0,代表当前的action是好的,所以我们希望越p_\theta(s_t|a_t)大越好,但是p_\theta(s_t|a_t)p_{\theta^k}(s_t|a_t)不能相差太多,所以设置了一个上界1+\epsilon
    • A<0,代表当前的action是不好好的,所以我们希望越p_\theta(s_t|a_t)越小越好,所以设置了一个下界1-\epsilon

TRPO / PPO2 等方法的实验效果:


简单说一下,PPO(Clip)是紫色的线,可以看到每个任务中的效果都是名列前茅。

相关文章

网友评论

      本文标题:PPO

      本文链接:https://www.haomeiwen.com/subject/ayvdghtx.html