PPO

2020-05-03  本文已影响0人  六回彬

On-policy VS Off-policy

On-policy \rightarrow Off-policy

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,使用梯度做参数更新时要注意的点:

PPO / TRPO 算法

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


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

TRPO和PPO的区别:
TRPO在作梯度上升的时候,只对
求梯度上升,而
只作为一个额外的约束,很难计算。
而PPO的约束是放到式子中减去的一项,比较容易算。
所以,为了方便使用,而且两者性能差不多,就直接使用PPO吧
PPO中和学习率有点类似,需要手动设置。我们可以**设定两个阈值。经过一次参数更新后,查看KL的值

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


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

上一篇 下一篇

猜你喜欢

热点阅读