在这里插入图片描述

😊你好,我是小航,一个正在变秃、变强的文艺倾年。
🔔本文讲解【强化学习】PPO 让智能体稳步提升,20W字总结(六),期待与你一同探索、学习、进步,一起卷起来叭!

🎯 把我的博客装进你的 Claude Code,它就是你的 AI 学习搭子

想随时搜我的文章、让 AI 帮你深度讲解甚至出面试题?复制下面这段提示词丢进你的 Claude Code——它会自动生成一个本地 SKILL,之后你直接说「搜一下强化学习的文章」就行。RSS 自动同步最新内容,不用手动存任何文件。

请为这个 CSDN 博客创建一个本地 SKILL(存到 .claude/skills/csdn-blog/SKILL.md):
RSS 源:https://rss.csdn.net/m0_51517236/rss/map
支持三件事:① 列出最新文章(标题+链接+摘要);② 按关键词搜索;
③ 抓取指定文章全文,作为 AI 学习助手 / 面试官深度讲解并出题考核我。
SKILL.md 里写清楚 RSS URL、调用方式和示例。生成完就能用自然语言搜文章了。

一键订阅,长期可用。🚀


上一篇 Actor-Critic 让智能体"走一步学一步",听起来很美。但它有个一直没解决的老毛病——步子迈太大,容易直接训崩

一次更新走太远,策略从山顶直接掉下悬崖,性能崩盘,得好久才能爬回来。

这篇的主角 PPO(Proximal Policy Optimization,近端策略优化) 就是来治这个病的。它给策略更新"装了刹车"——保证新策略不会比旧策略差。PPO 是 RLHF 的核心组件,也是 ChatGPT 背后的关键算法之一。

策略梯度的老毛病:步子太大

把奖励函数想象成一座高耸的山峰,策略在爬山。如果一次更新走得太远,可能差之毫厘、从悬崖掉下去——掉到一个表现很差的状态,再想爬回来得花老长时间。

在这里插入图片描述

为什么这个问题在强化学习里特别严重,而在普通深度学习里没那么夸张?关键区别在训练数据

  • 深度学习:数据集是固定的。不管网络参数怎么变,训练数据不变——参数和数据"没关系"。
  • 强化学习:训练数据是每一轮根据当前策略重新采样的轨迹。策略一变,下一轮采到的数据也跟着变——参数和数据"绑在一起了"。

这就麻烦了。策略走偏一步,采到的数据质量也跟着崩,恶性循环。学习率也不好调:平坦区需要大步子才学得快,但一步走错就掉悬崖,大步子又会触发爆炸式更新。学习率对地形不敏感,所以策略梯度很容易收敛失败

于是问题来了:

能不能找到一个算法,让训练出来的新策略一定比旧策略好?

思路:给更新画个圈

普通梯度下降是"线性搜索"——先定个方向,然后朝那迈一步。方向对了还行,步子大了就翻车。

PPO 用的是"置信域(Trust Region)“思路:先确定一个"最大安全步长”,然后在这个圈子里找最优点。先周围看一圈,找一个安全的步长,再迈出去

在这里插入图片描述

为了实现这个,梯度公式得改。注意 PPO 仍是 Actor-Critic 架构(演员-评论家),先复习一下它的梯度:

∇ θ J ( θ ) = E [ ∑ t A t ⋅ ∇ θ log ⁡ π θ ( A t ∣ S t ) ] \nabla_{\theta}J(\theta) = \mathbb{E}\left[\sum_t A_t \cdot \nabla_{\theta}\log\pi_\theta(A_t|S_t)\right] θJ(θ)=E[tAtθlogπθ(AtSt)]

其中 A t = R t + γ V ω ( S t + 1 ) − V ω ( S t ) A_t = R_t + \gamma V_\omega(S_{t+1}) - V_\omega(S_t) At=Rt+γVω(St+1)Vω(St)优势(上一章的 TD 误差)——当前动作相对"平均水平"好多少。

PPO 的目标函数:裁剪

PPO 的核心招数是裁剪(clip)。先定义一个"概率比":

p t ( θ ) = π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) p_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} pt(θ)=πθold(atst)πθ(atst)

分子是新策略选这个动作的概率,分母是旧策略的。 p t p_t pt 衡量"新策略相对旧策略变了多少"—— p t = 1 p_t=1 pt=1 表示没变, p t = 2 p_t=2 pt=2 表示概率翻倍。

PPO 的目标函数长这样:

J C L I P ( θ ) = E [ ∑ t min ⁡ ( p t ( θ )   A t ,   clip ( p t ( θ ) ,   1 − ϵ ,   1 + ϵ )   A t ) ] J^{CLIP}(\theta) = \mathbb{E}\left[\sum_t \min\left(p_t(\theta)\, A_t,\ \ \text{clip}(p_t(\theta),\ 1-\epsilon,\ 1+\epsilon)\, A_t\right)\right] JCLIP(θ)=E[tmin(pt(θ)At,  clip(pt(θ), 1ϵ, 1+ϵ)At)]

里面有个 min 和一个 clip ϵ \epsilon ϵ 论文里设 0.2 0.2 0.2。意思是:把概率比 p t p_t pt 卡在 [ 1 − ϵ , 1 + ϵ ] [1-\epsilon, 1+\epsilon] [1ϵ,1+ϵ] [ 0.8 , 1.2 ] [0.8, 1.2] [0.8,1.2] 这个圈里,圈外就削平。

在这里插入图片描述

六种情况:什么时候更新,什么时候不动

这个 min + clip 看着绕,其实就六种情况。核心记住一句:取"未裁剪"和"裁剪后"两者里更小的那个

分两大类看:

比率在圈内 p t ∈ [ 1 − ϵ , 1 + ϵ ] p_t \in [1-\epsilon, 1+\epsilon] pt[1ϵ,1+ϵ]:没被裁剪,正常更新。

  • 优势 A > 0 A > 0 A>0(动作好)→ 增强这个动作
  • 优势 A < 0 A < 0 A<0(动作差)→ 压制这个动作

比率在圈外:分四种,关键是看"更新方向会不会让比率往圈内走"。

  • 比率太小( p t < 1 − ϵ p_t < 1-\epsilon pt<1ϵ)且 A > 0 A > 0 A>0:应该增大比率 → 更新(往圈内走)
  • 比率太小且 A < 0 A < 0 A<0:会继续减小比率 → 不更新(已经够差了,别再压)
  • 比率太大( p t > 1 + ϵ p_t > 1+\epsilon pt>1+ϵ)且 A > 0 A > 0 A>0:会继续增大比率 → 不更新(已经够贪了,见好就收)
  • 比率太大且 A < 0 A < 0 A<0:应该减小比率 → 更新(往圈内走)

在这里插入图片描述

一句话总结:只有在"安全"的情况下才更新策略——要么比率在圈内,要么更新方向是往圈内走的。一旦更新会让新旧策略差太多(撞到裁剪边界),梯度直接归零,策略纹丝不动。

为什么裁剪时梯度是 0?因为裁剪后那一项变成了常数 ( 1 − ϵ ) A t (1-\epsilon)A_t (1ϵ)At ( 1 + ϵ ) A t (1+\epsilon)A_t (1+ϵ)At,对 θ \theta θ 求导就是 0( A t A_t At 也不依赖 θ \theta θ)。

算法流程

把 PPO 的训练流程梳理一下:

输入:初始策略参数 θ₀,裁剪阈值 ε(通常 0.2)
重复 k = 0, 1, 2, ...
  1. 用当前策略 π_k 采集一批轨迹数据
  2. 用广义优势估计(GAE)算每步的优势 A_t
  3. 在这批数据上,做 K 步小批量 SGD,用 Adam 最大化裁剪目标 L^CLIP
  4. 得到新参数 θ_{k+1}

注意第 3 步:同一批数据要重复用好几次(K 步微批次)——这是 PPO 比 Actor-Critic 高效的地方之一(Actor-Critic 采一步用一步就扔,PPO 一批数据榨干再换)。

这里的优势用的是 GAE(广义优势估计),也就是 n n n 步 TD 误差,比单步 TD 更稳。细节放在番外篇的数学推导里。

小结

PPO 给策略更新装了"刹车"——用裁剪把新旧策略的概率比限制在一个小圈里,保证新策略不会比旧策略差

特点 说明
软约束 不像严格置信域那么复杂,用一阶优化器(Adam)就能跑
裁剪 圈外梯度归零,自动刹车
高效 一批数据 K 步微批次,榨干再用

它简单到有点"虎头蛇尾"——分析了一大堆,结论就是一个 clip。但实验证明,这种简单的平衡反而带来了最好的性能。这也是 PPO 能成为 RLHF 标配的原因。

下一篇我们就用 PPO 实战玩倒立摆,看看这个"装了刹车"的策略梯度法跑起来到底有多稳。


📌 [ 笔者 ] 文艺倾年
📃 [ 更新 ] 2026.06.14
❌ [ 勘误 ] /* 暂无 */
📜 [ 声明 ] 由于作者水平有限,本文有错误和不准确之处在所难免,
本人也很想知道这些错误,恳望读者批评指正!

在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐