强化学习再梳理,从PPO到GRPO到DAPO
是时候准备实习和面试了。
不同以往的是,当前职场已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。
强化学习基于奖励最大化假设,所有的算法都是建立在得到一个最大的期望奖励的基础上。
首先来明晰两个概念:
- On-Policy: 训练数据由需要训练的策略本身通过与环境的互动产生,用自己产生的数据来进行训练(可以理解为需要实时互动)
- Off-Policy: 训练数据预先收集好(人工或者其它策略产生),策略直接通过这些数据进行学习。
PPO,GRPO,DAPO 都是 On-Policy 的策略。
这些 On-Policy 的策略一般由四个关键组件组成训练的 pipeline:
- Actor: 产生动作的策略
- Critic: 评估动作或状态的价值的网络
- Reward Model: 对状态转移给出即时的奖励的模型或者函数
- Reference Model: 参考策略,这是为了防止在训练过程中,策略网络在不断的更新后,相对于原始策略偏移地太远。(避免它训歪了)
01
从 PPO 出发,捋清强化学习训练的思路
Policy gradient optimization
基于奖励假设,我们希望得到一个能够最大化奖励期望的策略,这个目标可以写成:

而奖励来自于轨迹上的每一个动作的即时奖励,于是,这个目标可以写成:


那么,一条轨迹的整体概率分布可以写成:

对于 policy gradient 的方法来说,我们希望通过梯度上升的方式最大化轨迹得到的奖励,也就是最大化我们的目标函数。
梯度上升的更新公式可以写为:
那么问题来了,如何计算目标函数的梯度呢,这个目标函数涉及一轮迭代中轨迹上的所有点,直接去计算或者估算都具有很大的困难,而且还有由环境和策略共同决定的状态转移项,这么多项揉在一起似乎无法求解。
但是呢,要不说数学家是天才呢,它可以由一系列简单的变换变为只与策略有关的项。
先来对这个目标函数的梯度进行一个简单的推导:

那么上述目标函数的梯度转变为了一个对轨迹转移与奖励函数的积分,采用 log 函数的导数变换技巧,上式可以变成:

那么目标函数的导数变成:
那么现在就得到了一个只与策略和奖励有关的式子,我们可以对此进行计算,但是显然不可能对能够采样所有轨迹来进行梯度计算,在很多场景下要不轨迹无限要不穷举所需算力太大,所以我们只能对它进行估算。
而进行采样估算,就要请出大名鼎鼎的蒙特卡洛算法了。蒙特卡洛算法其实就是通过局部采样来估计整体的方法,那么我们可以采样一部分轨迹,得到:


02
Reinforce 算法
根据上面的策略梯度优化的推导基础,我们可以开始介绍经典的 Reinforce 算法,这个算法就是简单的梯度策略优化的应用。

有了策略网络以后就可以开始在环境中采集动作轨迹 𝒓,这些动作轨迹用于计算策略更新的梯度(上述蒙特卡洛法)。
当收集到了足够多的轨迹以后,采用这个蒙特卡洛估计法来计算策略梯度:

然后根据梯度进行策略更新:

反复进行采样然后计算梯度然后更新网络,直到你的策略网络拟合。
这就是经典的 Reinforce 算法。
评估一下这个算法: 这是一个 Model-free 的算法,因为只涉及对策略网络本身输出采样,而不涉及由环境决定的状态转移过程。
但是呢,由于需要进行采样估计,虽然蒙特卡洛法是策略梯度的无偏估计,但是如果样本太少的话,得到的方差可能就会很大,这不利于训练的稳定性。
其实这也是策略梯度优化方法的固有缺陷,如果要学习的行为足够复杂(采样的轨迹太长)或者策略网络过大,那么要进行的采样和计算量也是非常大的,不然梯度估计的方差就会变得很大。
那么有没有减小方差的方法呢?有的兄弟,包有的。
Focus only on the future
回顾一下我们目前介绍的梯度策略优化算法,每一步的估计都乘上了从轨迹开始到结束的所有奖励,想一想真的需要吗?
我第 10 步的时候去做下一步决策的时候,过去 9 步的奖励还应该被考虑进来吗?
什么?你说不需要,我也说不需要,从因果的角度来看压根不需要之前的奖励!
那么我们可以改写一下策略梯度的数学表达式,变为:


引入一个奖励基线
引入一个基线可以有效减小方差(例如数据在基线上下跳动,那么对所有的数据减去这个基线的话,数据整体的方差就会有效减小,大概想象一下就可以):

这里的 b 就是引入的基线,这个基线常常是用一个价值模型评估当前状态的价值,即:
优势函数

那么现在的策略梯度估计可以改写为:
从 rewards-to-go 到优势函数,目前做的一系列工作都是为了减少方差。接下来开始介绍 PPO 算法了。
Generalized Advantage estimation(GAE)

那么我们把它代入回多步估计优势函数的式子中去,可以发现:

以上都是通过采样去对优势函数进行估计的可行公式。
把它展开来,就可以得到:

如果我们采集 K 步的话,那么通过等比数列求和公式,我们得到:

可以取边界值对这个衰减因子进行一个简单的分析:

03
Proximal Policy Optimization
接下来就是著名的 PPO 算法啦。PPO 需要训练两个模型,一个是策略网络,一个是价值网络(标准的 Actor-critic 结构)。
我们从它的目标函数来分析,首先对于策略网络:

对于价值模型:

这就是很简单的平方损失。然后还有一个所谓的熵损失,这是用来鼓励探索的:

那么总体损失就是:

当然,这里的损失其实完全可以自己设计,但是一般遵循这里的 clip 原则,因为 ppo 的核心就是不能让模型训练参数更新过大,否则就会越训练越偏。
这里还有个与 ref model 的 KL 散度项,也是为了维持模型不要偏太远,即在目标函数中添加上:

举个例子
公式太多不想看?那就从例子出发来捋一下强化学习的过程。
例如使用 PPO 去训练一个大语言模型:

一步一步来的话,就是:

一般来说,强化学习训练 LLM 时,都是用奖励模型或者奖励函数对模型生成的整体回答给一个奖励,然后把这个奖励复制或者平分给每个 token,然后用它来计算优势值。
然后根据 PPO 的目标函数来计算梯度啦,计算完一个批次的数据的梯度以后就可以用来更新网络,直到它拟合。
这里插一下 DPO。
04
DPO(Direct Preference Optimization)
从 PPO 的目标函数出发:

这个最大化目标可以改写成最小化目标:

这个目标接着可以写成:

最后得到:

那么对于分母,可以把它构造成一个概率分布:

那么上面的目标函数可以写为:

也就是说,我们训练出一个最优奖励模型的时候,实际上它已经给出最优的策略网络。那么也就是说,训练奖励模型和训练策略网络实际上是等价的。
那这就告诉我们,像之前的先训练奖励模型,然后通过奖励模型再来训练策略模型的这个范式,实际上并不需要先显式训练出一个奖励模型,而是可以直接用策略模型代替奖励模型去进行训练,从而得到我们最终需要的对齐模型。这两种方法在数学上是完全等价的。
所以 DPO 就绕过了 online 强化学习,直接用策略网络代替奖励模型去进行训练,从而达到同样的目的。

这里奖励模型就完全可以用策略模型进行替代。
那么来看一下我们一般是如何来训练 reward model 的,一般来说,训练 reward model 有两种方法。
第一种是采集 LLM 的两个回答,构造偏好对,来训练奖励模型给正样本更高的分数,负样本更低的分数。
它的数据组织形式是:

两两配对的模式被称为 BT model(Bradley-Terry)。

那么把它代入我们的奖励模型的目标函数中有:

这里的 D 就是采集的偏好数据集。之前推导 DPO 的时候,我们有:

那么它代入奖励模型的目标函数中去有:
那么这里就成功把训练奖励模型,改成了直接训练策略模型,从而绕过了训练奖励模型的过程,那么后面的 online 强化学习过程也就不需要了,这就是所谓的直接偏好训练。
其实 DPO 弯弯绕绕这么多,实际上执行起来很简单,几乎就是 SFT,以上的公式推导,是为了说明 DPO 的训练目标在数学上等价于 PPO 的强化学习训练目标,从而说明 PPO 可以做成的事,DPO 按道理也应该可以做成。
这里给一些大白话的 insight,DPO 首先给出了 PPO 训练最优状态下策略网络与奖励网络的关系,也就是说如果满足了这个关系,PPO 的强化学习这一步都不用训练了。
那么我们现在假定它满足这个关系了,那么我们还差一个问题,就是奖励模型哪里来的?它是经过 reward model 的训练过程得来的。
而如果满足这个关系,我们不再需要把奖励模型显式地训练出来,而是直接把策略网络代入奖励模型的训练过程。
那么这个过程中,奖励模型的目标通过策略网络得到了实现,也就是说,训练奖励模型的过程,使得了这个关系得到了拟合式成立,从而不再需要真正的强化学习训练。
05
GRPO

GRPO 的目标函数为:

其实主要的就是把 GAE Advantage 估计改为了组间相对优势估计:

那么这样一改,就不需要 value model 了,从而减少了训练开销。
GRPO 的训练伪代码为:

06
DAPO
DAPO 的目标函数是:

这是字节新发布的基于 GRPO 优化的一个算法,主要做了以下四个优化:


第二个动态采样,更像是一种训练上的工程技巧,说的是在训练过程中,模型可能对很多问题都回答的很好。
那么这样一来,对同一个批次中的很多问题,模型采样一组回答,可能都会获得最好的奖励,比如 1,那么这样一来,每个回答的组间优势都变成了 0,那么这样的数据就无法提供有效的梯度供模型训练。
所以在训练目标中,加入了这一项:

也就是说对于输入的样本持续采样,直到满足这个条件才把这一批数据拿去训练。
第三个是所谓的 token level 的损失计算。由于 GRPO 是先对每一条回答基于回答的长度做了一个平均,再对 G 个回答做一个平均。即:

而由于每个回答的长度不一致,这就会导致实际上对多个回答的每个 token 的 loss 除以了一个不一样的因子,这会导致一些很长的回答对 loss 的贡献减小。
而在 long-COT 的训练过程中,我们希望学习到有效的长回答,所以希望对长回答也给相应更大的 loss。
DAPO 把 GRPO 的这种 loss 计算方式称为 sample-level loss。而 DAPO 把这个范式改成了:

也就是所有的 token 的 loss 都施加同样的平均因子,这样对于长回答整体上就给了一个相对更大的 loss。
最后一个是说之前训练模型的时候,如果模型生成的回答太长了,超过了限定值,就会被直接阶段。而对于这些被阶段的回答,会施加一个惩罚性的奖励。
而这种惩罚性的信号可能又会引入训练噪声,因为可能虽然回答很长,但是却是逻辑上非常正确的回答,那模型就会不知道这个回答到底是好的还是不好的。
那 DAPO 在这里实施了一个跟长度有关的线性奖励:

除了上面四个优化技巧以外,DAPO 还把 KL 散度约束给去掉了,理由是:
“However, during training the long-CoT reasoning model, the model distribution can diverge significantly from the initial model, thus this restriction is not necessary. Therefore, we will exclude the KL term from our proposed algorithm. ”
就是说 long-COT 训练过程中,模型本来就是要在较大程度上偏离原始的状态,所以干脆省了用于约束模型更新的 KL 散度。
DAPO 的训练流程伪代码为:

如何学习AI大模型 ?
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓
CSDN粉丝独家福利
这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】
读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
👉1.大模型入门学习思维导图👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)
👉2.AGI大模型配套视频👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。

👉3.大模型实际应用报告合集👈
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)

👉4.大模型实战项目&项目源码👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战项目来学习。(全套教程文末领取哈)
👉5.大模型经典学习电子书👈
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)
👉6.大模型面试题&答案👈
截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)
为什么分享这些资料?
只要你是真心想学AI大模型,我这份资料就可以无偿分享给你学习,我国在这方面的相关人才比较紧缺,大模型行业确实也需要更多的有志之士加入进来,我也真心希望帮助大家学好这门技术,如果日后有什么学习上的问题,欢迎找我交流,有技术上面的问题,我是很愿意去帮助大家的!
这些资料真的有用吗?
这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。


CSDN粉丝独家福利
这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】
读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈
更多推荐


所有评论(0)