PPO近端策略优化算法
我们今天还是主要来理解PPO算法的数学原理。PPO是一种策略梯度方法,简单的策略梯度对每个样本(或者一组样本)进行一次梯度更新,对单个样本执行多个梯度步骤会导致一些问题,因为梯度偏差太大,从而产生错误的策略。PPO允许我们在每个样本中进行多次梯度更新,方法是尽量使策略与用于采样的策略保持一致(PG算法本身都是要on-policy,PPO可以on也可以off),如果更新后的策略与用于采样数据的策略不接近,则通过削减梯度流来实现。
PPO损失的更新方式是求解这个式子,也就是最大化我们的目标函数

我们需要用优势函数来化简这个式子

可以发现我们的目标函数就可以等于下面的式子

我们定义一个权重系数d

再化简一下,将优化问题转换为求解分布问题

再化简一下,将优化问题转换为求解分布问题

通过重要性采样,将式子转换一下

上面的那个ratio非常重要,定义

通过clip裁剪限制策略π和π-old的差异

除了策略损失,还有值函数损失,我们也通过裁剪值函数进行更新  得到的损失函数为
