专栏名称: Datawhale
一个专注于AI领域的开源组织,汇聚了众多顶尖院校和知名企业的优秀学习者,聚集了一群有开源精神和探索精神的团队成员。愿景-for the learner,和学习者一起成长。
目录
相关文章推荐
51好读  ›  专栏  ›  Datawhale

DeepSeek R1 最新全面综述,近两个月的深度思考!

Datawhale  · 公众号  ·  · 2025-02-19 22:22

正文

Datawhale干货

作者:长琴,Datawhale成员

本文是《2025 iFLYTEK 开发者TALK 杭州站《DeepSeek深度技术解析》分享的文字版。由于时间关系,实际分享是本文的简化版。文字内容是近半个月陆陆续续记录的一些阅读笔记和思考,中途接到分享邀请(还好有点积累,不然怕是难顶doge),成稿于分享后。

分享PPT:
https://github.com/datawhalechina/hugging-llm/tree/main/resources
距离2022年底ChatGPT发布开启LLM时代才过去两年多一点时间,刚进入2025年,DeepSeek-R1就将LLM真正推向了深度思考时代。

两年多的高速发展,前所未有的按周迭代,如今想来都一阵恍惚。2023年是LLM最快速发展的一年,被称为LLM元年,新的开发范式出现(感兴趣的读者可以关注HuggingLLM (htt ps://github.com/datawhalechina/hugging-llm) ),全民AI浪潮涌现。2024年,基于LLM的应用已经开始成熟,Agent百花齐放,进入元年,各种应用层出不穷,一个人公司成为可能。

当我们以为LLM基本就这样按部就班向”应用“时,R1出现了,它发迹于OpenAI-o1,但超越了o1。关于o1,我的观点和OpenAI前首席研究官Bob的观点一致:它的目标是解决复杂问题,大多数人日常工作中并不会遇到需要o1的需求(可以参考 关于AI前沿的思考 (https://yam.gift/2024/12/20/NLP/2024-12-20-Think-About-AI-and-Related/) )。但是R1提升了LLM的整体能力,让模型真正在推理时进行自我反思和验证,这当然适用于复杂问题,但日常工作很多场景也能受益,AI更加像人。我觉得这是R1对整个行业的贡献,其作用不亚于ChatGPT的发布。

DeepSeek-R1:LLM进入深度思考时代

首先,我们来解读R1的论文,这篇论文本身不复杂,条理很清晰。论文核心内容可以概括为三个部分:R1-Zero、R1和蒸馏。各部分都可以简单概括为一句话。

  • R1-Zero =Pretrain(DeepSeek-V3-Base)+RL(GRPO),证明Pure Rule 的 RL也有效,表现出自我验证、反思、和生成长COT的能力。但有可读性差、语言混合问题。
  • R1 =Pretrain+Cold-Start(SFT)+RL(提升推理能力)+生成数据和SFT监督数据微调Base(SFT)+RL(对齐),先提升推理能力,搞出数据,再提升LLM整体能力。
  • 蒸馏 =R1数据+学生模型SFT。蒸馏>RL,R1数据SFT的小模型能力得到提升,且优于强化学习+小模型。

真是再次证明了”数据决定上限,算法逼近上限“,也重新定义了什么叫”高质量数据“。

R1-Zero:RL的潜力

纯RL,基于规则,没有监督数据。

GRPO

放弃了通常与policy模型大小相同的critic模型,从群体分数来估计基线。具体来说,对每个q,GRPO从旧的policy采样一组输出,然后通过下面的目标函数优化policy。

其中,𝜀 和 𝛽 是超参,Ai是advantage,如下。

GRPO相比PPO要简单,但更重要的是它有效。

RM

基于规则,没有ORM或PRM!包括精度奖励和格式奖励(把思考过程放在 之间)两种规则。

这真是振奋人心的发现!我个人对强化学习(以及基于规则)的执念已经很久了(可以追溯到2018年),之前很多次提到过(见后面附录1相关文章),也做过一些尝试,但一直没有取得很好的成果。看到R1论文的第一反应是不可能吧?自己跟着复现后真的是震惊到了,太漂亮了。

数据构造

训练数据基于如下模板构造:

A conversation between User and Assistant. The user asks a question, and the Assistant solves it. The assistant first thinks about the reasoning process in the mind and then provides the user with the answer. The reasoning process and answer are enclosed within   and   tags, respectively, i.e.,  reasoning process here   answer here . User: prompt. Assistant:

其中的prompt就是相应的问题。这里有意将约束限制在这种结构格式上是为了避免任何特定于内容的偏差,如强制反射性推理或促进特定的问题解决策略,确保能够准确观察到模型在强化学习过程中的自然进展。

上面的模板是Base模型,Instruct模型也是类似的。

结果

非常漂亮的曲线,非常Nice的表现!而且,实际中还可以通过多数投票进一步提升性能,如红色曲线所示。

Self-evolution

然后是过程中表现出来的自我进化,它最引人注目的方面之一是 随着推理时计算的增加,出现了复杂的行为 。诸如反思(重新审视和重新评估先前的步骤)和探索解决问题的替代方法等行为。这些行为是自发产生的,是模型与强化学习环境交互的结果,而不是明确编程的、外部调整的结果。

Aha Moment

接下来是很多人津津乐道的Aha Moment,其实就是模型自动学习重新评估、检查或验证,即自我反思和错误修正,有点类似”恍然大悟“。它显示出强化学习的神奇之处:我们并没有明确告诉模型如何解决问题,而是通过提供适当的激励,让它自主发展出高级的解决问题策略。

Aha Moment可以看作是模型在”推理时思考“的表现,其 外在表现 就是出现类似确认、重新检查、评估、验证等词,并且回复长度增加。如下图所示。

但值得注意的是:

  • Aha Moment并不是只有这种情况才会有。
  • 长度增加并不一定意味着结果变好,或模型在思考。

关于这点我们后面会专门介绍另一篇研究的结论,这里不再赘述。

至于为什么R1-Zero可以有这样的效果,我觉得还是因为模型本身就有这样的能力,RL做的只是释放或引导出这种能力。后面我们会介绍通过少量SFT数据也可以做到。

R1-Zero表现出来的问题主要是两个:可读性差和语言混合现象。但我在复现时感觉第一个问题还好,第二个问题确实存在,也比较明显。不过话说回来,只要结果正确,过程人类可不可读,好像问题也不太大吧(doge)。

最后再补充一句,R1-Zero用纯规则强化学习能做出这样的效果,真的很厉害!

R1:LLM再次进化

接下来是R1,它是想改进R1-Zero自然延伸而来。R1-Zero后马上紧跟两个问题:

  • 通过加入少量高质量数据作为冷启动,是否可以进一步提高推理性能或加速收敛?
  • 如何训练一个用户友好的模型,该模型不仅产生清晰连贯的思维链 (CoT),而且还表现出强大的通用能力?

冷启动

R1第一步,冷启动。收集少量(Thousands)高质量CoT数据微调模型作为RL的起点(初始Actor)。

  • 以长链推理(CoT)作为示例进行少量提示,直接提示模型生成带有反思和验证的详细答案。
  • 以可读格式收集 R1-Zero 输出,并通过人工后处理来提炼结果。

冷启动数据相比R1-Zero的优势:

  • 可读性:R1-Zero的内容经常不可读,冷启动的数据都是可读格式。
  • 潜力:比R1-Zero表现更好。

推理导向的RL

接下来和R1-Zero一样(大规模RL),目的是提升模型推理能力,尤其是推理密集的任务。

  • 训练过程中,依然观察到语言混合现象,尤其是Prompt包含多语种时。
  • 为了减轻这个问题,引入「语言一致性」奖励,计算方式为推理链中目标语言词的比例。虽然导致性能略微下降,但结果可读。
  • 最终奖励为:推理任务的准确性+语言一致性的奖励。

拒绝采样和SFT

上一步收敛后,主要用来收集SFT数据。就是说,前面做的工作都是为了搞数据。与主要关注推理的初始冷启动数据不同,此阶段整合了来自其他领域的数据,以增强模型在写作、角色扮演和其他通用任务方面的能力。

即用 生成数据 在DeepSeek-V3-Base上进行SFT。这个做法就是一般意义上的SFT,只是这里数据不一样。

  • 推理数据:600k。用上一阶段的模型生成推理链数据(每个Prompt输出多个Response,选择正确的)。扩充了数据,过滤掉了结果中混合语言、长释义和代码块的推理链。
  • 非推理数据:200k。复用了DeepSeek-V3的一部分SFT数据,对于某些非推理任务,调用DeepSeek-V3生成一个潜在的推理思维链,然后再通过提示来回答问题。对非常简单的query(比如“你好”之类),回复不用CoT。

所有场景RL

对齐阶段,提升有用性和无害性,同时保持推理能力在线。这里对齐时采用了混合方法。

  • 推理数据(数学、代码和逻辑推理):遵循 DeepSeek-R1-Zero 中概述的方法(即规则)。
  • 非推理数据:采用奖励模型来捕捉复杂和细微场景中的人类偏好。

对于有用性,专注最终总结,确保评估侧重于 响应对用户的实用性和相关性 ,同时尽量减少对基础推理过程的干扰。

对于无害性,评估模型的整个响应,包括推理过程和总结。

经过以上4步,R1就出炉了。可以看到前两步主要是用来搞数据,具体来说就是带思考过程的数据。当然,后面两步也有改进,比如综合了两种数据训练和对齐。

这算不算是重新定义了“高质量数据”和“新的训练范式”呢?不管答案如何,我想,后面所有的LLM可能都会“R1”一下的。

蒸馏:小模型也有大能力

最后是蒸馏,也就是让小模型也拥有推理能力。具体做法是,直接用前面的800k数据微调Qwen和LLaMA,这种蒸馏方法叫黑盒蒸馏。

值得注意的是,这里没有继续RL(即使合并 RL 可以大大提高模型性能),他们将这个留给了社区。然后,就真的出现了(后面会介绍的DeepScaleR),算是补充了这里的后续。

R1相关研究探索

这一部分我们介绍与R1相关的一些比较有意思的研究。

oat-zero

首先来看oat-zero,相关内容如下。

  • There May Not be Aha Moment in R1-Zero-like Training — A Pilot Study
  • sail-sg/oat-zero: A lightweight reproduction of DeepSeek-R1-Zero with indepth analysis of self-reflection behavior.

主要有下面几个结论。

  • 在 R1-Zero 类训练中可能没有 Aha 时刻。相反,Aha 时刻(例如自我反思模式)出现在第 0 轮,即基础模型阶段。说明Aha不需要RL也可以有。
  • Base模型的回答中存在 表面自我反思(SSR) ,在这种情况下,自我反思不一定导致正确的最终答案。比如四种行为中的后两种,如下所示。注意啊,这里并不是说Base模型不能自我反思,只是说 存在 表面自我反思。
    • 行为1:自我反思 重新检查 并确认正确答案。
    • 行为2:自我反思 纠正 最初的错误想法。
    • 行为3:自我反思 引入错误 到原本正确的答案中。
    • 行为4:重复的自我反思 未能产生有效答案
  • 响应长度的增加现象并非自我反思的出现所导致,而是强化学习优化良好设计的基于规则的奖励函数的结果。
    • RL是将原本表面的自我反思转化为有效的自我反思,以最大化预期奖励,从而提高推理能力。
    • 长度和自我反思可能不相关。

总的来说,可以概括成两句话:Base模型也可能Aha,但不否认RL不能Aha;RL能将Base的表面自我反思转化为有效自我反思,只是并不一定长度就一定增加。我觉得这个结论是Make sense的,Base模型只是具有能力但没有被激活,RL才激活了能力。

DeepScaleR

接下来是前面「蒸馏」部分提到的DeepScaleR,相关内容如下。

  • DeepScaleR: Surpassing O1-Preview with a 1.5B Model by Scaling RL
  • agentica-project/deepscaler: Democratizing Reinforcement Learning for LLMs

它的做法是直接从 Deepseek-R1-Distilled-Qwen-1.5B 强化微调(用高质量40K Math数据)。得到的模型在AIME2024和MATH500上超过了 o1-preview

这里的背景是:复现R1的计算量比较大,⩾32K context,~8000 steps,即使对1.5B模型也需要70,000小时A100。为了解决这个问题,本文使用一个蒸馏模型,并引入迭代式的长度增加方案。计算资源降到3800小时A100。

本文主要证明了通过 RL开发定制的推理模型既可扩展(Scaling)又具有成本效益。

它的数据处理流程如下:

  • 使用 gemini-1.5-pro-002 从官方Solution中抽取答案。
  • 使用 sentence-transformers/all-MiniLM-L6-v2 作为Embedding(使用语义相似度)移除重复/相似问题。
  • 移除不能用 sympy 评估的问题(这类问题需要使用LLM评估,这不但会影响训练速度,还可能引入噪声奖励信号)。

ORM设计:

  • 1:如果答案通过基础的 LaTeX/Sympy 检查。
  • 0:答案或格式不对(比如没有 , )。

交互式的上下文长度增加方案:从短到长。

  • 长上下文为模型提供更多思考空间,但会降低训练速度;但短上下文可能会限制模型解决需要较长上下文的更难问题的能力。
  • 所以分两步走:8k→16k和24k。第一步在8k上实现更有效的推理和高效的训练;接下来扩展上下文长度,以便模型可以解决更复杂的问题。

为什么要分两步走?因为在训练前评估模型时,发现错误响应的长度是正确响应的3倍。这表明较长的响应通常会导致不正确的结果,直接用长上下文窗口进行训练可能效率低下,因为大多数Token实际上都被浪费了。

我们看看实际的效果,如下所示。

  • 先在8k上下文训练,平均训练奖励从 46% 增加到 58%,而平均响应长度从 5,500 下降到 3,500,AIME2024 Pass@1 Acc 33.9%。1000步后,响应长度再次开始增加,响应裁剪率从 4.2% 上升到 6.5%,表明更多的响应在上下文限制处被截断。说明此时模型试图通过“思考更久”(即生成更多Token)来提高训练奖励。






请到「今天看啥」查看全文