本质区别:
-
要学习的 agent 跟和环境互动的 agent 是同一个,是on-policy(同策略)
-
要学习的 agent 跟和环境互动的 agent 不是同一个,是off-policy(异策略)
on-policy 与 off-policy值函数:
-
on-policy与off-policy区别是:更新值函数时是否只使用当前策略所产生的样本.
先来看看on-policy值函数演算为off-policy的公式推导:
(1)on-policy的梯度为:
on-policy的训练策略是actor用当前policy跟环境交互采样数据data,即为
,然后用这些数据根据梯度公式进行更新policy参数,
从上面梯度公式,拿去跟环境做互动的policy(蓝色下划线)和要更新参数的policy是同一个。然而,一旦policy更新参数后,这时两个policy是不一样了,之前采样数据data则不能继续使用了,需要重新再采样数据,这样效率很低。
因此,off-policy就应运而生,目的是re-use采样数据。 on-policy→off-policy的目的是为提高数据利用效率。
(2)重要性采样
假设期望公式:
然而,此时我们只能从 q(x) 分布中采样 xi,其中 q(x) 为任何一种分布。
这时期望公式可以写成:
这时就转换为从q(x)分布去采样x来求期望。
实际操作中,p分布和q分布还是不能差太多,否则会导致一些问题出现。这是因为期望相等,方差Variance不一定相等,公式推导如下:
(3)off-policy的梯度
根据重要性采样的期望公式,on-policy梯度可以转换成以下的梯度公式
从on-policy梯度和off-policy梯度对比,很明显的是off-policy跟环境互动的是 θ‘ ,而不是θ,θ‘ 采样出来的数据与待更新的θ没有关系。
因而,可以实现θ’与环境互动产生大量数据以后,θ可以训练并更新很多次。待训练到一定程度后,θ‘=θ,θ’重新跟环境互动。
off-policy的目标函数
Aθ(st, at)是Accumulated Reward 减去 bias,用来估测动作的相对好坏,如果正就增加动作几率,如果负,就减少几率。
这里有个假设,pθ(st)和pθ′(st)分布是差不多的,比值接近1,可以略去。其中还有另外的原因是算不出来的。
off-policy 到 PPO
前面的假设是pθ与pθ′分布不能差太多,否则结果会不准确。那么,如何避免差太多,就是在训练的时候,多加了一个限制条件。这个限制条件就是θ和θ'这两个model 输出action的KL散度。这就是PPO。
KL 散度并不是θ和θ‘参数的距离,而是行为上的距离,即给同一个state的时候,action几率分布之间的差距。
可以对整到InstructGPT RLHF的PPO训练目标函数:
PPO训练流程:
Reference
[1] 【李宏毅】2020 最新强化学习课程 (完整版) - 5_哔哩哔哩_bilibili
[2] 李宏毅深度强化学习(国语)课程(2018) 笔记(二)Proximal Policy Optimization(PPO)_ppo 李宏毅_Interesting AI的博客-CSDN博客