本文是这篇博文的注,如有需要请以其为纲
1.On-policy/Off-policy
若agent与环境互动,则为On-policy(此时因为agent亲身参与,所以互动时的policy和目标的policy一致);若agent看别的agent与环境互动,自己不参与互动,则为Off-policy(此时因为互动的和目标优化的是两个agent,所以他们的policy可能不一致)。
两者在采样数据利用上的区别:
- On:这时要求采样所用的policy和目标policy一致,采样后进行学习,学习后目标policy更新了,此时需要把采样的policy同步更新以保持和目标policy一致,这也就导致了需要重新采样。
- Off:这种情况下,反正采样的plicy也和目标的policy不一样,所以你目标的policy随便更新,采样后的数据可以用很多次也可以。
2.关于policy不一致也可用的理论基础:Importance Sampling
如上图,首先明确:f(x)是一个函数,p是x的出现概率,q是x的另一种出现概率。期望获得p下x的f(x)的期望,但是目前只能对q下x进行采样。这时可通过第一行的式子进行转换。
上式的局限性:若采样很多,虽然概率小,但是也可能采到最左侧的那个采样点,因为它的p/q都很大,所以右式和左式可以相等;若采样不多,则上面的等式可能不成立。
3.Off-policy
上图中,我们期望得到上式,但是可以用下式进行表示。两者的区别为采样所用的policy不同,即从下的数据采样,用于指示
的数据。
4.PPO Proximal Policy Optimization
注:这个方法的来源是,使用Off-policy的时候要用到的policy \theta'不能和目标的policy \theta差别太大,所以对原问题加一个constrain:
KL的含义是,衡量\theta 和 \theta'有多像。这里的KL衡量的是两者的behaviour的距离(给定s时输出的a[这个其实是用概率向量表征]的差距)
PPO的前身是TRPO(Trust Region Policy Opti),PPO相比TRPO,把KL结合到了J的式子中,少了一个约束
【beta】
其中KL前面的参数\beta如何设置?先设置一个能接受的最大差别KL_{max},然后对J进行优化,并观察KL的大小,若KL大于你的KL_{max},则说明J没把KL放在眼里,就把\beta调大。
5.PPO2-PPO的改进版
相比PPO,PPO2是对两个线取min,仔细看后面的那个其实和前面的那个一样只是系数不同,那个clip的含义是:对第一个参数的上下限进行限制,下限为2参,上限为3参。整体的图像如下所示
上图横轴为/
,表示两个policy的差别,绿色为min后的第一个成员,蓝线为min的第二个成员。红线为A>/<0 时的J。
当A>0时期望尽可能地大,但是不能和
差别过大,如左图,过大则为平。