PPO算法损失函数的设计

在讲解 PPO(Proximal Policy Optimization) 算法的优化目标之前,我们先用一个贴近生活的例子来类比它的核心思想,看看为什么要这样设计,以及它解决了什么问题。

1. 用生活经验类比PPO的核心思想

场景:练习投篮
假设你正在练习投篮——每次投篮(动作)后,你都会根据投篮的结果(奖励)来判断“姿势”是否需要调整。

  • 老政策(Old Policy):你之前一直使用的投篮姿势。
  • 新政策(New Policy):你打算做一些微调后的投篮姿势,想看看能不能提高命中率。

如果你每次练习都大幅度改变投篮姿势,比如一下子从标准姿势改成单手“乱抛”的动作,那么很可能导致投篮命中率大幅波动,甚至退步。这种情况下,你不能确切知道是姿势调整出了问题,还是单纯运气不好。这就像在强化学习里,如果新策略和旧策略的差异过大,可能会产生极端不稳定的训练结果,甚至导致之前学到的好东西都“推翻重来”。

PPO 的做法就像在每次练投篮时,对新姿势有一个“限制”,确保你不要一下子改动太大,从而在慢慢微调的过程中持续稳定地提高准确率。

2. PPO 的优化目标:为什么要这样设计?

PPO 的核心是在策略更新时,对新旧策略的差异做了“约束”。它通过一个“裁剪(clipping)”操作,来限制策略更新的幅度,避免新旧策略之间出现过大的偏移。

在数值上,PPO 的优化目标可以简化为下面这种“带有裁剪”的形式(省略了一些不必要的细节):
在这里插入图片描述
换回投篮的例子:
在这里插入图片描述

这样设计的好处

  1. 避免一步改动过大:就像上面的投篮例子,这种“剪裁”策略会迫使我们每次只做小幅度更新,降低了训练不稳定或者“学崩”的风险。
  2. 确保稳定收敛:在政策梯度方法中,如果新旧策略差别过大,可能导致梯度爆炸或崩溃。PPO 通过裁剪来保证更新更平稳,从而提升在大规模问题上的稳定性和效率。
  3. 保留改进方向:PPO 的目标函数使用了min(⋅,⋅) 的形式,保证只要新策略确实对收益有提升,就会沿着正确方向更新;若更新幅度过大反而让收益变差,则会进行限制。

3. 这样设计解决了什么问题?

在更“学术”的层面,这样的设计主要解决了以下问题:

  1. 策略更新不稳定

在早期的策略梯度方法(如 REINFORCE、Vanilla Policy Gradient)或者 Trust Region Policy Optimization (TRPO) 中,如果更新过大,很容易出现性能骤降。
PPO 相比 TRPO,实现了类似的“限制策略更新幅度”的想法,但公式和计算更简单,也更易实现。

  1. 计算代价过高

TRPO 需要解决一个复杂的二阶近似优化问题,计算和实现都相对麻烦。
PPO 则通过简单的裁剪操作和一阶梯度优化来实现相似的效果,减轻了计算负担。

  1. 提高训练效率
  • 通过限制策略更新幅度,PPO 往往可以更稳定、更快速地收敛。
  • 在实际应用中,比起频繁地因过大更新导致的“退步”或“不收敛”,稳定的小步更新往往更能省时省力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值