关于deepseek的系列模型,断断续续也看了相关paper,之前也做了部分记录但是一直没发出来,最近打算梳理下deepseek的系列模型,有个系统性的认识,后续可能再补个千问系列,部分细节持续更新~
目前整理的R1系列直达:
三句话总结:
- 首次验证了纯强化学习在 LLM 中显著增强推理能力的可行性(DeepSeek-R1-Zero),即无需预先的 SFT 数据,仅通过 RL 即可激励模型学会长链推理和反思等能力。
- 提出了多阶段训练策略(冷启动->RL->SFT->全场景 RL),有效兼顾准确率与可读性,产出 DeepSeek-R1,性能比肩 OpenAI-o1-1217。
- 展示了知识蒸馏在提升小模型推理能力方面的潜力,并开源多个大小不一的蒸馏模型(1.5B~70B),为社区提供了可在低资源环境中也能获得高推理能力的模型选择。
之前并没有仔细阅读R1的报告,看的都是各种技术帖子的解读,发现有很多失真。同时由于一直在做Long Cot的检索增强问答工作,看到里面的很多细节跟经验真的就关联起来了,反思之前做深度思考问答的一些问题,收益颇丰,所以在本文里面也做了一下小范围的分享和观点(个人理解,如有问题欢迎批评指正),后面可能根据自己的经验 ,再专门写一篇Long Cot在问答场景的一些经验和尝试(先挖坑< v _v v<)
DeepSeek-R1-Zero:纯RL训练的“自我觉醒”
Main Contribution
DeepSeek-R1-Zero首次验证了无需任何SFT数据,仅通过强化学习即可实现推理能力的自主进化。其核心创新在于:
- 算法框架:采用Group Relative Policy Optimization(GRPO),通过组内奖励对比优化策略,避免传统RL中复杂价值模型的依赖。
- 自我进化现象:模型在训练中自发涌现出“反思”(Re-evaluation)、“多步验证”(Multi-step Verification)等复杂推理行为。例如,在解决数学方程时,模型会主动纠正早期错误步骤(如表3的“Aha Moment”)。
- 性能飞跃:在AIME 2024数学竞赛任务中,模型Pass@1准确率从初始的15.6%提升至71.0%,多数投票(Majority Voting)后更达86.7%,与OpenAI的o1-0912模型持平。
Method
DeepSeek-R1-Zero 直接在基础模型上应用强化学习,不使用任何 SFT 数据。 为了训练 DeepSeek-R1-Zero,deepseek 采用了一种基于规则的奖励系统,该系统主要由两种奖励组成:
- 准确率奖励:准确率奖励模型评估响应是否正确。例如,在具有确定性结果的数学问题中,模型需要以指定的格式(box)提供最终答案,从而能够通过基于规则的验证来可靠地确认正确性。同样,对于 LeetCode 问题,可以使用编译器根据预定义的测试用例生成反馈。
- 格式奖励: 除了准确性奖励模型,还采用了一种格式奖励模型,要求模型将其思考过程放在**<think>和</think>**标签之间。
没有了grpo没有ppo里面的critic model,同时reward model用的又是rule based,速度上肯定就快很多了。其实r1的方案整体盘下来,会发现,简单+快速是制胜法宝,但是简单不代表是无效,抓住问题的关键的简单反而是高效,同时方案又比较快,验证的速度也会很快。
deepseek 在训练 DeepSeek-R1-Zero 时没有使用过程奖励(PRM)。在没有大量带「过程标签」(step-by-step annotation)的数据支撑下,模型如何知道自己的推理过程是否正确?
这里主要通过「结果判定」的方式:对于数学题、编程题等有客观正确答案的任务,可以把最终答案与标准结果对比给出奖励。虽没有逐步的过程标注,但最终答案正确与否足以在 RL 中当作回报(Reward)来引导模型学会更好的推理。
Details
一些细节:
- 效率上:放弃了通常与策略模型大小相同的critic model
- base mode: deepSeek-V3-Base(685B,MoE 256专家激活top8)
- 效果:pass@1 score on AIME 2024 increases from 15.6% to 71.0%, and with majority voting, the score further improves to 86.7%。
- prompt如下:
用了多少数据?好像没看到,只说了thousands of RL step
Result
DeepSeek-R1-Zero 在 AIME 2024 基准测试中的强化学习(RL)训练性能轨迹。随着 RL 训练的持续推进,DeepSeek-R1-Zero 的性能呈现出稳步提升的趋势。尤为引人注目的是,其 AIME 2024 的 pass@1 分数实现了显著飞跃,从最初的 15.6% 飙升至 71.0%,达到了与 OpenAI-o1-0912 相媲美的性能水平。
如下图所示,通过延长测试时间的计算,DeepSeek-R1-Zero 自然而然地获得了解决更复杂推理任务的能力,从生成数百个 token 到数千个 token,模型得以更深入地探索和优化其思维过程。
在大规模强化学习中,模型的「思考过程」会不断与最终的正确率奖励相互作用。当模型最初得出的答案并未得到较高奖励时,它会在后续的推理中「回头反省」,尝试补充或修正先前的思路,从而获得更高的奖励。随着强化学习的迭代,这种**「主动回溯、推翻先前想法并重新推理」的行为逐渐巩固,便在输出中表现为所谓的「aha moment」**。本质上,这是 RL 为模型「留出了」足够的思考和试错空间,当模型自行发现更优思路时,就会出现类似人类「恍然大悟」的瞬间。
蜗牛说:
在 DeepSeek-R1-Zero 的训练历程中,出现了一个特别引人注目的现象——“顿悟时刻”(aha moment)。如下图所示,这一关键时刻发生在模型的中间发展阶段。在这个阶段,DeepSeek-R1-Zero 通过重新审视其初始策略,学会了为问题分配更多思考时间。这一行为不仅彰显了模型推理能力的显著提升,也是强化学习如何催生意外且复杂成果的一个生动例证。
蜗牛说:
不过发现R1的很多aha moment也是有一些成本和代价的,比如我自己遇到的一些样例,可能不是太经典,大概可以了解下,就是很多时候然而,但是,实际上这样的词很多,但是其实没太有价值也没太有意义。当然效率这块现在也有很多研究工作,算是另外一个话题了。
例子:
你是一个编程大师,下面给出编程题目,你需要先考虑着可能是leetcode的哪道题目,然后用python对这个题目进行求解,代码中要给出相应注释。代码写完之后给出编程用到的思想和相关解释。
一个字符串a,希望把里面所有0通过swap操作放到一起,请给出最小的swap操作,并返回最终的字符串结果111000010
蜗牛说:
大道至简,之前在做深思考的时候注意中间过程的格式、首轮的规划,搞过的人才能明白里面的心酸,其实再回过来看,是把问题复杂化了!
然而,纯RL训练的代价是可读性差与多语言混杂。模型生成的推理过程常包含中英文混合、格式混乱等问题,限制了实际应用。
DeepSeek-R1:冷启动与多阶段训练的平衡
解决DeepSeek-R1-Zero出现的问题,整体采用冷启动 + 多阶段训练的方式:
- 阶段1:冷启动:以DeepSeek-V3-Base为基座,引入数千条高质量长推理链数据对基础模型微调,强制规范输出格式(如推理过程标签),解决语言混合、格式混乱等问题,提升可读性。使用冷启动数据的主要目的是为了解决 DeepSeek-R1-Zero 在训练早期出现的训练不稳定问题,同时通过精心设计冷启动数据的模式,可以引导模型产生更好的推理能力。
- 阶段2:推理导向的强化阶段:推理导向RL:结合规则奖励(答案准确性、语言一致性),优化数学、编程等结构化任务表现。
- 阶段3:拒绝采样和监督微调:进一步提升模型的综合能力。
- 阶段4:强化阶段:通用对齐RL:融入人类偏好奖励模型(Helpfulness & Harmlessness),确保模型在开放域任务中的安全性与实用性。
性能对标:DeepSeek-R1在MATH-500(97.3% Pass@1)、Codeforces(超越96.3%人类选手)等任务上达到与OpenAI-o1-1217相当的水平,同时在MMLU(90.8%)、GPQA Diamond(71.5%)等知识密集型任务中显著超越前代模型。
阶段1: 冷启动
使用少量高质量的 CoT 数据对基础模型进行微调,侧重点是让模型掌握基本的 CoT 推理能力,并使模型的输出更具可读性。
deepseek 探索了几种策略:
- 在prompt中加入Long Cot作为few-shot示例,直让模型生成包含反思和验证步骤的详细答案;
- 收集 DeepSeek-R1-Zero 的输出并通过人工标注进行refine;
最终收集了数千条冷启动数据,用以微调 DeepSeek-V3-Base 作为 RL 训练的起点。相比R1-Zero,这批SFT数据有如下特点:
- 可读性:R1-Zero里面存在混合多种语言以及缺乏markdown格式,DeepSeek-R1 创建的冷启动数据采用了一种可读模式,明确将输出格式定义为:|special_token|<reasoning_process>|special_token**<response>**。并且过滤掉哪些可读性差的结果。
蜗牛说:
在做推理模型的时候,其实我们也用过上面两种方式做冷启,甚至还引入了rstar论文里面的MCTS做路径搜索,并且其实花了相当长的时间来做冷启sft数据。但是其实在现在看来,SFT其实模仿到的是“行”或者是"术",而不是真正的"道",这一点深有体会。
在搞这批冷启数据的时候,注意可读性预计从两方面来做的:1是prompt里面肯定强调了格式,2是肯定有相关格式过滤,这个写个prompt直接模型判断就可以,现在的大模型比较擅长检测语法或者格式问题。
另外从原文里面的下面这句话来看(尤其是human priors),人工标注数据应该占比也不少。Potential: By carefully designing the pattern for cold-start data with human priors, we observe better performance against DeepSeek-R1-Zero. We believe the iterative training is a better way for reasoning models.
阶段2: 推理导向的强化学习
这一阶段专注于提升模型的推理能力,特别是在编码、数学、科学和逻辑推理等推理密集型任务上,这些任务定义明确且具有明确答案。
在训练过程中,观察到 CoT 经常出现语言混合现象,尤其输入的prompt里面有多种语言时出现更频繁。因此在这个阶段,引入语言一致性奖励,该奖励根据思维链(CoT)中目标语言单词的比例来计算,以减少推理过程中的语言混合问题。
尽管消融实验表明,语言一致性奖励会导致模型性能略有下降,但它更符合人类的偏好,提高了内容的可读性。最终,综合的奖励函数设计为:推理任务的准确性奖励 + 语言一致性奖励,形成了。直至其在推理任务上达到收敛。
用的是什么数据???分布是什么???
阶段3: 拒绝采样和 SFT
使用上一阶段的 RL 模型进行拒绝采样,生成高质量的推理和非推理数据,并用这些数据对模型进行微调。跟前两个阶段注重推理能力构建不同,该阶段侧重点是提升模型的综合能力,使其在写作、事实问答等多种任务上表现良好。
蜗牛说
其实在基模后训练时,我们的SFT和DPO也是用了类似的方式,就是先训练推理类的数据,然后二阶段训练非推力,跟上面的前两步训练推理,第三步训练综合能力异曲同工。
数据生成方法:
- 推理数据:在上一阶段,仅包含可以使用基于规则的奖励进行评估的数据。然而在本阶段,主要引入一下要求, 最终收集了60万条推理相关数据。
- 引入generative reward model,意思是说,通过将ground-truth和模型预测输入DeepSeek-V3进行判断打分,将更多数据纳入数据集,从而扩展了数据集。
- 由于模型输出可能存在混乱或者读起来费劲的结果,这里过滤掉了混合语言、长文和代码数据。最后结合上面的这些规范和过滤,拒绝采样找出好结果。
- 非推理数据:针对协作、问答、自我认知和 翻译等任务,复用了DeepSeek-V3的pipeline并复用了其训练时的SFT数据。对于非推理任务,通过提示 DeepSeek-V3 在回答问题前生成一个思维链。不过,对于简单的查询,如“你好”,不会提供思维链的回应。最终,我们收集了大约 20 万个与非推理训练数据。
蜗牛说:
部署或者调用过R1的应该有经历自己部署的很多时候没有<think>标签,应该就是这部分V3合成的这部分数据。
第二阶段推理和非推理数据一共80万。
阶段4:强化阶段
在上一阶段 SFT 模型的基础上进行 RL 训练,侧重点是使模型在所有场景下都能表现良好,包括推理任务和非推理任务,并且保证模型的安全性和无害性。
采用组合的reward信号以及多样的prompt进行训练:
- 推理数据:借鉴R1-Zero的方法采用rule-based的方法训练数学,代码,逻辑推理问题。
- 其他非推理数据:使用reward models(注意这里的s,是多个信号的整合)捕捉人类偏好,这里复用deepSeek-v3的pipeline并且采用相同的prompt分布。 这里的细节需要再研究下V3的报告,先挖个坑
这个阶段的有用性,只会关注最终的回复,确保最终回复对用户的有用性和相关性,尽量减少对思考过程的干扰。对于吴海星,评估包含思考+summary在内的整个回复,避免可能存在的潜在风险和有害信息。
数据量,数据分布后面可能需要根据V3进行确认
蜗牛说:
这里原文对于思考后的最终回复,用的是summary的说法,我觉得挺准确的,在做基于agent架构的深思考的时候,确实能感受出来最终的回复,其实最后的response就是一个summary。
蒸馏小模型
通过将DeepSeek-R1生成的80万条数据用于微调开源模型(Qwen、Llama系列),这些数据就是三阶段中的推理60万+非推理20万一共80万数据。 蒸馏时,只用了sft没有用RL(虽然这里用RL可能效果更好些 )。
蜗牛说:
这里蒸馏时,没有用RL,看似是给开源社区留了坑,其实小模型上做RL可能提升有限,毕竟小模型因为容量和能力有限,很难在无监督或纯 RL 情境下学到相似水平的推理模式。
个人理解,可能不太准确:RL本身就是一种提升pass @1的方式,但是pass @k如果k比较大的时候,可能变化不大,也就是在激发模型人类偏好的能力以及@1的正确性(推理能力我觉得也可以归到这里面)。
蒸馏可将「大模型的推理轨迹」直接转移给小模型,小模型只需要模仿大模型相对完备的推理流程,可以在较小训练/推理开销下取得远胜于自身独立强化学习的效果。
所以总结一下:大模型靠RL,小模型靠蒸馏,是一个验证比较可行的路子,至少目前的很多工作的发现是这样。
贴上原文的分析:
推理能力的高效迁移:
- 小模型性能飞跃:7B参数模型在AIME 2024上达55.5%,超越32B规模的QwQ-Preview;70B蒸馏模型在MATH-500(94.5%)等任务接近o1-mini。
- 开源贡献:发布1.5B至70B的蒸馏模型,为社区提供低成本、高性能的推理解决方案。
在这里使用的基座模型是 Qwen2.5-Math-1.5B、Qwen2.5-Math-7B、Qwen2.5-14B、Qwen2.5-32B、Llama-3.1-8B 和 Llama-3.3-70B-Instruct。
评估实验和效果
评估的数据集:
评估方法:
- MMLU, DROP, GPQA Diamond, and SimpleQA 采用来自simple-evals的prompt评估的方式;
- …
评估时,发现使用贪婪解码来评估长输出推理模型会导致更高的重复率,并且在不同的检查点之间存在显著差异。因此,我们默认采用 pass@𝑘评估,并用温度非0的pass@1评估,温度是0.6,topp0.95,因此这里的pass@1的公式是:
p
a
s
s
@
1
=
1
k
∑
i
=
1
k
p
i
pass@1 = \frac{1}{k}\sum_{i=1}^k p_i
pass@1=k1i=1∑kpi
p
i
p_i
pi指的是第i次结果的正确性。
除此之外,AIME2024上用时包含majority voting的结果。(64个结果投票 = cons@64)
基准测试:超越顶尖闭源模型
论文在20余项基准任务中对比了DeepSeek-R1与Claude-3.5、GPT-4o、OpenAI-o1系列等模型(表4),关键结论包括:
- 数学与编程:AIME 2024(79.8%)、MATH-500(97.3%)、LiveCodeBench(65.9%)等任务表现全面领先,Codeforces评分(2029)接近人类顶尖选手。
- 知识密集型任务:MMLU(90.8%)、GPQA Diamond(71.5%)等得分显著高于DeepSeek-V3,逼近OpenAI-o1-1217。
- 通用能力:AlpacaEval 2.0(87.6%胜率)、长上下文理解(如FRAMES任务82.5%)表现突出,证明RL训练可泛化至非推理场景。
效果:
- 推理任务:
- DeepSeek-R1在AIME 2024上取得了79.8%的 Pass@1 分数,略微超过 OpenAI-o1-1217。在MATH-500上,它达到了令人印象深刻的97.3%分数,表现与OpenAI-o1-1217相当,并显著优于其他模型。
- 在与编程相关的任务中,DeepSeek-R1在编程竞赛任务中展现出专家水平,它在 Codeforces 上获得了2,029 Elo评分,超过了比赛中96.3%的参赛者。
- 对于engineering-related任务,DeepSeek-R1 的表现略优于 DeepSeek-V3,这有助于开发者在实际任务中。
- 知识:
- 在 MMLU、MMLU-Pro 和 GPQA Diamond 等基准测试中,DeepSeekR1 取得了优异的成绩,显著优于 DeepSeek-V3,其分数分别为 MMLU 90.8%、MMLU-Pro 84.0%和 GPQA Diamond 71.5%。在这些基准测试上的表现略低于 OpenAI-o1-1217,但 DeepSeek-R1 超越了其他闭源模型,展现出其在教育任务中的竞争优势。
- 在事实基准测试 SimpleQA 上,DeepSeek-R1 表现优于 DeepSeek-V3,证明其处理基于事实的查询的能力。在这个基准测试上,OpenAI-o1 也超过了 4o,呈现出类似的趋势。
一些比较有意思的点:通过RL方式,DeepSeek-R1 表现优于 DeepSeek-V3在事实性上也会有提升,在长文问答上也有提升(DeepSeek-R1 excels on FRAMES),应该跟SFT和强化学习的prompt选取以及reward计算方式很大关系,大家可以发表一下自己观点。
小编小课堂:
什么是length-controlled win-rate?
分析讨论
为什么 PRM 和 MCTS 没有成功?
论文中提到,基于过程奖励模型(PRM)和蒙特卡洛树搜索(MCTS)并不适合 LLM 的推理。
PRM 的挑战
- 难以定义通用的、细粒度的推理步骤。
- 难以准确判断中间步骤的正确性,且自动标注方法效果不佳,人工标注又难以扩展。
- 模型化的 PRM 容易导致reward hacking(Agent 利用奖励函数或环境中的漏洞来获取高奖励,而并未真正学习到预期行为。)行为,并且会增加额外的训练成本。
MCTS 的挑战
- LLM 的 token 生成搜索空间巨大,远远超出棋类游戏,容易陷入局部最优解。
- 价值模型的训练非常困难,导致难以迭代提升。
其实prm和蒙特卡洛方法再抽象一层,感觉是一类方法,通过中间结果评估进行搜索,评估很难,搜索也很慢,两者都比较差的情况下,就很难做了。
未来工作
- 通用能力:目前,DeepSeek-R1 在函数调用、多轮对话、复杂角色扮演和 JSON 输出等任务上的能力不及 DeepSeek-V3。接下来,我们计划探索如何利用 CoT 来提升这些领域的任务表现。
- 语言混合:DeepSeek-R1 目前针对中文和英文进行了优化,在处理其他语言查询时可能会出现语言混合问题。例如,即使查询语言不是中文或英文,DeepSeek-R1 也可能使用英文进行推理和回复。我们计划在未来更新中解决这一限制。
- Prompting Engineering:在评估 DeepSeek-R1 时,我们观察到它对提示敏感。少样本提示始终会降低其性能。因此,我们建议用户直接描述问题,并在零样本设置中指定输出格式,以获得最佳结果。
- Software Engineering Tasks:由于评估时间长,这影响了 RL 过程的效率,大规模 RL 尚未在Software Engineering Tasks中得到广泛应用。因此,DeepSeek-R1 在软件工程基准测试上并未比 DeepSeek-V3 有巨大提升。未来版本将通过在Software Engineering数据上实施拒绝采样或在 RL 过程中结合异步评估来提高效率。
参考链接:
综述:DeepSeek Infra/V1/MoE/V2/V3/R1 & 开源关键技术
