PPO算法是一类Policy Gradient强化学习方法,经典的Policy Gradient通过一个参数化决策模型来根据状态确定动作,其参数更新是通过下式进行的:
用于衡量决策模型的优劣目标,决策模型的优化目标为寻找最优决策,使得该决策下整体价值最大。
因为最优决策是未知的,一种简单思路是直接当前参数模型进行寻优。称为Vanilla Policy Gradient。
1. Vanilla Policy Gradient
Vanilla Policy Gradient定义优化目标为:
- 表示一轮episode,表示episode中的某个时刻,表示一轮episode的终态。
- 称为Advantages estimates,其在原来预估基础上减去了平均状态价值估计,这么做好处是扭正不同状态价值间偏差,可以加快模型收敛,具体可以参考这篇。
梯度计算式子:
参数更新式子:
此外平均状态价值估计通过VE损失进行优化,其同Policy Gradient更新按照AC的框架进行两步迭代更新。
2. Trust Region Policy Optimization
前面我们所提到的Vanilla Policy Gradient算法是将训练分为多个epoch,每个epoch会根据当前决策模型采样多个episode组合成一个batch,并在该epoch中针对于该batch进行多轮训练。
由于该轮epoch的训练数据是根据上轮epoch的模型进行采样的,此时就可能出现更新的决策模型同采样决策模型不一致,这个不一致同off-policy所带来的问题是类似的,可能会导致模型训练有偏差。
虽然Vanilla Policy Gradient算法是on-policy的,但是由于对batch进行多轮训练,在实际上造成了target policy和behavior policy不一致的问题。因此Trust Region Policy Optimization(TRPO)根据off-policy在原来优化目标上添加了重要性采样。
上式中的表示上轮模型参数,同时为了避免target policy 和behavior policy变化太大,导致优化目标方差增大,因此还需要通过KL散度约束相比于变动不大,其约束了的变化区域,故称为Trust Region
直接根据上面目标以及约束很难进行优化,因此TRPO做了一定式子简化:
同时其给出决策参数的更新式子,式子中的用于控制KL散度约束,此处采用了Backtracking line search技术,其通过设置多个因子,并在训练中不断从中选择一个因子使得约束满足同时梯度更新最大。
3. Proximal Policy Optimization
TRPO有一个很大问题,在于其KL约束是通过惩罚项加到优化目标上去的,因此惩罚项的权重参数是一个超参数,其设置影响整体训练效果,虽然TRPO采用了Backtracking line search技术,可以自适应的去选择超参数,但是对于整体训练效果仍是有损的。
因此PPO认为KL约束既然是为了约束相比于变动不大,而优化目标已经包含了这两项,为什么不把这个约束添加到优化目标中。通过截断来约束变动在一定范围内,从而到达同KL散度约束类似的效果。
论文中也通过实验表明了PPO算法采样这种clip方式其效果比固定KL约束参数、自适应KL约束参数的方法都要好。