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)是紫色的线,可以看到每个任务中的效果都是名列前茅。