从Actor Critic到PPO算法
首先我们从策略梯度说起,
强化学习的目标是调整模型参数,改变模型决策,最大化期望回报J(θ)

策略梯度定理告诉我们

最原始的reinforce算法,直接用一整条轨迹的回报Gt作为估计

但是这种方法要求 每次更新都依赖完整的轨迹,并且方差大
于是我们引入了评估网络,也就是Actor Critic算法

Actor Critic算法有actor和critic两个网络,
actor网络负责输出动作的概率(和策略梯度算法没差别)
critic网络则用价值函数代替策略梯度中的完整回报

其中优势函数At为,

在AC算法中,我们通常使用TD误差作为优势

这样,AC算法不仅显著降低了方差,而且可以基于单步TD误差进行更新,不用等到轨迹结束。
但是AC算法还存在一个问题,如果优势函数At估计很大,那么策略的更新可能会非常剧烈,导致策略更新不稳定,于是我们在策略更新的时候引入了clip,也就是PPO算法。

PPO算法相比于AC,核心在于修改了策略更新的损失函数
PPO首先定义了新旧策略概率比rt

并且定义了目标函数:

当At>0时,希望增大动作概率,也就是让rt增大,但是由于目标函数的限制,rt最多增加到1+ϵ,当rt>1+ϵ,目标函数J(θ)=(1+ϵ)At,这是一个常数,对θ求导后梯度为0,抑制rt继续增大;
同理,At<0时,rt也存在下域值1-ϵ
(PPO对所有的动作都设置了rt∈[1−ϵ,1+ϵ],但只有当 At>0 时,梯度让概率增大,此时上界会生效;当 At<0 时,梯度让概率减小,此时下界会生效)
这样,PPO就实现了将模型更新的比率rt控制在[1-ϵ,1+ϵ],使得策略更新过程不会剧烈偏移,训练更平滑

浙公网安备 33010602011771号