PPO

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 Off-policy

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

Importance Sampling

代表从分布p中取样本x送入f(x)并求期望,可以近似为从p中取N个,然后代入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,使用梯度做参数更新时要注意的点:

  • 是总计的reward减掉bias,即,就是衡量在状态下采取行动用做的回报。是根据sample到的数据计算
  • 因为是与环境做互动,所以要变为
  • 这里我们估计,因为猜测 state 的出现与θ关系不大,况且这一项本来就无法计算,因为state出现的概率我们是不能控制或估计的。
  • 可以直接计算,由此可以得到新的目标函数:
  • 上标代表跟环境互动的,是要更新的参数。

PPO / TRPO 算法

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


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

TRPO和PPO的区别:
TRPO在作梯度上升的时候,只对

求梯度上升,而

只作为一个额外的约束,很难计算。
而PPO的约束是放到式子中减去的一项,比较容易算。
所以,为了方便使用,而且两者性能差不多,就直接使用PPO吧


PPO中和学习率有点类似,需要手动设置。我们可以**设定两个阈值。经过一次参数更新后,查看KL的值

  • 如果大于最大值,说明和相差太大,惩罚项没有发挥作用,需要加大,加大惩罚。
  • 反之则减小,减小惩罚。
  • 绿线代表min()函数的第一项的图像,蓝线代表min()函数的第二项的图像,红线代表最终min()函数的输出结果。
  • 若A>0,则取下图左边红线部分,若A<0则取下图右边红色部分。
  • 这个式子其实就是让 和不要差距太大。
    • 如果A(advantage function)>0,代表当前的action是好的,所以我们希望越大越好,但是和不能相差太多,所以设置了一个上界;
    • A<0,代表当前的action是不好好的,所以我们希望越越小越好,所以设置了一个下界;

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


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

你可能感兴趣的:(PPO)