作者:answer
论文原文链接: https://arxiv.org/pdf/2501.12948
作者原文链接:https://zhuanlan.zhihu.com/p/20530204146
先前的大型语言模型(LLMs)相关的很多工作里都依赖大量的人工标注的数据去提升模型性能。但在Deep Seek R1这篇论文中指出:模型的推理能力(reasoning capabilities)可以通过大规模的强化学习(Reinforcement learning)来提升,甚至不需要用SFT(supervised fine-tune)来完成冷启部分的工作。
P.S. 通过少量的SFT完成模型的冷启(cold-start)可以进一步提升模型表现。
个人随想:少量的SFT在冷启阶段提升了模型的性能,使得在后续RL的训练中能更好的找到答案。
通俗易懂版:如果把模型比作一个武侠小说中的习武人,‘少量的SFT’就犹如武功秘籍。当提供一个秘籍给习武人去修炼(对应模型训练),他能少走弯路且更快修成武功(优秀的模型表现)。但如果没有这个秘籍,习武人可能就会走上弯路,需要更多的修炼探索去修成武功,甚至一有不慎就走上歪路走火入魔了(训练崩了)。
过往的LLM训练工作严重依赖有监督的数据,而收集这些数据耗时费力。而DeepSeek-R1-Zero的训练过程与结果表现体现出LLMs在没有任何监督数据的情况下发展推理能力的潜力,展现出其通过纯粹的强化学习过程的自我进化。
P.S. DeepSeek-R1-Zero是基于DeepSeek-V3-Base纯用RL的方式训练出来的模型(没使用任何SFT的数据)。
Group Relative Policy Optimization(群体相对策略优化)
为了节省强化学习的训练成本,采用了GRPO的方式进行训练。该方法舍弃了传统PPO算法中的Critic模型(通常与策略模型大小相同)部分,转而通过直接从群体得分中估算baseline。
具体来说,对于每一个问题q,GRPO会从旧的策略模型参数 中采样一组输出 ,然后通过最大化GRPO目标函数以优化当前策略模型参数 。
辅助理解:不同的策略模型实际上都是同一个模型在不同参数阶段下的版本:具体可以按如下理解
:上一轮模型参数的模型,可以理解为 上一个iteration的模型。
:最新的模型参数的模型(正在更新的)。
: 初始模型参数。
原文公式如下图所示:
ε 控制学习步长上限,保证每一轮学习不至于与上一轮偏移过大。主要是防止策略崩溃。
β 控制原始能力偏移惩罚的程度。主要是缓解灾难性遗忘的问题。
是advantage,通过如下公式计算出:
个人图解如下(便于理解):
从Policy Gradient到PPO到GRPO(个人推理版,数学推导警告⚠️,如有错误欢迎指出纠正)
一些基础概念(LLM训练任务下好理解版):
π (Policy,策略):即LM模型
θ (Parameter, 参数) :即模型参数
τ (Trajectory,轨迹):即输出序列,此处可以理解为输出的一整个句子,每一个输出token即为action。
s(State,交互状态):即上文,初始状态即为
a(Action,交互行为):即输出的token,可以简单理解为每个字符。(实际上一个字不等于一个token)
那么,我们可以得到模型参数θ下生成序列τ的概率如下:
Reward Function(奖励函数定义,即输出序列 能获得的奖励):
因此可得,模型参数下的Expected Reward(期望奖励):
综上,我们希望调整模型参数使这个期望奖励越大越好,因此可得Policy Gradient公式如下,期望做gradient ascent最大化期望奖励:
# 实际上就是N个轨迹近似期望,使期望reward最大化 # 环境无法作用gradient 所以可以移除
直观理解:在某个state(上文)下执行某个action(token)使得最后整个输出 的reward是正的时候,我们应该增加这个输出的几率,反之减少。
但是,如果仔细看上述公式,会发现即reward恒为正的情况,那会导致一直在增加任何token的输出概率。但我们实际操作中是用sample的方式来训练,这就导致某些项实际上因为没被sample到而导致输出概率下降(实际ground truth是要提升)。所以我们希望引入一个baseline(b)让reward不是恒为正。公式变成如下:
通常我们可以将baseline设置为reward的期望值,即
同时,我们知道最终输出的是一个序列 ,且在算reward时是以的粒度计算的。即使整体的reward是正的,也不意味着中的每一个action都是有收益的(如:说了一串废话,最后才说对结果)。因此更合理的做法是我们需要给每一个action合适的credit。
首先,我们会有一些假设(注意:并不一定什么情况下都适用,应根据具体情况使用不同的reward function):
1、reward应单独为每个action计算(前面的)
# 计算当前action后所有reward的总和作为当前action的reward
2、越快完成任务应越重要,距离越远贡献越小
#为时间衰减函数
实际上这一项其实是在算在某个state下执行某个action比执行其他action有多好,也就是我们常说的Advantage Function,可以表示为 ,因此综上公式可以写作:
PPO(Proximal Policy Optimization)
由于Policy Gradient是一个on policy的方式,在每一轮更新后都需要重新收集训练数据,这无疑是很麻烦的。因此我们希望将其改造为一个off policy的方式,能重复使用一批数据去更新参数。
Importance Sampling: 【解释起来太复杂此处不过多赘述】
基于上述公式Policy Gradient可以写作:
# 假设 不受到 影响
因此我们能得到一个新的Objective Function:
# Note:
实际上是在交互,然后更新 。
为了保证训练后比之前不至于差距太大(基础能力等不会变化太大),引入一个类正则项如下:
Note: 这个KL散度说的不是参数分布距离,而是输出分布距离(behavior distance)。实际应用中可以使用adaptive KL penalty用于动态调整 ,即
if , increase
if , decrease
但更多的大家会用以下PPO2公式,简化计算(KL太难算):
本质上就是替换了 adaptive KL penalty这一块,保证两个分布间不要差距太大。
Note: clip(a,b,c); 当a<b时,取b;当a>c时,取c;其余取a。
其实GRPO就是在ppo2的思想基础上调整了Advantage function的计算方式,同时引入正则项保证模型初始能力不会在训练过程中有太大的偏移(一路看下来推理过程的话想必是能看明白了)。【能力有限如有表达不清晰的地方欢迎讨论】
Reward是训练信号的来源,决定了RL的优化方向。该Reward采用了一种rule-based的reward system,该系统主要由两种类型的Reward组成:
P.S. 从部署的蒸馏后的QWen模型看到数学问题的方框格式应是这样的:[ \boxed{} ]
讨论:奖励实现方式原文没有细说。由于是rule-based,此处猜测只是单纯的判断输出是否存在
和 标签,并且判断答案是不在标签框住的部分内之类的。
为什么不用结果导向或过程导向的神经奖励模型(neural reward model)?
因为发现神经奖励模型在大规模强化学习过程中可能会面临奖励滥用(reward hacking)问题。此外,重新训练奖励模型需要额外的训练资源,同时也会导致整个训练流程的复杂度显著增加。
知识注解:
神经奖励模型(neural reward model):通过神经网络学习或预测奖励信号(Reward Signal),用于指导智能体的决策行为。一般用于解决传统人工设计奖励函数(Handcrafted Reward)难以覆盖复杂场景的问题。
奖励滥用(reward hacking):欺骗奖励模型得分。可以简单理解为咱们小时候做数学题的‘格式分’(如:数学题前写‘解:’来得分),但这些分数奖励实际上并不能帮助模型很好的学习到如何解题。
为训练DeepSeek-R1-Zero模型,首先设计了一个简洁的指令模板来引导基座模型遵循预设规范。如下图所示,该模板要求模型必须先生成完整的推理过程,再输出最终答案。其刻意将约束条件限定于结构范式层面,规避任何内容导向的偏差(例如强制要求反思性推理或推广特定解题策略),以此确保在强化学习过程中能精准捕捉模型的原生进化轨迹。
【实验performance在这不做过多赘述,有兴趣的同学可以看原文,此处更多的是抽取技术相关内容讨论】
DeepSeek-R1-Zero无需依赖任何监督微调数据即可实现强大的推理能力,其充分验证了该模型仅通过强化学习(Reinforcement Learning, RL)即可完成高效学习与泛化的技术路径。此外,通过引入多数投票(Majority Voting)机制,可进一步显著提升DeepSeek-R1-Zero的性能表现。
讨论:Ensemble Learning的方式可能是可以进一步显著提升表现的路径。意味着可以尝试通过MoE(Mixture of Experts with TopN Gating)的方式在保持推理参数量不变的情况下进一步提升性能。
Self-evolution Process of DeepSeek-R1-Zero
DeepSeek-R1-Zero的自我进化过程生动地揭示了RL是如何驱动模型自主提升推理能力的。通过直接从基座模型(Base Model)启动RL训练,能够完全排除监督微调(Supervised Fine-Tuning)阶段的干扰,实现对模型进化轨迹的全程观测。这一方法论为追踪模型进化路径提供了清晰的观测窗口,尤其能有效揭示其在处理复杂推理任务时展现出的推理能力。
DeepSeek-R1-Zero通过扩展测试时计算(Test-time Computation)能力,实现了对复杂推理任务的自主攻克。该过程涵盖生成数百至数千个推理标记(Reasoning Tokens)的运算规模,使模型能够在更深层次上探索并优化其思维过程。这种自我进化最显著的特征在于:随着测试时计算量的增加,复杂行为的涌现现象(Emergence of Sophisticated Behaviors)开始显现。具体表现为:
1、反思机制(Reflection):模型会自主回溯并重新评估先前推理步骤
2、多路径探索:系统自发尝试不同的问题解决策略
值得注意的是,这些高阶认知行为并非通过预设编程实现,而是完全源于模型与强化学习环境的持续交互。这种自组织演化特性使DeepSeek-R1-Zero的推理能力产生质变,在效率与准确性维度同步提升,最终形成攻克复杂任务的系统性解决方案。
Aha Moment of DeepSeek-R1-Zero
【这里不做过多赘述,看图就能感受到RL所带来的震撼。】
Aha moment有力印证了RL在人工智能系统中解锁智能新层级的潜力,进而为构建更具自主性与自适应能力的下一代模型开辟了技术路径。这一块为后续工作,甚至是通往AGI的工作留下了更多想象空间。
The Drawback of DeepSeek-R1-Zero
诚然,纯RL的训练方式给我们带来很多震撼,也让模型能出人意料的自发发掘进化推理能力,但其还是有一些缺陷的。其中,最显著的是DeepSeek-R1-Zero产出的结果常常会出现语言混杂,难以阅读等问题。为了让整个推理流程更为可读,用人类可读的冷启动数据完成训练,得到了DeepSeek-R1,将在下一个section详细介绍。
随想&讨论:从直觉上来说,该现象是符合预期且合理的。
模型本质上是通过输出所谓的‘思考过程’来影响后续token的输出概率分布(即输出正确答案的概率)。同时,BaseModel在预训练的过程中存在多语言的训练语料。因此只要是能影响后续输出概率分布的token,都可能被输出,被看作‘思考过程’。
某种程度上可以看作是XAI(AI可解释性)的一种形式,某种程度上可以看作是把深度学习模型内的参数计算(本质上也是在思考,即影响输出的概率分布)以自然语言形式展示出来了。因为自然语言的可读性,所以才让人们更加直观的感受到了所谓的‘智能’。
P.S. DeepSeek-R1 并非是基于DeepSeek-R1-Zero训练的,两者都是以DeepSeek-V3-Base作为BaseModel训练的。可以粗暴理解为DeepSeek-R1是DeepSeek-R1-Zero的升级版,DeepSeek-R1-Zero更多的作为了一个数据生成器的角色。
DeepSeek-R1-Zero取得的突破性成果催生出两个关键研究方向:
针对上述问题,设计了DeepSeek-R1的训练技术方案流程,其具体架构如下:
与DeepSeek-R1-Zero不同,为防止BaseModel在RL训练初期出现不稳定的冷启动阶段,针对DeepSeek-R1构建并收集了少量长思维链(long CoT)数据对模型进行微调,作为Actor模型的初始版本。
为收集此类数据,使用了多种方法融合,具体为:
1、构造一个提示词,让模型生成包含反思和验证的详细答案
2、使用带有长思维链示例通过few-shot prompting的方式注入到提示词
3、使用DeepSeek-R1-Zero以可读格式输出结果
4、使用人工标注完成最后的后处理以精炼结果
DS团队收集了数千条冷启动数据对DeepSeek-V3-Base进行微调,将其作为强化学习的起点。相较于DeepSeek-R1-Zero,该冷启动数据具有以下优势:
• 可读性:DeepSeek-R1-Zero的核心局限在于其生成内容往往不具备可读性。生成结果中可能混合使用多种语言或缺乏Markdown格式来为用户突出显示答案。相比之下,在为DeepSeek-R1构建冷启动数据时,设计了包含可读性模式的数据——每个回复末尾均包含摘要,并过滤了可读性差的回复。具体而言,将输出格式定义为|special_token|<reasoning_process>|special_token|<summary>,其中<reasoning_process>对应思维链(CoT),<summary>部分用于总结推理结果。
• 潜力优势:通过基于人类先验知识精心设计冷启动数据模式,观察到模型性能较DeepSeek-R1-Zero有显著提升。基于此认为迭代式训练是推理模型更优化的演进路径。
在基于冷启动数据对DeepSeek-V3-Base完成微调后,采用了与DeepSeek-R1-Zero相同的大规模强化学习训练流程。该阶段旨在提升模型的推理能力,特别是针对编程、数学、科学和逻辑推理等需要明确解题路径的强推理型任务。
在训练过程中,观察到思维链(CoT)常出现语言混杂现象,尤其是当强化学习提示包含多语言内容时。为缓解语言混杂问题,我们在强化学习训练中引入了语言一致性奖励机制,该奖励通过计算思维链中目标语言词汇的比例来确定。尽管消融实验表明这种对齐方式会导致模型性能的轻微下降,但该奖励机制更符合人类偏好,显著提升了输出的可读性。最终,将推理任务准确率与语言一致性奖励直接加权求和,形成综合奖励函数。随后对微调后的模型实施强化学习训练,直至其在推理任务上达到收敛状态。
讨论:此处的语言一致性奖励机制的计算公式原文并没有给出。猜测可能仍是rule-based的方式,可能是剔除了数字、标点符号等语言无关的信息后算CoT过程中的最大同一语言占比。
Rejection Sampling and Supervised Fine-Tuning
当Reasoning-oriented Reinforcement Learning达到收敛后,利用该训练节点收集SFT数据以进行后续迭代。与初期专注于推理的冷启动数据不同,这个阶段整合了其他领域的数据以提升模型在文本生成、角色扮演等通用任务中的表现。具体而言,通过了以下方法生成数据并实施微调:
推理数据:精选推理提示,使用上述RL后的模型checkpoint执行Rejection Sampling来生成reasoning trajectories(推理轨迹)。在RL阶段仅包含可通过规则奖励评估的数据。而在当前阶段,通过加入额外的数据(不一定可用规则来评估奖励)来扩展数据集。因此,其中部分数据采用生成式奖励模型(generative reward model)来评估,即将标准答案与模型预测结果输入DeepSeek-V3进行自动化评估。由于模型输出存在语言混杂、可读性差等问题,我们过滤了包含多语言混合、冗长段落及代码块的思维链。对于每个Prompt,采样了多个输出结果并仅保留正确结果。最终,共收集了约60万条推理相关训练样本。
知识注解:
Rejection Sampling(拒绝采样):核心思想是通过一个已知的、易于采样的提议分布(proposal distribution)来近似目标分布,并通过接受或拒绝样本的机制,最终得到符合目标分布的样本集。
非推理数据:针对写作、事实问答、自我认知及翻译等非推理数据,沿用了DeepSeek-V3的构建流程并复用其部分SFT数据集。对于特定非推理任务,通过prompt的方式要求DeepSeek-V3在回答问题前生成潜在思维链;而对于简单查询(如问候语句)则不生成对应的CoT。最终收集约20万条非推理训练样本。
基于上述约80万条精选数据集,对DeepSeek-V3-Base实施两轮SFT训练。
为实现模型与人类偏好的深度对齐,实施了第二阶段的强化学习,其目标是在优化推理能力的同时,系统性提升模型的有用性(helpfulness)与无害性(harmlessness)。具体而言,通过结合奖励信号(reward signals)与多样化提示分布(diverse prompt distributions)对模型进行训练:
对齐DeepSeek-V3的数据管线(pipeline)构建系统,采用与其一致的偏好对分布(preference pair distribution)与training prompts:
最终,通过融合多维度奖励信号与异构数据分布,我们成功训练出在保持卓越推理能力的同时,严格遵循有用性与无害性优先原则的模型。
为使轻量级模型具备与DeepSeek-R1相当的推理能力,基于上述的DeepSeek-R1精选80万样本,直接对Qwen及Llama等开源模型进行了监督微调(SFT)。实验结果表明,这种直接蒸馏方法(straightforward distillation method)可显著提升小模型的推理能力。本研究所用基座模型包括:
针对蒸馏模型(distilled models),仅采用监督微调(SFT)流程,未引入强化学习(RL)阶段——尽管RL可显著增强模型性能。文中表示研究核心目标在于验证蒸馏技术的有效性,而将RL阶段的探索空间留给更广泛学术界。
讨论:在下游应用当中或许可以尝试通过RL的方式让小模型具备某一垂直领域更强的推理能力提升模型性能。
如上所示,通过对DeepSeek-R1进行知识蒸馏(knowledge distillation),轻量级模型可取得显著性能提升。然而一个关键问题仍未解答:若不采用蒸馏技术,仅依赖本文所述的大规模强化学习(RL)训练,模型能否达到可比性能?为验证此问题,在Qwen-32B-Base模型上开展以下实验:
实验结果表明:
核心结论
讨论:小的模型其实表达能力是有限的,在做RL的时候其实是要求原始模型具备一定的推理理解能力(保证RL训练过程中explore的效率,如果原模型很蠢,那可能要花更长的时间去寻找思路解题,甚至无法解决)并有足量的参数支持学习。蒸馏的方式相当于直接教会了模型基础的思路,个人认为这个和R1的cold start是异曲同工的,感觉可以将蒸馏这一块的步骤替换掉cold start部分,然后后续沿用R1的思路尝试再做一个对比实验,或许性能还会有提升。
在DeepSeek-R1在研发初期,经历了若干未达预期的方法尝试。文中分享了一些关键失败案例,旨在为复杂推理模型的训练提供洞见(注:此处的失败分析并不否定相关方法的潜在价值)。
案例1:过程奖励模型(Process Reward Model, PRM)
PRM曾被证明可有效引导模型优化推理任务解决路径,但实际应用中发现三重瓶颈:
1、 细粒度步骤定义困境:通用推理任务中难以显式界定原子化推理步骤;
2、中间步骤验证难题:自动化标注(模型判定)可靠性不足;人工标注难以规模化扩展;
3、 奖励破解与系统复杂性:引入模型驱动的PRM会诱发reward hacking;奖励模型迭代需额外训练资源,显著增加训练pipeline的复杂度。
结论:尽管PRM在模型生成响应的Top-N重排序与引导式搜索中表现良好,但在大规模强化学习框架中,其收益无法覆盖新增的计算开销。
案例2:蒙特卡洛树搜索(Monte Carlo Tree Search, MCTS)
受AlphaGo与AlphaZero启发,尝试通过MCTS增强测试时计算可扩展性,方法设计:
1、将答案分解为可搜索的子模块;
2、通过prompt引导模型生成与搜索步骤对应的推理标记(tags);
3、基于预训练价值模型(value model)指导MCTS搜索答案;
4、用生成的QA Pair迭代优化策略模型与价值模型。
规模化训练挑战:
结论:MCTS虽能结合预训练价值模型(value model)提升推理阶段性能,但通过自搜索实现模型性能持续迭代仍存在显著障碍。
OlaChat数智助手产品介绍
OlaChat是腾讯PCG大数据平台部利用大模型,在数据分析领域推出的全新智能数据分析产品,目前已集成至DataTalk、OlaIDE等腾讯内部主流数据平台。
OlaChat已支持智能分析(智能生成拖拽分析查询、SQL查询)、数据可视化,结果解读与归因等能力,覆盖数据分析全流程。并于混元微调模型基础上,新增支持DeepSeek R1/V3模型,助力数据分析更加简单高效!