从零学透PPO算法:大模型强化学习的核心原理与实战解析!
本文系统解析了大模型强化学习中的PPO算法,从智能体、环境、奖励等基础概念出发,详细阐述了PPO的优化目标、Actor-Critic架构及优势函数设计。文章通过基线机制解决传统RL奖励分配问题,并介绍了GAE、重要性采样、PPO-CLIP等工程优化技术,为读者提供了清晰理解PPO的理论框架和实践路径。
简介
本文系统解析了大模型强化学习中的PPO算法,从智能体、环境、奖励等基础概念出发,详细阐述了PPO的优化目标、Actor-Critic架构及优势函数设计。文章通过基线机制解决传统RL奖励分配问题,并介绍了GAE、重要性采样、PPO-CLIP等工程优化技术,为读者提供了清晰理解PPO的理论框架和实践路径。
这段时间,组里陆续有人基于 verl 魔改 GRPO,看起来一切顺利。一次组会细聊后,我逐渐意识到一个问题:RLHF 依然如同 24 年的 sft 人手一训,但大家对 GRPO 的理解未必完整。
一种普遍的认知是:LLM 从当前策略中采样一些序列,基于 reward 打分;然后引导模型向得分更高的序列学习,同时通过某种约束,保持与 sft 模型的近似行为。
这样确实抓住了 policy optimization 的直观外壳:我们推动 LLM 朝平均回报更高的方向移动。
然而,如果以偏概全,以 GRPO 这种“组优化”方法的角度理解 RLHF,那么就会陷入把 RLHF 视为“临摹高分样本,抛弃低分样本”的误区,从而背离 RLHF 的核心观念。
事实上,GRPO 对 PPO 的极致压缩某些程度到背离了 RL 的工程设计,已有不少工作进一步作出优化,这里不展开。
归根结底,大家在用 GRPO,但脑子里装的其实是一个模糊的、经验主义版的 PPO。
所以,与其写一篇《GRPO 是什么》的文章,不如先回到源头,系统地把 PPO 重新捋一遍。经过观察,现有教程大部分从 RL 定义入手推导理论,要么过于故事会(A 门!)。
因此,写下这篇文章,刻意避开大部分传统 RL 理论铺垫,从动机出发,重新理解 PPO:它从何而来,在优化什么,以及为什么这样设计。
一、基础概念
在 RL 设定下有三个基本角色:
- 智能体(Agent):根据当前可见状态做出动作的模型
- 环境(Environment):基于智能体动作定义状态如何变化
- 奖励(Reward):环境反馈给智能体某个动作的评价信号
一个简单的交互流程是:t 时刻,智能体看到环境反馈的状态 s*_t,基于自身策略 π***_θ 选取动作 a******_t 作用于环境,由此导致状态由 s_t → s_t+1,环境基于某些标准向智能体反馈单步奖励 r_t。
如此循环迭代,产生了一条轨迹:

而 RL 的任务,就是最大化这条轨迹的累积奖励。
以 RLHF 为例,初始状态 s********_0 为用户提供的 prompt,LLM 基于自身策略(即权重参数)执行动作(预测下一 token 概率),导致状态变化(产生的新 token 与 prompt 拼接形成新的 prompt),得到奖励(可以是截止当下状态的序列评分,或对可能生成的序列的预估评分),最终如此迭代,直到生成 <eos_token>。********
二、优化目标
(1)符号定义
首先定义 PPO 用到的基本符号:

(2)优化目标
我们的目标只有一个,就是希望通过训练得到一个足够好的策略,使得总能最大化轨迹累积奖励:


初学阶段可结论先行,具体推导可参考人人都能看懂的 RL-PPO 理论知识:
https://zhuanlan.zhihu.com/p/7461863937

这个结果告诉我们两个结论:
- 每一个动作都会影响策略的梯度
- 奖励越高的轨迹对梯度的贡献越大,即决策偏向奖励更高的轨迹
如果说期望是真理,我们只能通过多次采样来观测这个真理。因此,我们也只能将梯度表示为:


但如果当真如此,PPO 就不会出现了。。。
三、再探奖励机制
细心的同学已经发现了,方程(2)的奖励基于整条轨迹,而第一个结论就是每一个动作都会影响策略的梯度。
换句话说,我和马斯克平均财产2000亿美元,所以股东需要同时听取我和马斯克的建议。
这种奖励机制缺失了一个参考值,使得股东既无法意识到马斯克的表现显著高于常态,也无法看出我其实远低于应有水平(说多了都是泪)。

因此,我们选择引入基线,即 baseline,描述某个状态下回报 G*******_t 的平均水平,而一个动作是否值得鼓励,则被称为优势函数——该动作相较于基线的好坏。*******
我们将 s_t 状态下基于策略 π_θ 执行动作 a*****_t 的回报期望(也就是动作价值函数)记为:*******************

那么状态 s***_t 的回报期望(也就是状态价值函数)则可以表示为:***

此时,优势函数就可以表示为:

然而,价值函数的学习并不容易,更何况是两个;我们试图将 Q*_π 用 V*****_π 表示,减少需要考虑的因素:**********

此时,优势函数重写为:

我们将优势函数带入回1.2的优化目标,此时变为:

至于为什么期望没了,首先 RLHF 的状态转移是固定的,其次 V_π 多为神经网络拟合,暗含期望概念,因此简化。******
04
Actor - Critic
Actor就是我们的智能体,在RLHF中就是需要优化的LLM;而Critic是用于评估 V_π 的模型。******
回顾式(9)可以发现一个关键事实:actor 的更新离不开对状态价值 V_π 的估计。**********
这自然引出了一个问题:actor 和 critic 之间究竟是什么关系,又该如何协同优化?
从实践角度看,这里存在一个典型的闭环困境:
- actor 的更新质量依赖于 critic 的估计精度:如果 critic 对状态价值的估计噪声较大或不稳定,那么 actor 接收到的梯度信号同样会高度不可靠,从而难以稳定提升策略
- critic 的评估精度落后于 actor 的参数更新:每当 actor 参数发生更新,策略分布随之改变,而 critic 仍在拟合基于旧策略生成的数据与回报,存在滞后性
这里本人难以给出理论的解释,但结果显示,actor 和 critic 总会跌跌撞撞连滚带爬地收敛。
如果一定要类比,这种关系在形式上有点像 GAN 中的两个网络相互牵制,但本质上并非对抗,而是围绕同一目标的协作优化。
在第 2 节已经给出了 actor 的优化目标,以下是 critic 的优化目标:


这是 TD error 的优化思想,即通过减少当前价值估计与“一步之后更可靠估计”之间的偏差进行优化。
还有的小伙伴会问,critic 足够好,不就代表优势为 0 了吗?actor 还怎么择优学习?这便是倒果为因了。
大家想想深度学习中 loss 为 0 是否代表模型无法有效优化,应该可以豁然开朗。
05
工程优化
目前为止,PPO 的思想已经结束了。如果你理解了,可以弱弱说一句 PPO 不过如此(RL 佬勿喷)。
虽然有些工程细节仍需处理,不过已然没有难题了,这里做个汇总,可自行查阅:
(1)GAE

(2)重要性采样
RLHF 中生成完整的轨迹 γ 很慢,尤其是在 CoT 场景下,如果能采样一次循环使用则可以大大提高效率。
重要性采样则是被提出用于缓解旧策略采样数据和新策略优化目标之前的 gap——即如何让旧策略采样数据在优化目标上像是从新策略采样的,从而避免训练崩溃。
(3)PPO-CLIP & PPO-Penalty
重要性采样基于一个假设,即优化目标满足期望行为。然而,RLHF 中的优化目标往往是离散化的,无偏高方差的,因此可能出现极端离群点,导致重要性采样完全失效。
为了避免训练崩溃,应当限制新旧策略在轨迹上动作的过大差异,因此提出裁剪(PPO-CLIP)或 KL 散度(PPO-Penalty)约束。
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝 一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇

👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。


👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝 一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇
更多推荐
所有评论(0)