简介

本文详解了大模型训练中强化学习算法的发展历程,从传统PPO到新兴DPO、GRPO、Dr.GRPO、DAPO、GSPO等算法的原理、优缺点及适用场景。文章分析了各算法如何解决大模型对齐问题,提供了工程实现指南和算法选择建议,并展望了未来发展趋势。对于想深入了解大模型训练中强化学习应用的读者,是一份全面的技术参考。

最近,有一些对AI算法感兴趣的小伙伴问我一些关于强化学习的问题。

大概主要有这些疑惑:

为什么大模型训练过程中需要强化学习?

强化学习的目的是干什么的?

强化学习和有监督学习的区别是什么?

都有哪些强化学习算法?适用场景都是啥?

这些强化学习算法的优缺点都是啥?到底如何在工程上实现呢?

我在这篇文章中将进行详细的分享,并尽可能举一些通俗易懂的案例来讲解,感兴趣的伙伴们可以一起探讨。

当然,由于个人水平有限,如果我哪里写的不对,还请及时给我提出,个人觉得,强化学习领域值得探索的地方还非常多。同时文末,还附了不少对强化学习算法的其他同类文章的总结。

一、为什么大模型训练过程中需要

强化学习?

在大语言模型的训练流程中,通常包括三个主要阶段:

  1. 无监督预训练
  2. 有监督微调
  3. 基于人类反馈的强化学习

这三个阶段各有不同的目标和作用。

1、预训练的目标与局限:
  • 目标:通过在大规模文本语料上进行自回归或掩码语言建模(如预测下一个词),让模型学习通用的语言表示、世界知识和基本推理能力。
  • 局限:

(1)模型只是“模仿”训练数据中的语言模式,并不理解任务指令(比如“写一封感谢信”、“总结这篇文章”)。

(2)无法保证输出符合人类期望(如安全性、有用性、无偏见等)。

(3)对话或指令遵循能力弱(因为预训练数据多为网页、书籍等非交互式内容)。

所以,仅靠预训练得到的模型虽然“知识丰富”,但难以直接用于实际应用场景(如聊天机器人、客服助手等)。这就需要后续的对齐过程——即有监督微调和强化学习阶段。

2、有监督微调的作用

目标:将预训练模型调整为能够理解和遵循人类指令,并生成高质量、任务相关的响应
方法:

(1)使用人工标注的 (指令, 期望回答) 数据对(例如:“写一首关于春天的诗” → “春风拂面花自开……”)。

(2)在这些数据上以监督学习的方式微调模型。

效果:

(1)模型学会执行特定任务(问答、摘要、翻译、创作等)。

(2)提高指令遵循能力。

(3)初步提升输出的相关性和格式规范性。

可以说,有监督学习SFT是“教模型怎么做”的阶段。

3、基于人类反馈的强化学习的作用

问题:即使经过有监督微调,模型仍可能:

(1)生成看似合理但事实错误的内容(幻觉)。

(2)回答冗长、重复、不够有帮助。

(3)在多个合理回答中,不知道哪个更受人类偏好。

(4)说出不合适的内容。

强化学习RLHF的目标是:进一步对齐模型输出与人类偏好,使其在多个可行回答中选择人类认为最好的那个。
常规方法(以前的大模型RLHF的典型流程):
  1. 收集人类偏好数据:给定一个提示,让模型生成多个回答,由人类标注哪个更好(成对比较)。
  2. 训练奖励模型:用这些偏好数据训练一个能预测人类偏好的打分模型。
  3. 用强化学习优化语言模型:以奖励模型的打分为信号,使用 PPO(近端策略优化)等算法微调语言模型,使其生成更高奖励(即更符合人类偏好)的回答。
效果:

(1)提升回答的有用性、真实性、安全性、简洁性等主观质量。

(2)减少有害、冒犯或误导性内容。

(3)使模型行为更“人性化”。

RLHF 是“教模型做得更好”的阶段,聚焦于偏好对齐而非任务正确性。

                     简单总结                           
阶段 输入数据 目标 关键能力提升
预训练 大量无标签文本 学习语言和世界知识 语言建模、常识推理
SFT (指令, 理想回答)对 学会执行具体任务 指令遵循、任务完成
RLHF (提示, 多个回答, 人类偏好) 对齐人类价值观和偏好 输出质量、安全性、有用性

本文详细对比了PPO、DPO、GRPO、Dr.GRPO、DAPO、GSPO、GSPO-token的技术原理、工程实现、开源算法框架、适用场景及该算法的优缺点(比如训练难度、训练稳定性、训练成本等)等等。

由于写得比较详细,内容确实比较长,所以写完后又总结了一个精简版,想要细致研究的同学可以看后面的内容,以下是核心内容总结。

太长不看版,直接看对比总结

强化学习范式

On-Policy: 训练数据由需要训练的策略本身通过与环境的互动产生,用自己产生的数据来进行训练(可以理解为需要实时互动)。(PPO、GRPO、Dr.GRPO、GSPO、DAPO等)

Off-Policy: 训练数据预先收集好(人工或者其它策略产生),策略直接通过这些数据进行学习。(DPO等)

大白话一下这两种范式

On-Policy:像一个正在学车的学员。他必须自己坐上驾驶座(与环境互动),开出来的驾驶数据(转弯角度、刹车时机)才能用来分析并改进他自己的驾驶技术。别人的开车数据对他没用。

Off-Policy:像一个在驾校看教学录像的学员。他不需要真的上路,通过反复观看专家(或其他学员)的驾驶录像(预先收集的数据),就能学习驾驶技巧。他甚至可以同时看多个不同风格的录像来学习。

(1)算法的核心思想、适用场景、典型案例

(2)算法优缺点综合对比

下面是详细内容,我尽可能把每一种强化学习算法都剖析清楚,并举一些易懂的案例。

这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

二、强化学习算法深度对比分析

这部分主要是深入解析PPO、DPO、GRPO及其后续演进算法(Dr.GRPO, DAPO, GSPO, GSPO-token)的核心技术原理。

为了使这些复杂的概念更易于理解,我将为每种算法提供一个通俗易懂的案例,旨在阐明其独特的优化思想和学习范式。这些案例将覆盖从机器人控制、AI助手训练到学生答题和项目管理等多个场景,帮助大家从不同维度把握各算法的精髓。

PPO - 近端策略优化

PPO是由OpenAI提出的一种基于策略梯度的强化学习算法,因其在训练稳定性、样本效率和实现简洁性之间取得了出色的平衡,PPO是强化学习领域的经典算法,也是早期RLHF流程中的关键组件。

但在2023年DPO提出后,特别是在2024年,由于DPO的简单性和稳定性,DPO及其变体已成为LLM对齐领域更主流的首选方法,PPO因其复杂性和不稳定性,在新研究中的应用已相对减少。

PPO的核心思想在于限制每次策略更新的幅度,避免因过大的策略变化导致训练过程不稳定甚至崩溃,从而实现了“小步快跑、稳步提升”的优化策略 。

技术原理:

PPO的技术原理主要建立在Actor-Critic架构之上,并通过重要性采样和概率比裁剪等关键技术,解决了传统策略梯度方法中训练不稳定和数据利用率低的问题。

(1)Actor-Critic架构

PPO算法通常采用Actor-Critic(演员-评论家)架构,该架构包含两个神经网络:策略网络和价值网络。通常在实践中,为了共享特征提取器以提升效率,Actor和Critic网络通常共享大部分主干网络(如Transformer的编码器部分),只有最后的输出头是独立的。

  • 策略网络 (Actor) :负责学习一个策略函数 π(a|s),即在给定状态 s 下,输出一个动作 a 的概率分布。这个网络是直接与环境交互、执行动作的主体,相当于一个“舞者”在舞台上表演。在语言模型中,Actor就是大语言模型本身,它根据输入的提示生成文本序列(动作)。
  • 价值网络 (Critic) :负责评估当前状态 s 的价值 V(s),或者状态-动作对 (s, a) 的价值 Q(s, a)。Critic不直接选择动作,而是对Actor选择的动作进行打分,评估其好坏,相当于台下的“评委” 。这个打分(通常是优势函数)会作为权重,指导Actor网络的更新方向。通过引入Critic,PPO能够利用时序差分(TD)学习来降低策略梯度估计的方差,从而提高样本效率和训练稳定性。

(2)重要性采样

PPO是一种近似的离线策略(Off-Policy)算法。在强化学习中,在线策略(On-Policy)算法要求用于收集数据的策略(行为策略)和当前需要优化的策略(目标策略)必须是同一个,这导致数据只能使用一次,效率低下 。而离线策略算法允许使用由旧策略收集的数据来更新当前策略,极大地提高了数据利用率。

PPO通过重要性采样 技术实现了这一点。重要性采样权重 IW 定义为当前策略 π_θ_new 与旧策略 π_θ_old 在相同状态下选择某个动作 a 的概率之比:IW = π_θ_new(a|s) / π_θ_old(a|s)。这个权重可以校正由于使用旧数据而产生的偏差,使得我们可以用旧策略生成的数据来无偏地估计新策略的期望回报

(3)概率比裁剪

尽管重要性采样解决了数据复用问题,但它也引入了新的风险:当新旧策略差异过大时,重要性权重可能变得非常大,导致梯度估计方差增大,训练过程剧烈震荡。为了解决这个问题,PPO引入了其核心创新——概率比裁剪

PPO的目标函数不再是直接最大化期望回报,而是最大化一个“截断”后的代理目标函数:

L^CLIP(θ) = E[ min( r_t(θ) * A_t, clip(r_t(θ), 1-ε, 1+ε) * A_t ) ]

其中:

  • r_t(θ) = π_θ_new(a_t|s_t) / π_θ_old(a_t|s_t) 是新旧策略的概率比。
  • A_t 是优势函数,衡量动作 a_t 相对于平均表现的好坏。
  • ε 是一个超参数,通常设为0.1或0.2,它定义了策略更新的“信任区域”。

这个公式的精妙之处在于,当 r_t(θ) 的值在 [1-ε, 1+ε] 这个区间内时,优化目标就是标准的策略梯度目标。一旦 r_t(θ) 超出这个范围,优化目标就会被“裁剪”到边界值。

这意味着,即使某个动作的优势 A_t 很大,PPO也不会允许策略概率发生剧烈变化,从而强制策略更新保持在一个相对较小的、可控的范围内,保证了训练的稳定性 。

大白话案例讲PPO算法——机器人学打高尔夫球

场景设定:机器人、球杆与球洞

想象我们正在训练一个机器人打高尔夫球。

机器人(Agent)的目标是学会一种最优的挥杆策略,以便用最少的杆数将球打入洞中。环境(Environment)就是高尔夫球场,状态(State)是球的位置、球杆的角度等,动作(Action)是机器人选择的不同挥杆方式(如力度、角度),奖励(Reward)则是根据击球结果给出的分数,例如,球离洞更近则奖励为正,更远则为负。

策略网络 的角色:选择挥杆动作

在这个场景中,机器人的“大脑”就是策略网络 。每当机器人准备击球时,它会观察当前的环境状态(球的位置、风向等),然后策略网络会根据这些输入,计算出一系列可能的挥杆动作(如“轻推”、“大力击球”、“向左偏30度击球”)的概率。

机器人会根据这个概率分布随机选择一个动作来执行。一开始,机器人的策略是随机的,可能经常打出很糟糕的球。

价值网络的角色:评估动作好坏

为了告诉机器人它打得有多好,我们还需要一个价值网络。这个网络就像一个经验丰富的教练,它也会观察球场的状态,并评估在当前状态下,机器人采取某个动作的长期期望得分。

例如,机器人打了一个球后,评价函数会评估这个击球动作的价值:“这个球打得不错,虽然没进洞,但为下一杆创造了很好的机会,我给这个动作打0.8分。” 这个分数(即优势函数)反映了动作相对于平均水平的优劣。

PPO的“教练”角色:循序渐进,避免动作变形

现在,PPO算法的核心作用就体现出来了。PPO就像一个耐心且专业的教练。它不会允许机器人在一次训练后就完全改变其挥杆风格。

相反,PPO会告诉机器人:“你刚才那个击球动作比平均水平要好(优势函数为正),所以你应该稍微增加在未来类似情况下选择这种击球方式的概率。

但是,记住,每次只调整一点点!” 这个“一点点”就是由PPO中的概率比裁剪机制控制的。教练(PPO)会设定一个安全范围([1-ε, 1+ε]),确保机器人对任何动作的概率调整都不会超出这个范围。

这样,机器人就能在稳定、可控的过程中,逐步优化其挥杆策略,最终学会如何精准地将球打入洞中,而不会因为一次错误的巨大调整导致“动作变形”,从而前功尽弃。

DPO - 直接偏好优化

DPO(Direct Preference Optimization,直接偏好优化)是近年来在大语言模型对齐领域兴起的一种高效算法。

与传统的基于人类反馈的强化学习流程不同,DPO通过数学推导,将强化学习优化问题转化为一个带约束的监督学习分类问题

它依然是在做“优化”,只是形式从复杂的策略梯度优化变成了一个更稳定的监督学习损失函数优化。DPO直接使用人类偏好数据来微调语言模型,极大地简化了训练流程并降低了计算成本。

技术原理:

DPO的核心思想是将语言模型的对齐问题转化为一个直接的偏好优化问题,其技术原理主要围绕如何利用成对的偏好数据来直接调整模型策略。

(1)从人类偏好数据中直接学习

传统的RLHF方法通常包含三个阶段:1)监督微调;2)训练一个奖励模型来模拟人类偏好;3)使用PPO等强化学习算法,根据奖励模型的反馈来优化语言模型。这个过程复杂且计算成本高昂 。

DPO则另辟蹊径,它直接使用人类标注的偏好数据进行训练。这些数据通常以三元组 (x, y_w, y_l) 的形式存在,其中 x 是输入提示,y_w 是人类偏好的“好”回答,而 y_l 是“差”回答 。

DPO的目标就是让模型学会直接生成 y_w 而不是 y_l

(2)绕过显式奖励模型

DPO最大的创新在于它无需训练一个显式的奖励模型。它从理论上证明了,奖励函数和最优策略之间存在一个解析的映射关系。

因此,我们可以直接将策略优化问题转化为一个偏好建模问题。DPO的目标是最大化π_θ(y_w|x)与π_θ(y_l|x)的比值(相对于参考模型π_ref的比值)。

这确保了模型在学习偏好时,不会因单纯提高某个回答的绝对概率而“遗忘”其他能力或导致分布坍塌。

这是DPO设计精妙的核心。

(3)基于Bradley-Terry模型的优化目标

DPO的损失函数设计借鉴了Bradley-Terry模型,这是一个用于处理成对比较数据的经典统计模型。其优化目标可以表示为:

L_DPO(π_θ; π_ref) = -E_(x,y_w,y_l)~D [ log σ( β * log(π_θ(y_w|x) / π_ref(y_w|x)) - β * log(π_θ(y_l|x) / π_ref(y_l|x)) ) ]

其中:

  • π_θ 是当前待优化的策略模型。
  • π_ref 是一个固定的参考模型(通常是SFT后的模型),用于防止模型偏离原始能力太远。
  • σ 是Sigmoid函数。
  • β 是一个控制与参考模型偏离程度的超参数。

这个损失函数的本质是,对于每一对偏好数据,我们希望模型赋予偏好回答 y_w 的“相对改进”要大于非偏好回答 y_l 的“相对改进”。通过最小化这个损失,模型能够逐步调整其生成策略,使其输出更符合人类的偏好排序 。

大白话案例讲DPO算法——训练AI助手生成邮件回复

场景设定:生成专业且友好的邮件

假设我们有一个基础的语言模型,我们希望将其微调为一个能够生成专业、友好且符合公司品牌语调的邮件回复助手。

传统的做法是收集大量高质量的邮件回复作为“标准答案”进行监督微调,但这成本很高。DPO提供了一种更灵活的方式。

偏好数据:人工标注的邮件回复优劣对比

我们不需要为每个邮件提示写一个“完美”的标准答案。相反,我们可以让模型针对同一个邮件提示(例如,“客户投诉产品质量问题”)生成多个不同的回复。

然后,由人工标注员对这些回复进行成对比较,选出他们认为更好的一对。例如:

  • 回复A (y_w - 偏好) :“尊敬的客户,非常抱歉给您带来不便。我们已收到您的反馈,并正在紧急调查此事。我们的客服经理将在24小时内与您联系,为您提供解决方案。感谢您的耐心。”
  • 回复B (y_l - 非偏好) :“我们知道了,会处理的。”

通过这种方式,我们可以快速构建一个大规模的偏好数据集,其中包含了大量 (提示, 好回复, 差回复) 的三元组 。

DPO的学习方式:模仿人类偏好,而非追求单一分数

现在,DPO算法开始工作。它不会试图去学习一个复杂的“邮件质量评分函数”(即奖励模型)。

相反,它直接学习人类在比较中表现出的偏好模式。DPO的损失函数会告诉模型:“对于同一个提示,你应该让好回复(回复A)的生成概率,相对于参考模型,增加得更多;同时,让差回复(回复B)的生成概率,相对于参考模型,减少得更多。”

这个过程就像是直接记住妈妈的教诲:“西兰花比炸鸡更健康”,而不需要先学会如何给每种食物的营养成分打分,再去选择。

DPO通过直接优化这种偏好排序,让模型逐渐学会生成更符合人类期望的、更专业友好的邮件回复,整个过程更加直接、高效且稳定 。

GRPO - 组相对策略优化

GRPO(Group Relative Policy Optimization,组相对策略优化)是DeepSeek团队在其DeepSeekMath模型中提出的一种新颖的强化学习算法,旨在解决PPO等算法在训练大型语言模型进行复杂推理任务时面临的挑战 。

GRPO的核心创新在于它放弃了使用独立的价值网络来估计优势函数,而是通过在同一组内对多个候选输出进行相对比较来计算优势,从而简化了训练流程并提高了稳定性。

GRPO虽然无需训练一个神经网络作为Critic,但它仍然需要一个奖励函数 来对组内样本进行打分。

这个奖励函数可以是基于规则的(如代码执行的通过率),也可以是一个预先训练好的奖励模型。这是它和DPO(完全不需要奖励模型)的一个关键区别。

技术原理:

GRPO的技术原理围绕着“组内相对评估”这一核心思想展开,通过巧妙地利用组内样本的统计特性来替代传统Critic网络的功能。

(1)组内样本的相对奖励作为基线

在传统的Actor-Critic方法中,Critic网络的作用是提供一个基线,即状态的价值 V(s),用于计算优势函数 A(s, a) = Q(s, a) - V(s)。这个基线有助于降低梯度估计的方差。

GRPO则提出了一种更简单的获取基线的方法:对于同一个输入提示 q,从当前策略 π_θ 中采样 G 个不同的输出 {o_1, o_2, ..., o_G},然后使用一个奖励模型或规则化的奖励函数对这 G 个输出进行打分,得到一组奖励 {r_1, r_2, ..., r_G}。这组奖励的平均值 μ_G 就可以被看作是一个动态的、针对该特定提示的基线 。

(2)无需独立的价值网络

GRPO最大的优势在于它完全摒弃了独立的价值网络 。在PPO中,训练一个准确的价值网络本身就是一项挑战,且需要额外的计算资源和调优。

GRPO通过组内奖励的平均值作为基线,巧妙地规避了这个问题。这使得GRPO的架构更加简洁,训练过程也更加稳定,因为它避免了因价值网络估计不准而带来的噪声。

这种设计特别适用于那些难以定义明确价值函数的任务,例如开放式文本生成或复杂推理 。

(3)基于组内平均奖励和标准差计算优势

在确定了组内奖励的平均值 μ_G 作为基线后,GRPO计算每个输出 o_i 的优势A_i。这个优势是标准化的,计算公式如下:

A_i = (r_i - μ_G) / (σ_G + ε)

其中:

  • r_i 是输出 o_i 的奖励。
  • μ_G 是组内所有奖励的平均值。
  • σ_G 是组内所有奖励的标准差。
  • ε 是一个很小的常数,用于防止除零错误。

这个标准化的优势值 A_i 反映了输出 o_i 在其所在组内的相对表现。如果 A_i 为正,说明该输出的奖励高于组内平均水平;如果为负,则低于平均水平。

这种基于组内相对比较的优势计算方法,使得模型能够专注于学习如何在一组候选答案中“脱颖而出”,而不是去追求一个绝对的、可能难以定义的“最优”分数。

大白话案例讲GRPO算法——学生考试答题

场景设定:同一道难题的多种解法

想象一位老师正在批改一道非常复杂的数学难题。这道题没有唯一的标准答案,而是有多种不同的解题思路和方法。老师希望鼓励学生不仅能解出答案,还能用更简洁、更优雅、更具创造性的方法来解题。

组内比较:解法之间的相对优劣

老师没有为这道难题预设一个固定的“满分标准”。相反,她收集了全班同学(相当于一个“组”)的所有解法。

然后,她对这些解法进行相对比较。她会评估每个解法的准确性、步骤的清晰度、逻辑的严谨性等,并给每个解法打一个分数。例如,她可能会发现,解法A(奖励 r_A)非常巧妙但有小错误,解法B(奖励 r_B)步骤繁琐但完全正确,解法C(奖励 r_C)则毫无章法。

GRPO的评估方式:不依赖标准答案,只看组内排名

现在,老师(GRPO算法)的评估方式来了。她首先计算出所有解法得分的平均分 μ_G。这个平均分就代表了这次考试全班同学在这道题上的整体表现水平。然后,对于每一个学生的解法,老师都会计算其得分与平均分的相对差距,并用所有得分的标准差 σ_G 来标准化这个差距。这个标准化的分数就是该解法的**“优势”**。

  • 如果一个学生的解法得分远高于平均分,他的优势值就是正的,老师会鼓励他未来多采用这种解题思路。
  • 如果一个学生的解法得分远低于平均分,他的优势值就是负的,老师会建议他避免这种思路。

通过这种方式,GRPO让学生(模型)学会的不是去追求一个虚无缥缈的“绝对满分”,而是学会在与其他同学(组内其他样本)的竞争中,如何让自己的解法(输出)表现得更好。这种相对评估的方式,使得学习过程更加灵活和稳定,尤其适用于那些没有唯一正确答案的创造性任务 。

Dr.GRPO - 修正版GRPO

Dr.GRPO(Group Relative Policy Optimization Done Right)是对原始GRPO算法的一次重要修正,旨在解决原始GRPO算法中存在的优化偏差问题,特别是与响应长度相关的偏见。

Dr.GRPO通过对GRPO的目标函数进行简单的修改,移除了可能导致偏见的归一化项。

Dr.GRPO通过移除长度归一化,解决了长度偏差,使得梯度估计更公平。Dr.GRPO用组内平均奖励作为基线,这个基线本身是基于当前策略采样的,在策略迭代过程中是变化的。

Dr.GRPO的核心贡献是消除了一个明确的、有害的偏差源(长度偏差),而非实现了理论上的无偏估计。

技术原理:

Dr.GRPO的核心思想就是“拨乱反正”,通过简单地移除这些有问题的归一化项来消除偏见。

具体来说,Dr.GRPO去除了公式中的长度归一化项和奖励标准差归一化项。这一修改使得优势估计回归到一种更纯粹、无偏的形式,其梯度计算方式也恢复到了与PPO类似的、基于蒙特卡洛回报和无偏基线的形式。

通过这种方式,Dr.GRPO确保了模型在训练过程中,无论是正确还是错误的回答,其长度都不会受到算法的扭曲性激励。实验结果表明,这种看似微小的改动效果显著:它能有效遏制模型在错误时生成越来越长的“废话”,从而大幅提升了token效率,同时保持了与原始GRPO相当的推理性能。

(1)解决GRPO的长度偏见问题

Dr.GRPO最核心的改进之一是彻底解决了GRPO算法中存在的响应长度偏见问题。

在原始的GRPO目标函数中,为了计算每个token对总损失的贡献,会将每个token的梯度除以该响应的总长度|o_i|。这个设计的初衷可能是为了公平地比较不同长度的响应,但实际上却引入了一个严重的副作用。

当模型生成一个错误的回答时,其优势值为负,意味着这个回答应该受到惩罚。然而,由于损失函数中存在的1/|o_i|项,这个负的惩罚被分摊到了响应的每一个token上。其结果是,一个错误的响应越长,分摊到每个token上的惩罚就越小。

这种机制在无意中鼓励了模型生成冗长的错误回答。因为对于一个错误的答案,写得越长,模型在参数更新时受到的“相对惩罚”就越轻,这使得生成冗长但无效的内容成为一种“逃避”惩罚的策略。

这种现象在训练后期尤其明显,当模型发现难以通过提高内容质量来提升奖励时,就可能倾向于通过增加回答长度来“稀释”惩罚,导致输出变得啰嗦、低效,甚至产生所谓的“过度思考”现象。

Dr.GRPO通过简单地移除这个长度归一化项,使得每个token的梯度贡献不再受到响应总长度的影响。

这样一来,无论一个错误的回答有多长,其总的负梯度都会被完整地施加于策略模型,从而有效地遏制了模型生成冗长错误回答的倾向,显著提升了token效率和推理质量 。

(2)移除长度和奖励的归一化项

Dr.GRPO的修正策略非常直接且有效,其核心在于从GRPO的优化目标中移除了两个关键的归一化项:响应长度的归一化项 1/|o_i| 和奖励的标准差归一化项 1/std(R)

这两个项在原始GRPO中被引入,本意是为了稳定训练,但实际上却引入了难以察觉的偏见。第一个长度归一化项 1/|o_i| 导致了前述的“鼓励冗长错误回答”的问题。第二个标准差归一化项 1/std(R) 则引入了“问题难度偏见”。在GRPO中,优势函数的计算会除以该问题下所有回答奖励的标准差。

这意味着,对于那些所有回答质量都非常接近(标准差小)的问题,其梯度更新会被不成比例地放大;而对于回答质量差异很大(标准差大)的问题,其梯度更新则会被压缩 。

这种设计使得模型在训练过程中可能会过度关注那些“简单”或“困难”到所有回答都差不多的问题,而忽略了那些能够产生多样化、高质量回答的问题,从而破坏了训练样本的平衡性。

Dr.GRPO通过同时移除这两个归一化项,彻底消除了这两种偏见。其优势函数的计算被简化为 A_i = R(q, o_i) - mean({R(q, o_j)}),即每个回答的奖励与组内平均奖励的简单差值 。

这种无偏的优势估计方式,使得策略梯度能够更真实地反映每个回答相对于组内平均水平的优劣,不再受到回答长度或问题难度的扭曲。

实验表明,移除长度归一化项贡献了约70%的token效率提升,而移除标准差归一化项则贡献了约30%的泛化性能提升,证明了这两项修改的有效性 。

(3)恢复更接近PPO的无偏优化目标

通过移除GRPO中引入的长度归一化和标准差归一化项,Dr.GRPO实际上使其优化目标恢复到了更接近经典PPO算法的无偏形式。

在PPO中,优势函数通常通过广义优势估计等方法计算,其本质是比较当前动作的价值与一个无偏基线(如状态价值函数)的差异。

虽然GRPO用组内平均奖励替代了价值函数作为基线,但其引入的额外归一化项破坏了这种无偏性。Dr.GRPO的修正,使得优势估计重新回到了一个相对纯粹和公平的状态。

具体来说,Dr.GRPO的优势函数 A_i = R(q, o_i) - mean({R(q, o_j)}) 可以被看作是一种蒙特卡洛回报估计,其中组内平均奖励 mean({R(q, o_j)}) 充当了一个无偏的基线。

这与PPO中利用价值函数作为基线的思想一脉相承。因此,Dr.GRPO的优化目标可以被理解为在GRPO的“组相对”框架下,重新应用了PPO的无偏策略梯度原理。这种回归不仅解决了GRPO的特定偏见问题,也使得算法的理论基础更加坚实。

论文作者指出,这些简单的修改实际上恢复了带有无偏基线的蒙特卡洛回报估计的PPO目标 。这种设计上的“拨乱反正”,使得Dr.GRPO在保持GRPO简洁高效(无需价值网络)的优点的同时,获得了更稳定、更可靠的优化效果,最终在各种推理任务上取得了显著的性能提升。

这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

大白话案例讲Dr.GRPO算法——改进的作文评分系统

为了更清晰地理解Dr.GRPO相对于GRPO的改进,我们可以将其比作一个作文评分系统的升级。在这个系统中,老师(奖励模型)需要评估多篇关于同一主题的作文(回答),并以此来指导学生(策略模型)提高写作水平。
场景设定:多篇作文的相对评分

假设老师布置了一篇命题作文,学生们提交了很多份不同的答卷。老师需要对这些作文进行评分,并告诉学生如何改进。

在GRPO的框架下,老师会先给每篇作文一个总分,然后计算所有作文的平均分。每篇作文的“优势”就是其分数与平均分的差值。这个差值决定了学生在下次写作时,是应该继续采用类似的风格,还是应该避免。

GRPO的问题:鼓励冗长但空洞的文章

然而,原始的GRPO评分系统存在一个缺陷:它在计算每篇作文的“贡献”时,会除以这篇作文的字数。

这个规则的本意可能是想鼓励简洁,但实际上却产生了反效果。对于那些写得又长又差、离题万里的作文(负优势),由于字数很多,其“负面贡献”被大大稀释了。

这意味着,即使一个学生写了一篇非常糟糕的长篇大论,他在这次评分中受到的“惩罚”可能还不如一个写了简短但同样糟糕作文的学生。

久而久之,学生们会发现一个“窍门”:如果写不好,那就尽量写长,这样可以减轻每次失败带来的“痛苦”。这导致了大量冗长、空洞、无效的文章出现,即GRPO中的“长度偏见”问题。

Dr.GRPO的改进:关注内容质量,而非文章长度

Dr.GRPO就像是这个评分系统的升级版。它取消了“按字数稀释贡献”的规则。现在,无论作文写得多长,其总体的质量(分数与平均分的差值)都会被完整地计入评估。

一篇又长又差的文章,其总的负面影响会完全体现出来,学生将不得不直面其质量问题,而无法再通过“注水”来逃避惩罚。

同时,Dr.GRPO也取消了根据全班分数分布来调整权重的设计,确保每个学生的作文都根据其自身质量被公平对待,而不会因为全班水平普遍高或低而受到不公正的放大或缩小。

通过这两个简单的修改,Dr.GRPO的评分系统变得更加公平和高效,它引导学生专注于提升作文的核心内容质量,而不是玩弄字数游戏,最终实现了更有效的学习。

DAPO - 解耦裁剪与动态采样策略优化

DAPO(Decoupled Clip and Dynamic sAmpling Policy Optimization)是由清华大学与字节跳动联合团队提出的一种先进的强化学习算法,旨在解决大规模语言模型在复杂推理任务(如数学竞赛)中训练时遇到的一系列挑战。

DAPO在GRPO的基础上进行了多项关键改进,其核心是引入了四大创新技术:Clip-Higher、动态采样、Token级策略梯度损失和过长奖励塑形。这些技术共同作用,旨在提高训练的稳定性、效率和最终模型的性能。

技术原理:

(1)DAPO算法的成功得益于其精心设计的核心技术,每一项都针对大规模强化学习训练中的特定痛点提供了有效的解决方案。

  1. Clip-Higher策略:在传统的PPO和GRPO算法中,重要性采样比的裁剪范围通常是上下对称的(例如,[1-ε, 1+ε])。

  2. 这种设计虽然能限制策略更新的幅度,保证训练的稳定性,但也无意中抑制了模型的探索能力。特别是对于那些在旧策略中概率较低的“探索型”token,即使当前梯度显示它们应该被鼓励(即优势A>0),其概率的提升幅度也受到上裁剪范围的严格限制。这容易导致策略的熵值迅速下降,即“熵崩溃”,使得模型生成的响应趋于单一和保守。

  3. DAPO提出的Clip-Higher策略,通过解耦上下裁剪范围,将上裁剪范围(ε_high)设置得比下裁剪范围(ε_low)更大(例如,ε_low=0.2, ε_high=0.28),从而为低概率token的探索提供了更大的空间,有效打破了熵崩溃的困境,促进了策略的多样性和探索性。

  4. 动态采样 :在强化学习训练过程中,经常会遇到一些“简单”或“困难”的提示,导致模型生成的所有响应都获得相同的奖励(例如,全部正确或全部错误)。

    在这种情况下,组内奖励的标准差为0,计算出的优势也为0,导致梯度消失,这些样本对模型的更新没有贡献,降低了训练效率。DAPO通过引入动态采样机制来解决这个问题。

  5. 在构建训练批次时,算法会进行过采样,并主动过滤掉那些组内奖励标准差为0的样本(更常见或更鲁棒的做法是设定一个非常小的阈值(如1e-8),因为由于数值精度问题,标准差可能不会精确等于0),持续生成新的样本,直到批次中充满能够提供有效梯度信号的提示为止。

    这种策略确保了每个训练步骤都能充分利用,显著提升了训练效率和模型的收敛速度 。

  6. Token级策略梯度损失 :原始的GRPO算法采用样本级的损失计算方法,即先对每个样本内所有token的损失求平均,然后再对所有样本的平均损失进行汇总。

    这种方式在处理长序列时存在问题:由于所有样本在最终损失计算中的权重相同,长响应中的单个token对总损失的贡献可能会被“稀释”,而短响应中的token则相对更有影响力。这可能导致模型无法有效学习长样本中的高质量推理模式,也无法有效惩罚长样本中的低质量模式(如重复、乱码)。

  7. DAPO引入了Token级策略梯度损失,它不再对每个样本的损失进行平均,而是直接将一个批次内所有token的损失加总,然后除以总的token数量。这种“token级”的归一化方式确保了无论响应长短,每个token对梯度更新的贡献都是均等的,从而能够更精准地优化长序列中的每一个细节,提升了训练的稳定性和生成质量。

  8. 过长奖励塑形 :在强化学习中,通常会对生成的响应设置一个最大长度限制,并对超过该长度的响应进行截断和惩罚。然而,简单粗暴的硬惩罚(如直接给予一个负奖励)可能会引入噪声,因为它可能错误地惩罚了那些本身推理过程正确但只是稍微超长的响应。

  9. DAPO提出了“软过长惩罚”机制。当响应长度超过一个预设的阈值(L_max)时,系统会定义一个惩罚区间,在该区间内,惩罚会随着长度的增加而线性递增。这种平滑的惩罚方式,使得模型能够更好地区分“质量差”和“只是过长”的响应,减少了奖励噪声,从而稳定了训练过程。

  10. 此外,DAPO还采用了“过长过滤”策略,即在训练时直接忽略那些被截断的样本,使其不参与损失计算,进一步降低了噪声干扰 。

(2)解决长序列推理中的训练稳定性问题

长序列推理,如复杂的数学证明或详细的代码生成,对强化学习算法的稳定性提出了极高的要求。在这些任务中,模型需要生成包含数千甚至上万个token的连贯、逻辑严谨的文本。

训练过程中的任何不稳定因素,如梯度爆炸、模式崩溃或奖励噪声,都可能导致模型性能急剧下降。DAPO通过其四大核心技术的协同作用,系统地解决了长序列推理中的多个关键稳定性问题。

首先,熵崩溃是长序列训练中常见的难题。模型在学习过程中,可能会过早地收敛到少数几种“安全”的生成模式,导致生成内容的多样性急剧下降,即策略的熵值过低。这会严重限制模型的探索能力,使其无法发现更优的、更复杂的推理路径。

DAPO的Clip-Higher策略通过放宽对低概率token概率提升的限制,主动鼓励模型进行探索,有效维持了策略的熵值,防止了生成空间的过早坍缩。

其次,梯度信号的有效性在长序列训练中至关重要。由于序列很长,一个批次中可能包含大量对梯度更新没有贡献的“无效”样本(例如,所有响应都完全正确或完全错误),这会浪费计算资源并增加梯度方差。

DAPO的动态采样机制通过智能地过滤掉这些无效样本,确保了每个训练批次都充满了能够提供有效学习信号的“困难”样本,从而保证了训练过程的高效和稳定。

再者,长序列中的信用分配是一个核心挑战。在一条很长的推理链中,如何准确地判断是哪个或哪些token导致了最终的成功或失败,是非常困难的。GRPO的样本级损失计算可能会让长序列中的关键信息被淹没。

DAPO的Token级策略梯度损失通过将优化的基本单位从“样本”下放到“token”,使得模型能够更精细地进行信用分配,每一个token的生成都直接关联到最终的奖励,从而能够更有效地学习到长序列中的复杂模式。

最后,奖励噪声在长序列场景中尤为突出。一个简单的“答案正确与否”的二元奖励,对于指导一个长达数千token的生成过程来说是远远不够的。而简单的长度惩罚又可能误伤那些本身质量很高但稍长的响应。

DAPO的过长奖励塑形通过引入平滑的惩罚机制,为模型提供了更细粒度、更少噪声的反馈,帮助模型在生成长度和内容质量之间找到更好的平衡 。

综上所述,DAPO通过这一系列精巧的设计,为长序列推理任务的稳定训练提供了强有力的保障。

(3)提高token效率和模型性能

DAPO算法的设计不仅着眼于训练的稳定性,也极大地关注于提升token效率和最终的模型性能。Token效率指的是模型在生成过程中,用尽可能少的token来传达准确、完整的信息,避免冗余和无效的内容。这对于实际应用中的用户体验和计算成本控制都至关重要。

DAPO的Token级策略梯度损失在提高token效率方面扮演了关键角色。如前所述,这种损失计算方式使得长序列中的每一个token都直接对梯度更新负责。这意味着,如果一个token的生成是无效的、重复的或错误的,它会直接受到惩罚,其生成概率会被降低。这种精细的惩罚机制迫使模型必须“惜字如金”,生成的每一个token都必须是高质量、有信息量的。

相比之下,GRPO的样本级损失可能会让模型“钻空子”,通过生成大量低质量的填充词来达到某个长度,从而在某些奖励维度上获得不应有的分数。DAPO从根本上杜绝了这种可能性,从而显著提升了生成内容的token效率。

此外,过长奖励塑形也直接促进了token效率的提升。通过引入对过长响应的软惩罚,DAPO明确地告诉模型,简洁本身就是一种美德。

模型在学习过程中,会主动探索那些能够在保证正确性和完整性的前提下,用更短的序列解决问题的策略。这种内在的激励机制,使得DAPO训练出的模型不仅推理能力强,而且生成的答案也更加精炼、高效。

在模型性能方面,DAPO的四大核心技术共同作用,最终导向了卓越的结果。Clip-Higher动态采样保证了训练过程的充分探索和高效收敛,让模型能够遍历更广阔的解空间,找到更优的策略。

Token级损失过长奖励塑形则保证了模型在探索过程中,能够持续地优化生成质量,避免陷入低质量的局部最优。这些技术的综合效果,使得DAPO在AIME 2024等极具挑战性的基准测试中,能够以更少的训练步数达到甚至超越此前SOTA模型的性能,充分证明了其在提升模型性能方面的巨大潜力 。

大白话案例讲DAPO算法——训练AI进行复杂数学证明

为了深入理解DAPO的工作原理,我们可以设想一个训练AI进行复杂数学证明的场景。在这个场景中,AI需要生成一个包含多个步骤的、逻辑严谨的证明过程,这与DAPO所擅长的长序列推理任务高度契合。

场景设定:生成多步、逻辑严谨的证明过程

假设我们要训练一个AI来证明几何定理。AI需要从一个已知条件出发,通过一系列逻辑推导,最终得出定理的结论。这个过程可能包含十几甚至几十个步骤,每一步都必须有理有据。

例如,证明“三角形内角和为180度”,AI可能需要先生成辅助线,然后利用平行线的性质、同位角、内错角等概念,一步步地进行推导。这个生成过程就是一个长序列的生成任务,每一步(即每一个token或一小段文本)的质量都至关重要。

挑战:避免生成冗长、无效或重复的步骤

在训练这样的AI时,我们会面临诸多挑战。首先,AI可能会生成冗长、无效甚至重复的步骤来“凑字数”。

例如,它可能会反复陈述已知条件,或者写出一些与证明过程无关的“废话”。这种行为在GRPO的样本级损失计算下可能不会被有效惩罚,因为这些无效信息“稀释”在长长的证明过程中,对整篇文章的平均损失影响不大。

其次,AI可能会陷入某种固定的、低效的证明模式,缺乏探索新路径的意愿,即“熵崩溃”。最后,如果证明过程过长,简单的截断和惩罚可能会误伤那些本身思路正确但步骤稍多的证明,引入奖励噪声。

DAPO的优化:精细控制每一步的生成质量

DAPO的四大核心技术正是为了解决这些挑战而设计的。

  • Token级策略梯度损失:这就像一位极其严格的数学老师,他不会只看整篇证明的最终得分,而是会逐字逐句地检查。如果AI在某一步写出了“因为AB平行于CD,所以角A等于角B”(一个错误的推论),这位老师会立即指出这个错误,并严厉地惩罚它。在DAPO的框架下,这个错误的token或token序列会直接导致一个很高的损失,从而迫使AI在后续的学习中避免犯同样的错误。这种精细的控制,确保了证明过程中的每一步都是高质量的。
  • Clip-Higher策略:这像是一位鼓励学生大胆尝试的导师。当AI提出一个新颖但概率较低的证明思路时,传统的算法可能会因为“保守”而限制其发展。但DAPO的Clip-Higher策略会给予这个新颖的思路更大的成长空间,鼓励AI跳出固有的思维模式,去探索更多可能性,从而找到更简洁、更优雅的证明方法。
  • 动态采样:在训练过程中,AI可能会遇到一些它已经完全掌握的简单定理,或者完全无法理解的超难题目。在这些情况下,AI生成的所有证明可能都是正确的(或错误的),导致梯度为0,训练停滞。DAPO的动态采样机制就像是智能的课程安排,它会跳过这些对AI学习没有帮助的题目,专注于那些AI“跳一跳能够得着”的中等难度题目,从而保证每一次训练都能让AI有所收获。
  • 过长奖励塑形:当AI的证明过程稍微超出了预期的长度时,DAPO不会像严厉的老师那样直接给一个零分并撕掉试卷。相反,它会像一个耐心的导师,指出“这部分推导可以更简洁一些”,并给予一个轻微的扣分。这种“软惩罚”机制,既让AI明白了简洁的重要性,又不会因为一次小小的超时而完全否定其正确的推理思路,从而保护了AI的探索积极性。

通过这四位“老师”的协同指导,DAPO训练出的AI不仅能够生成正确的数学证明,而且其证明过程会更加严谨、高效和富有创造性。

GSPO - 组序列策略优化

GSPO(Group Sequence Policy Optimization,组序列策略优化)是由Qwen团队提出的一种针对大语言模型强化学习训练的先进算法,旨在解决其前身GRPO在训练大型模型,特别是处理长序列和混合专家模型时出现的严重不稳定性问题 。GSPO的核心创新在于将优化的粒度从GRPO的token级提升到序列级,通过重新定义重要性比率和裁剪机制,实现了更稳定、更高效的训练。

论文中的GSPO-token主要是作为一个理论桥梁,用于证明当所有token优势相同时,它与GSPO等价。论文的实验部分全部基于标准的GSPO(即所有token优势相同) 进行。

GSPO-token在论文中主要作为理论分析工具,其灵活的token级优势分配功能尚处于概念阶段,有待未来研究探索。

技术原理:

GSPO的技术原理是对GRPO的一次深刻反思和重构,它从理论上纠正了GRPO在重要性采样应用上的根本缺陷,并提出了与序列级奖励信号完全对齐的优化目标。

从Token级优化到序列级优化

GRPO在计算重要性比率时,采用的是token级的计算方式,即 π_θ(a_t|s_t) / π_θ_old(a_t|s_t)。GSPO的论文指出,这种token级的比率在语言模型中存在严重问题。

因为语言模型的奖励(如答案的正确性)通常是赋予整个序列的,而不是单个token。

在token级别应用off-policy校正,会导致优化目标的单位(token概率)与奖励的单位(序列质量)不匹配,从而引入高方差的噪声,尤其是在生成长序列时,这种噪声会累积并导致训练崩溃。

为了解决这个问题,GSPO将优化的粒度提升到序列级。它定义的重要性比率是基于整个响应序列的似然性(likelihood):

r_i(θ) = π_θ(y_i|x) / π_θ_old(y_i|x)

其中 y_i 是针对提示 x 生成的完整响应序列。这个序列级的比率直接反映了从旧策略 π_θ_old 采样得到的响应 y_i 与新策略 π_θ 的偏离程度,与序列级的奖励信号天然对齐。

序列级的重要性采样和裁剪

基于序列级的重要性比率,GSPO的优化目标也相应地调整为对整个序列进行裁剪。其损失函数形式与PPO类似,但应用于序列级别:

L_GSPO(θ) = E[ min( r_i(θ) * A_i, clip(r_i(θ), 1-ε, 1+ε) * A_i ) ] - β * D_KL(π_θ || π_ref)

其中 A_i 是基于组内奖励计算出的序列级优势。GSPO对整个响应序列进行裁剪,而不是像GRPO那样对单个token进行裁剪。

这意味着,如果一个完整的响应序列被认为是“离策略”的(即其重要性比率 r_i(θ) 超出了 [1-ε, 1+ε] 的范围),那么整个序列都会被排除在梯度估计之外(对此解释一下,这里的“排除”可能会被误解为样本被丢弃。

实际上,裁剪(clip)操作是限制梯度大小,而不是丢弃样本。当比率超出范围时,clip(r_i(θ), 1-ε, 1+ε) * A_i 这一项会生效,梯度被限制在边界值上,样本仍然贡献梯度,但梯度信号被削弱了。这一点在PPO、GRPO、GSPO中都是一致的。)

这种方式提供了更可靠、更有效的学习信号 。

GSPO 在计算序列重要性比率时,采用长度归一化的对数似然(即平均每个 token 的对数概率),以避免因序列长度差异导致的重要性比率数量级差异过大。这不仅提升了数值稳定性,也确保了裁剪机制对不同长度的响应公平有效。

解决GRPO在长序列和MoE模型中的不稳定性

GSPO的序列级方法从根本上解决了GRPO的两大痛点:

  1. 长序列训练的不稳定性:通过消除token级噪声的累积,GSPO使得训练过程更加平滑和稳定,能够支持更长序列的生成和训练 。
  2. MoE模型训练的挑战:在混合专家(MoE)模型中,GRPO的token级重要性比率会受到专家激活波动的影响,导致训练失败。而GSPO的序列级比率对单个token的变化不敏感,因此能够从根本上解决MoE模型中的专家激活不稳定问题,无需采用复杂的“路由回放”等变通方法。

大白话案例讲GSPO算法——团队协作完成项目

场景设定:一个团队负责一个完整项目

想象一个软件开发团队(模型)需要完成一个完整的项目(生成一个长序列的回答)。这个项目包含多个模块和任务(对应序列中的多个token)。项目的最终成功(奖励)取决于整个项目的质量,而不是单个模块的优劣。

GRPO的问题:对每个小任务进行单独评估,导致整体不协调

如果采用GRPO的管理方式(token级优化),项目经理(算法)会关注团队中每个成员(每个token)的日常工作表现,并对他们每天的工作(token的生成)进行微小的奖励或惩罚。这种方式的问题在于:

  • 缺乏整体观:一个成员今天的工作(一个token)可能看起来不错,但可能对整个项目的最终目标没有贡献,甚至是有害的。
  • 协作困难:团队成员之间缺乏对最终目标的共同认知,可能导致各自为战,最终整合出的项目(完整序列)质量不高。
  • 评估噪声大:对单个日常任务的评估充满了随机性和噪声,难以反映其对最终成果的真实贡献。
GSPO的改进:对整个项目的最终成果进行整体评估和优化

GSPO则像一个更高级的项目经理,它改变了评估方式:

  • 关注最终交付物:GSPO不关心每个成员每天具体做了什么,而是只关心最终交付的整个项目(完整序列)的质量。团队会被要求提交多个版本的完整项目方案。
  • 整体比较和选择:项目经理(GSPO)会对这些完整的项目方案进行整体评估和比较,选出最好的方案,并对整个团队(模型)进行奖励。这种奖励是基于整个项目的成败,而不是单个任务的得失。
  • 稳定高效:这种方式让团队成员(模型参数)的优化方向始终与最终目标保持一致,避免了内部消耗和无意义的局部优化。虽然看起来忽略了很多“过程”信息,但实际上提供了更稳定、更高效的学习信号,最终产出的项目质量也更高 。

通过这个案例,我们可以看到GSPO通过将优化目标从局部(token)提升到整体(sequence),实现了更稳定、更高效的训练,这正是其相对于GRPO的核心优势所在。

GSPO-token (Group Sequence Policy Optimization - Token Level)

GSPO-token是GSPO算法的一个变体,它在保持GSPO序列级优化稳定性的基础上,引入了token级的灵活性。根据GSPO的原始论文,GSPO-token在优化目标、裁剪条件和理论梯度上,当序列中所有 token 的优势值被设为相同的序列级优势(即 Â_{i,t} = Â_i)时,GSPO-token 的损失函数在数值上可近似复现 GSPO 的行为,但其梯度计算路径和裁剪机制仍存在本质差异。

GSPO 对整个序列的重要性比率进行一次性裁剪,而 GSPO-token 则对每个 token 的调制比率独立裁剪,因此二者在理论上并不完全等价,前提是我们将一个序列中所有token的优势值都设置为同一个值(即Â_i,t = Â_i) 。然而,GSPO-token的真正价值在于它允许我们为序列中的每一个token分配不同的优势值(Â_i,t),从而实现更细粒度的控制。

技术原理:

在标准的GSPO中,一个序列的所有token共享同一个由组内奖励统计计算出的序列级优势Â_i。这意味着,序列中每一个部分,无论其内容如何,都被认为对最终的奖励做出了同等程度的贡献。但在某些复杂的推理任务中,我们可能希望进行更精细的信用分配。

例如,在一个多步的数学证明中,可能只有关键的几个推理步骤对最终答案的正确性起到了决定性作用,而其他部分只是铺垫或解释。在这种情况下,我们希望能够给那些关键的步骤赋予更高的优势值,而给那些相对次要的步骤赋予较低的优势值。

GSPO-token正是为了满足这种需求而设计的。它保留了GSPO核心的序列级重要性比率s_i(θ)和序列级裁剪机制,确保了训练的宏观稳定性。

但在优势计算上,它提供了更高的自由度,允许算法设计者根据具体任务的需求,为不同的token或token段定制不同的优势值。这种设计巧妙地结合了序列级的稳定性和token级的灵活性,为处理更复杂的强化学习场景提供了可能。

大白话案例讲GSPO-token算法——精细化项目管理

为了阐释GSPO-token可能的工作原理,我们可以将其比作一种更为精细化的项目管理模式。这种模式在GSPO的整体项目评估基础上,增加了对关键任务节点的关注和评估。

场景设定:在整体项目评估的基础上,关注关键节点的执行

延续之前的项目管理比喻,一个团队正在开发一个复杂的软件系统。项目经理(奖励模型)的首要评估标准仍然是整个项目的最终交付质量(序列级优化)。

但是,项目经理也意识到,项目的成功不仅取决于最终结果,还取决于一些关键的里程碑和核心模块的实现质量。例如,系统的架构设计、核心算法的实现、关键接口的稳定性等,这些节点的成败对整个项目有着决定性的影响。

GSPO-token的角色:既看最终成果,也评估关键步骤的贡献

GSPO-token的管理模式就像是项目经理在关注最终产品(序列级奖励)的同时,也对这些关键节点(词元级奖励)进行额外的评估和指导。当团队完成一个核心模块时,项目经理会进行一次深入的代码审查和性能测试,并给出具体的反馈。这个反馈(词元级优势)会直接影响负责该模块的开发者(对应词元的策略)的后续工作。

如果一个核心模块的实现非常出色,即使它只是一个中间步骤,团队成员也会得到额外的激励,并可能将这种高质量的标准应用到其他模块的开发中。

优势:平衡了整体目标与局部优化

这种“既看最终成果,也评估关键步骤”的管理模式,其优势在于它平衡了宏观目标和微观优化。它确保了团队的所有工作都围绕着最终的项目成功(序列级优化),避免了偏离主航道。

同时,通过对关键节点的精细化管理和反馈(词元级优化),它能够及时发现和纠正问题,提升核心模块的质量,从而更有力地保障最终产品的成功。

这与GSPO-token可能的目标一致:在享受GSPO带来的训练稳定性的同时,通过引入词元级的精细控制,进一步提升模型在关键推理步骤上的准确性和可靠性,最终生成更高质量的文本。

GSPO-token 通过将序列级重要性比率 s_i(θ) 作为无梯度的缩放因子,作用于每个 token 的策略梯度上。这样做的目的是:让 token 级的裁剪阈值与序列整体的偏离程度保持一致,从而在保留 token 级灵活性的同时,继承 GSPO 的稳定性。但它并未真正实现序列级梯度更新。

这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

三、工程实现与开源框架对比

PPO的工程实现

主流框架支持:PPOTrainer

对于LLM的PPO训练,目前最主流的框架是TRL(Transformer Reinforcement Learning)库中的 PPOTrainer。它专为Transformer模型设计,集成了经验回放、奖励归一化等关键技巧。

PyTorch实现示例:Actor-Critic网络结构

在PyTorch中实现PPO,核心是构建Actor和Critic两个网络。这两个网络通常共享一部分底层特征提取层(例如,在LLM中,它们可以共享Transformer的编码器部分),然后分别连接到不同的输出头。

  • Actor网络:其输出层通常是一个线性层,将隐藏状态映射到动作空间的维度,然后通过Softmax函数得到动作的概率分布 π(a|s)。在LLM中,这对应于词汇表上的概率分布。
  • Critic网络:其输出层是一个单一的线性层,将隐藏状态映射到一个标量值,即状态价值 V(s)

在训练循环中,智能体与环境交互,收集状态、动作、奖励等数据。然后,利用这些数据计算优势函数 A_t 和PPO损失,并同时对Actor和Critic网络进行反向传播和参数更新。

关键超参数:学习率、裁剪范围、训练轮次

PPO的性能对超参数非常敏感,以下是一些关键超参数及其影响:

  • 学习率:控制策略和价值网络更新的步长。过高的学习率可能导致训练不稳定,过低则会导致收敛缓慢。
  • 裁剪范围:PPO的核心超参数,定义了策略更新的信任区域。通常设置在0.1到0.3之间。较小的ε值会使训练更稳定,但可能限制探索能力。
  • GAE参数 (λ) :用于平衡优势估计的偏差和方差。λ=1对应于高方差、无偏的蒙特卡洛估计,λ=0对应于低方差、有偏的TD误差估计。
  • 训练轮次:指每个批次的数据被用于更新网络的次数。PPO通常会对每个批次进行多次(如4-10次)的迭代更新,以提高数据效率。

DPO的工程实现

Hugging Face TRL (Transformer Reinforcement Learning) 库

Hugging Face TRL库是目前实现DPO算法最主流和最便捷的工具。它无缝集成了Hugging Face的Transformers库,使得用户可以直接使用预训练好的语言模型作为策略模型π_θ 和参考模型 π_ref。TRL库提供了高度封装的DPOTrainer类,用户只需准备好偏好数据,并指定模型、训练参数等,即可一键启动DPO训练,极大地简化了工程实现。

数据格式:成对的偏好数据 (chosen, rejected)

DPO训练所需的数据格式非常明确,即成对的偏好数据。通常,数据被组织成一个包含以下字段的数据集:

  • prompt: 输入的提示文本。
  • chosen: 对于该提示,被人类偏好的“好”回答。
  • rejected: 对于该提示,不被偏好的“差”回答。

这种数据格式清晰直观,易于通过人工标注或从现有数据(如用户点击、点赞)中构建。数据的质量和规模直接决定了DPO训练效果的上限。

训练流程:参考模型与策略模型的对比

DPO的训练流程核心在于策略模型 π_θ 与参考模型 π_ref 的对比。在每次训练步骤中:

  1. 从数据集中采样一个批次的三元组 (prompt, chosen, rejected)
  2. prompt 分别输入到当前待优化的策略模型 π_θ固定的参考模型 π_ref 中。
  3. 计算 chosenrejected 在两个模型下的对数概率。
  4. 将这些对数概率代入DPO损失函数,计算损失。
  5. 只对策略模型 π_θ 进行反向传播和参数更新,而参考模型 π_ref 的参数保持不变。

这个过程确保了模型的更新方向是朝着更符合人类偏好的方向,同时被参考模型“拉住”,防止其偏离原始能力太远。

GRPO及其变体的工程实现

DeepSeek开源实现与veRL库

GRPO及其变体的工程实现相对较新,但已经有相关的开源项目出现。DeepSeek团队在其技术报告中通常会提供算法的伪代码和关键实现细节,为社区复现提供了重要参考。

此外,一些专注于LLM强化学习的开源库,如 veRL (Volcano Engine Reinforcement Learning for LLMs) ,由字节跳动种子团队发起,由verl社区维护的一个强化学习(RL)训练库,也开始集成GRPO等先进算法。这些库通常针对大规模分布式训练进行了优化,能够高效地处理组采样、优势计算等GRPO特有的操作。

组采样与优势计算的具体实现

GRPO的工程实现核心在于高效的组采样和优势计算

  • 组采样:对于每个训练批次中的提示,需要让模型生成多个(例如G=4或G=8)不同的回答。这通常通过设置不同的随机种子或使用采样解码(如top-p, top-k)来实现。为了加速,可以并行地生成这些回答。
  • 优势计算:在获得所有回答的奖励后,需要高效地计算组内奖励的均值和标准差,并对每个回答的奖励进行标准化,得到优势值。这个计算过程是向量化的,可以在GPU上快速完成。

Dr.GRPO、DAPO、GSPO

的代码修改要点

从GRPO到其变体的代码修改,主要集中在损失函数的计算上:

  • Dr.GRPO:修改点在于损失函数的归一化方式。将GRPO中“先对样本内损失求平均,再对所有样本求平均”的方式,改为“将所有token的损失加总,再除以总token数”。
  • DAPO:修改点较多,包括:
  • Clip-Higher:修改PPO损失函数中的裁剪范围,使其上下不对称。
  • 动态采样:在数据加载阶段,增加一个过滤步骤,移除组内奖励标准差为0的样本。
  • Token级损失:与Dr.GRPO类似,采用token级的损失归一化。
  • 过长奖励塑形:在奖励计算函数中,增加一个基于响应长度的平滑惩罚项。
  • GSPO:修改点在于重要性比率和裁剪的粒度。将GRPO中在token级别计算重要性比率和应用裁剪的逻辑,全部提升到序列级别。需要计算整个序列的联合概率,并对其进行长度归一化和裁剪。

四、适用场景与性能对比

(1)适用场景

(2)优缺点对比分析

(3)算法选择指南

五、总结和未来展望

算法演进脉络梳理

从PPO到GRPO:简化价值网络

从PPO到GRPO的演进,是强化学习算法在适应大语言模型训练需求过程中的一次重要简化。

PPO作为通用强化学习的基石,其Actor-Critic架构虽然稳定,但在LLM场景下面临着价值网络训练成本高、在稀疏奖励下估计不准的挑战。

GRPO敏锐地抓住了LLM推理任务的特点——即最终答案的正确性比中间过程的绝对价值更重要——从而提出了“组内相对评估”的创新思想。

通过放弃复杂的Critic网络,转而利用同一问题下多个回答的相对优劣来计算优势,GRPO极大地简化了算法结构,降低了内存和计算开销,为在资源有限的情况下训练更大的模型铺平了道路。这一演进体现了算法设计从“追求绝对最优”到“利用相对信息”的范式转变。

从GRPO到GSPO:提升训练稳定性

从GRPO到GSPO的演进,则是对GRPO在长序列和复杂模型架构下暴露出的稳定性问题的深刻反思和根本性解决。

GRPO虽然在思想上有所创新,但其token级的优化方式与序列级的奖励信号在本质上存在错配,导致在长序列生成和MoE模型训练中容易出现高方差和不稳定。

GSPO从理论上指出了GRPO在重要性采样应用上的根本缺陷,并提出了一个更符合理论的解决方案:将优化的基本单位从token提升到sequence。这一看似简单的改变,却从根本上解决了噪声累积和专家激活波动等核心问题,使得大规模、长序列的LLM强化学习训练变得前所未有的稳定。GSPO的出现,标志着LLM强化学习算法从“能用”向“好用、稳定”迈出了关键一步。

DPO的独立路径:直接偏好对齐

与GRPO系列算法在PPO框架内进行改进不同,DPO走出了一条完全独立的路径。它深刻洞察到传统RLHF流程的复杂性,并提出了一个更直接、更高效的问题解决方案:既然最终目标是让模型符合人类偏好,为何不直接优化这个偏好?

DPO通过巧妙的数学变换,将复杂的强化学习问题转化为一个简单的分类问题,从而绕过了奖励模型训练和PPO优化的双重难题。

这条路径极大地简化了LLM对齐的流程,降低了技术门槛,并取得了令人瞩目的效果。

DPO的成功,启示我们有时候“退一步海阔天空”,绕过问题可能比直接解决问题更有效,它为未来LLM对齐算法的设计提供了全新的思路。

未来发展趋势

更高效率的组内采样策略

GRPO及其变体都依赖于“组”的概念,即对同一问题采样多个回答。然而,这种采样方式在计算上是昂贵的,尤其是在模型规模越来越大、生成长度越来越长的情况下。

未来的一个研究方向是探索更高效的组内采样策略。这可能包括:

  • 重要性采样:在组内采样时,不是均匀随机地生成回答,而是根据某种启发式策略,更有针对性地生成那些可能带来高信息增益的回答。
  • 自适应组大小:根据问题的难度或模型的不确定性,动态调整组的大小。对于简单问题,可以减少采样数量;对于复杂问题,则增加采样数量。
  • 离线组构建:利用模型在历史交互中生成的海量数据,离线构建高质量的“组”,从而避免在线采样的巨大开销。
结合多种优化目标的混合算法

目前,不同的算法往往侧重于解决特定的问题。例如,DPO擅长偏好对齐,而GSPO擅长稳定长序列推理。未来的趋势可能是将这些算法的优势结合起来,构建混合优化目标的算法

例如,可以设计一个算法,其损失函数同时包含:

  • 序列级稳定性损失:借鉴GSPO的思想,确保训练过程的稳定。
  • 偏好对齐损失:借鉴DPO的思想,直接优化人类偏好。
  • 特定任务损失:针对数学、代码等任务,引入基于规则或验证器的损失,提供更精确的反馈。

通过多目标优化,未来的模型有望同时具备强大的推理能力、稳定的训练表现和良好的人类对齐特性。

在更复杂环境(如多模态、具身智能)中的应用

目前,这些先进的强化学习算法主要应用于文本领域的LLM。未来的一个重要方向是将其扩展到更复杂的环境中,如多模态具身智能

  • 多模态:将GRPO或GSPO的思想应用于同时处理文本、图像、音频等多种模态的模型。例如,在视觉问答任务中,可以对同一图像和问题生成多个不同的文本回答,并通过组内比较进行优化。
  • 具身智能:将DPO或PPO应用于训练机器人在物理世界中进行操作。例如,通过人类偏好数据(如选择更优雅、更高效的动作)来训练机器人完成复杂的操作任务。

将LLM强化学习的成功经验迁移到这些新领域,将是推动通用人工智能(AGI)发展的重要一步。

如何学习AI大模型?

如果你对AI大模型入门感兴趣,那么你需要的话可以点击这里大模型重磅福利:入门进阶全套104G学习资源包免费分享!

这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

这是一份大模型从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!

请添加图片描述
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

100套AI大模型商业化落地方案

请添加图片描述

大模型全套视频教程

请添加图片描述

200本大模型PDF书籍

请添加图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

LLM面试题合集

请添加图片描述

大模型产品经理资源合集

请添加图片描述

大模型项目实战合集

请添加图片描述

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐