几个要点

  1. 数据层面

    a. 大规模人工标注还是太麻烦了,==探索无需人工标注的方法== -> 跳过SFT直接上RL

    b. a步骤基础上加上一点人工标注作为==冷启动==,会好很多 -> 小小SFT一下,还是不错

  2. 训练层面

    a. RL模型:==Group Relative Policy Optimization==

    b. 奖励:==准确性奖励+格式化奖励==。试过当红的过程奖励和MTCS,最终都放弃

    c. 振奋人心的自我进化时刻和==顿悟==时刻!

    c. SFT冷启动一下效果会更好。也就是==pretrain+SFT+RLHF的pipeline依旧是上限最高的==

    d. 对小模型来说,==从大模型蒸馏依旧是天花板最高的方案==

  3. 模型开源

    a. DeepSeek-R1-Zero: DeepSeek-V3-Base作为基础模型+RL

    b. DeepSeek-R1: DeepSeek-V3-Base+SFT冷启动+RL

    c. 一堆蒸馏的小模型

image-20250123230403313

方法

概述

先前的研究严重依赖大量的监督数据来提升模型性能。在本研究中,我们证明了即使不使用监督微调(SFT)作为冷启动,通过大规模强化学习(RL)也可以显著提高推理能力。此外,通过加入少量冷启动数据,性能可以得到进一步提升。在接下来的章节中,我们将介绍:

(1)DeepSeek-R1-Zero,它直接将强化学习应用于基础模型,无需任何SFT数据;

(2)DeepSeek-R1,它从使用数千个长链式思考(CoT)示例进行微调的检查点开始应用强化学习。

(3)将DeepSeek-R1的推理能力提炼到小型密集模型中。

DeepSeek-R1-Zero: 基于基础模型的强化学习

收集监督数据非常费劲,希望探索没有任何监督数据情况下的能力,重点关注通过纯粹的强化学习过程进行的自我进化。

强化学习算法

Group Relative Policy Optimization 为了节省强化学习的训练成本,我们采用了组相对策略优化(GRPO),它放弃了通常与策略模型大小相同的评论家模型,而是从组得分中估计基线。

$$ \begin{equation} \begin{split} \mathcal{J}_{GRPO}(\theta) &= \mathbb{E}{[q \sim P(Q), \{o_i\}_{i=1}^G \sim \pi_{\theta_{old}}(O|q)]} \\ & \frac{1}{G}\sum_{i=1}^G \left( \min \left( \frac{\pi_\theta(o_i |q)}{\pi_{\theta_{old}}(o_i |q)} A_i, \text{clip} \left( \frac{\pi_\theta(o_i |q)}{\pi_{\theta_{old}}(o_i |q)}, 1 - \epsilon, 1 + \epsilon \right) A_i \right) - \beta \mathbb{D}_{KL}\left(\pi_{\theta} || \pi_{ref}\right)\right) , \end{split} \label{eq:GRPO-obj} \end{equation} $$$$ \begin{equation} \mathbb{D}_{KL}\left(\pi_{\theta} || \pi_{ref}\right) = \frac{\pi_{ref}(o_i|q)}{\pi_{\theta}(o_i|q)}- \log\frac{\pi_{ref}(o_i|q)}{\pi_{\theta}(o_i|q)} - 1, \end{equation} $$$$ \begin{equation} A_i = \frac{r_i - {\mathrm mean(\{r_1, r_2, \cdots, r_G\})}}{{\mathrm std(\{r_1, r_2, \cdots, r_G\})}}. \end{equation} $$

image-20250123230858294

奖励建模

奖励是训练信号的来源,它决定了强化学习的优化方向。

为了训练 DeepSeek-R1-Zero,我们采用基于规则的奖励系统,该系统主要由两种类型的奖励组成:

准确性奖励: 准确性奖励模型评估响应是否正确。例如,对于具有确定性结果的数学问题,模型需要以指定的格式(例如,在方框内)提供最终答案,从而能够对正确性进行可靠的、基于规则的验证。类似地,对于 LeetCode 问题,可以使用编译器根据预定义的测试用例生成反馈。

格式奖励: 除了准确性奖励模型之外,我们还采用格式奖励模型,该模型强制模型将其思考过程置于 <think>' 和 ’ 标签之间。

我们在开发 DeepSeek-R1-Zero 时不采用结果或过程奖励模型,因为我们发现神经奖励模型可能在大规模强化学习过程中遭受 reward hacking,并且重新训练奖励模型需要额外的训练资源,这会使整个训练流程复杂化。

训练模板

为了训练 DeepSeek-R1-Zero,我们首先设计一个简单的模板,引导基础模型遵循我们指定的指令。如表 2所示,此模板要求 DeepSeek-R1-Zero 首先生成推理过程,然后给出最终答案。我们有意将约束限制在这种结构格式上,避免任何特定于内容的偏见——例如强制进行反思性推理或推广特定的问题解决策略——以确保我们能够准确观察模型在强化学习过程中的自然进展。

image-20250123231136128 image-20250123231151530

图2展示了 DeepSeek-R1-Zero 在强化学习(RL)训练过程中,于 AIME 2024 基准测试上的性能轨迹。如图所示,随着强化学习训练的推进,DeepSeek-R1-Zero 的性能呈现出稳定且持续的提升。值得注意的是,在 AIME 2024 上的平均 pass@1 分数显著提高,从最初的 15.6% 跃升至令人瞩目的 71.0%,达到了与 OpenAI-o1-0912 模型相媲美的性能水平。这一显著的进步突显了我们的强化学习算法在优化模型性能方面的有效性。表2提供了 DeepSeek-R1-Zero 与 OpenAI 的 o1-0912 模型在多个推理相关基准测试上的对比分析。结果表明,强化学习使 DeepSeek-R1-Zero 能够在无需任何监督微调数据的情况下,获得强大的推理能力。

这是一个值得注意的成就,因为它突显了该模型仅通过强化学习(RL)就能有效地学习和泛化的能力。此外,通过应用多数投票,可以进一步提升 DeepSeek-R1-Zero 的性能。例如,当在 AIME 基准测试中使用多数投票时,DeepSeek-R1-Zero 的性能从 71.0% 提升到 86.7%,从而超越了 OpenAI-o1-0912 的性能。DeepSeek-R1-Zero 在有无多数投票的情况下都能取得如此具有竞争力的性能,突显了其强大的基础能力以及在推理任务中进一步发展的潜力。

image-20250123231223481

DeepSeek-R1-Zero 的自我进化过程 DeepSeek-R1-Zero 的自我进化过程,展示了强化学习如何驱动模型自主提高其推理能力。通过直接从基础模型启动强化学习,我们可以密切监控模型的进展,而无需受到监督微调阶段的影响。这种方法清晰地展示了模型如何随着时间的推移而演变,尤其是在处理复杂推理任务的能力方面。

如图3所示,DeepSeek-R1-Zero的思考时间在整个训练过程中呈现持续的改进。这种改进并非外部调整的结果,而是模型内部的内在发展。DeepSeek-R1-Zero通过利用扩展的测试时计算,自然地获得了解决日益复杂的推理任务的能力。这种计算范围从生成数百到数千个推理Token,允许模型更深入地探索和改进其思考过程。这种自我演变最显著的方面之一是,随着测试时计算的增加,出现了复杂的行为。诸如反思(模型重新审视和重新评估其先前的步骤)以及探索解决问题的替代方法等行为会自发出现。这些行为不是显式编程的,而是作为模型与强化学习环境交互的结果而出现的。这种自发的发展显著增强了DeepSeek-R1-Zero的推理能力,使其能够以更高的效率和准确性处理更具挑战性的任务。

DeepSeek-R1-Zero 的顿悟时刻 在 DeepSeek-R1-Zero 的训练过程中,一个特别引人入胜的现象是“顿悟时刻”的出现。如表3所示,这个时刻发生在模型的中间版本。在这个阶段,DeepSeek-R1-Zero 通过重新评估其最初的方法,学会为问题分配更多的思考时间。这种行为不仅证明了模型不断增长的推理能力,而且也是强化学习如何产生意想不到且复杂结果的绝佳例证。

image-20250123231344311

这个时刻不仅是模型本身的“顿悟时刻”,也是观察其行为的研究人员的“顿悟时刻”。它突显了强化学习的力量和魅力:我们并非明确地教导模型如何解决问题,而是简单地为其提供正确的激励,它便能自主地发展出高级的问题解决策略。“顿悟时刻”有力地提醒我们,强化学习有潜力在人工智能系统中解锁新的智能水平,为未来更自主和自适应的模型铺平道路。

DeepSeek-R1-Zero 的缺点 虽然 DeepSeek-R1-Zero 展现出强大的推理能力,并自主发展出意想不到且强大的推理行为,但它也面临着一些问题。例如,DeepSeek-R1-Zero 在可读性差和语言混合等挑战中挣扎。为了使推理过程更具可读性并与开放社区分享,我们探索了 DeepSeek-R1,这是一种利用强化学习和人类友好的冷启动数据的方法。

DeepSeek-R1: Reinforcement Learning with Cold Start

受到 DeepSeek-R1-Zero 的有希望的结果的启发,出现了两个自然的问题:

1)通过引入少量高质量数据作为冷启动,是否可以进一步提高推理性能或加速收敛?

2)我们如何训练一个用户友好的模型,它不仅能产生清晰连贯的思维链(CoT),还能展示强大的通用能力?

为了解决这些问题,我们设计了一个训练 DeepSeek-R1 的流程。该流程包括四个阶段,概述如下。

冷启动

与 DeepSeek-R1-Zero 不同,为了防止 RL 训练早期从基础模型开始的不稳定冷启动阶段,对于 DeepSeek-R1,我们构建并收集少量长 CoT 数据来微调模型,作为初始 RL 执行者。

为了收集此类数据,我们探索了几种方法:使用带有长CoT的少样本提示作为示例,直接提示模型生成带有反思和验证的详细答案,以可读格式收集DeepSeek-R1-Zero输出,并通过人工标注员进行后处理来改进结果。在这项工作中,我们收集了数千个冷启动数据,以微调DeepSeek-V3-Base作为强化学习的起点。

与DeepSeek-R1-Zero相比,冷启动数据的优势包括:

Readability:DeepSeek-R1-Zero的一个主要限制是其内容通常不适合阅读。响应可能混合多种语言,或者缺乏markdown格式来突出显示用户的答案。相比之下,在为DeepSeek-R1创建冷启动数据时,我们设计了一种可读的模式,该模式在每个响应的末尾包含摘要,并过滤掉不适合阅读的响应。在这里,我们将输出格式定义为 |special_token|<推理过程>|special_token|<摘要>,其中推理过程是查询的CoT,摘要用于总结推理结果。

Potential:通过仔细设计具有人类先验的冷启动数据模式,我们观察到相对于DeepSeek-R1-Zero更好的性能。我们认为迭代训练是推理模型的更好方法。

在对 DeepSeek-V3-Base 进行冷启动数据微调后,我们采用了与 DeepSeek-R1-Zero 中相同的大规模强化学习训练流程。此阶段的重点是增强模型的推理能力,尤其是在编码、数学、科学和逻辑推理等推理密集型任务中,这些任务都涉及具有明确解决方案的定义明确的问题。在训练过程中,我们观察到 CoT(思维链)经常出现语言混合的情况,特别是在强化学习(RL)提示词涉及多种语言时。为了缓解语言混合的问题,我们在强化学习训练期间引入了语言一致性奖励,该奖励计算为 CoT 中目标语言单词的比例。尽管消融实验表明,这种对齐会导致模型性能略有下降,但这种奖励更符合人类偏好,使其更易读。最后,我们将推理任务的准确性和语言一致性奖励直接相加,形成最终奖励。然后,我们在微调后的模型上应用强化学习训练,直到它在推理任务上实现收敛。

拒绝采样和监督微调

当面向推理的强化学习收敛时,我们利用由此产生的检查点来收集后续轮次的 SFT(监督微调)数据。与最初主要关注推理的冷启动数据不同,此阶段纳入来自其他领域的数据,以增强模型在写作、角色扮演和其他通用任务中的能力。具体来说,我们按照下述方式生成数据并微调模型。

推理数据 我们整理推理提示词,并通过从上述强化学习训练的检查点执行拒绝采样来生成推理轨迹。

在前一阶段,我们只包括可以使用基于规则的奖励进行评估的数据。然而,在此阶段,我们通过纳入额外的数据来扩展数据集,其中一些数据通过将真实答案和模型预测输入到 DeepSeek-V3 中进行判断,从而使用生成式奖励模型。此外,由于模型输出有时混乱且难以阅读,我们过滤掉了包含混合语言、长段落和代码块的思维链。

对于每个提示词,我们采样多个响应,并仅保留正确的响应。总共,我们收集了大约 60 万个与推理相关的训练样本。

非推理数据 对于非推理数据,例如写作、事实问答、自我认知和翻译,我们采用 DeepSeek-V3 流水线,并复用 DeepSeek-V3 的 SFT 数据集的部分内容。对于某些非推理任务,我们会调用 DeepSeek-V3,通过提示词生成潜在的思维链,然后再回答问题。然而,对于更简单的查询,例如“你好”,我们不会在响应中提供思维链 (CoT)。最终,我们总共收集了大约 20 万个与推理无关的训练样本。

我们使用上述约 80 万个样本的精选数据集对 DeepSeek-V3-Base 进行了两个 epoch 的微调。

所有场景的强化学习

为了进一步使模型与人类偏好对齐,我们实施了第二阶段的强化学习,旨在提高模型的有用性和无害性,同时改进其推理能力。具体来说,我们使用奖励信号和多样化的提示词分布的组合来训练模型。对于推理数据,我们遵循 DeepSeek-R1-Zero 中概述的方法,该方法利用基于规则的奖励来指导数学、代码和逻辑推理领域的学习过程。

对于通用数据,我们采用奖励模型来捕捉复杂和细致场景中人类的偏好。我们基于 DeepSeek-V3 的流程,并采用相似的偏好对和训练提示词分布。关于有用性,我们仅关注最终的总结,确保评估侧重于响应对用户的效用和相关性,同时尽量减少对底层推理过程的干扰。关于无害性,我们评估模型的整个响应,包括推理过程和总结,以识别并减轻生成过程中可能出现的任何潜在风险、偏见或有害内容。最终,奖励信号和多样化数据分布的整合使我们能够训练出一个在推理方面表现出色,同时优先考虑有用性和无害性的模型。

蒸馏:赋予小型模型推理能力

为了使更高效的小型模型具备像 DeepSeek-R1 这样的推理能力,我们直接使用 DeepSeek-R1 精选的 80 万个样本对开源模型(如 Qwen和 Llama)进行了微调。

我们的研究结果表明,这种直接的蒸馏方法显著增强了较小模型的推理能力。我们这里使用的基础模型是 Qwen2.5-Math-1.5B、Qwen2.5-Math-7B、Qwen2.5-14B、Qwen2.5-32B、Llama-3.1-8B 和 Llama-3.3-70B-Instruct。我们选择 Llama-3.3 是因为它在推理能力上略优于 Llama-3.1。

对于蒸馏模型,我们仅应用 SFT(监督微调),不包括 RL(强化学习)阶段,即使加入 RL 可以显著提升模型性能。我们这里的主要目标是展示蒸馏技术的有效性,将 RL 阶段的探索留给更广泛的研究社区。

实验

基准测试

image-20250123231952209

image-20250123232020734

简单地对 DeepSeek-R1 的输出进行蒸馏,使得高效的 DeepSeek-R1-7B(即 DeepSeek-R1-Distill-Qwen-7B,下文简称类似)在所有方面都优于像 GPT-4o-0513 这样的非推理模型。DeepSeek-R1-14B 在所有评估指标上均超过了 QwQ-32B-Preview,而 DeepSeek-R1-32B 和 DeepSeek-R1-70B 在大多数基准测试中都显著优于 o1-mini。

这些结果展示了蒸馏的巨大潜力。此外,我们发现对这些蒸馏模型应用强化学习可以带来显著的进一步提升。我们认为这值得进一步探索,因此这里仅呈现简单的 SFT 蒸馏模型的结果。

讨论

知识蒸馏 vs. 强化学习

image-20250123232050521

我们可以看到通过蒸馏 DeepSeek-R1,小模型能够取得令人印象深刻的成果。然而,仍然存在一个问题:模型是否可以在不进行蒸馏的情况下,仅通过论文中讨论的大规模强化学习 (RL) 训练,达到相近的性能水平?为了解答这个问题,我们利用数学、代码和 STEM 数据,对 Qwen-32B-Base 进行了大规模强化学习训练,训练步数超过 1 万步,最终得到了 DeepSeek-R1-Zero-Qwen-32B。实验结果如表 \ref{tab:distill_vs_rl} 所示,结果表明,经过大规模强化学习训练后,32B 的基础模型在性能上可以与 QwQ-32B-Preview 相媲美。然而,从 DeepSeek-R1 蒸馏得到的 DeepSeek-R1-Distill-Qwen-32B 在所有评测基准上都显著优于 DeepSeek-R1-Zero-Qwen-32B。

因此,我们可以得出两个结论:第一,将更强大的模型蒸馏到更小的模型中能够产生卓越的成果;而依赖于本文所述大规模强化学习的较小模型,不仅需要消耗巨大的计算资源,甚至可能无法达到蒸馏后的性能水平。第二,尽管蒸馏策略经济高效,但要突破智能的边界,可能仍然需要更强大的基础模型和更大规模的强化学习。

不成功的尝试

在开发 DeepSeek-R1 的早期阶段,我们也遇到了失败和挫折。我们在此分享我们的失败经验,以提供一些见解,但这并不意味着这些方法无法开发出有效的推理模型。

过程奖励模型 (PRM)

PRM 是一种合理的方法,可以引导模型朝着更好的方法来解决推理任务。然而,在实践中,PRM 有三个主要的局限性,可能会阻碍其最终成功。首先,要明确定义一般推理中的细粒度步骤是具有挑战性的。其次,确定当前中间步骤是否正确是一项具有挑战性的任务。使用模型进行自动注释可能无法产生令人满意的结果,而手动注释不利于扩大规模。第三,一旦引入基于模型的 PRM,它不可避免地会导致奖励hacking,并且重新训练奖励模型需要额外的训练资源,这会使整个训练流程复杂化。总之,虽然 PRM 在重新排序模型生成的 top-N 响应或辅助引导搜索方面表现出良好的能力,但在我们的实验中,与大规模强化学习过程中引入的额外计算开销相比,其优势是有限的。

蒙特卡洛树搜索 (MCTS)

受AlphaGo和AlphaZero的启发,我们探索了使用蒙特卡洛树搜索(MCTS)来增强测试时计算的可扩展性。这种方法涉及将答案分解成更小的部分,以便模型能够系统地探索解空间。为了实现这一点,我们提示模型生成多个标签,这些标签对应于搜索所需的特定推理步骤。在训练方面,我们首先使用收集到的提示,通过由预训练的价值模型引导的MCTS来寻找答案。随后,我们使用生成的问答对来训练actor模型和价值模型,从而迭代地改进整个过程。然而,当扩大训练规模时,这种方法会遇到几个挑战。首先,与国际象棋(其搜索空间相对明确)不同,token生成呈现出指数级更大的搜索空间。为了解决这个问题,我们为每个节点设置了最大扩展限制,但这可能会导致模型陷入局部最优解。其次,价值模型直接影响生成质量,因为它指导搜索过程的每一步。训练一个细粒度的价值模型本质上是困难的,这使得模型难以进行迭代改进。虽然AlphaGo的核心成功依赖于训练一个价值模型来逐步提高其性能,但由于token生成的复杂性,这一原则在我们的设置中难以复现。

总而言之,虽然蒙特卡洛树搜索(MCTS)在与预训练的值模型结合使用时可以提高推理性能,但通过自我搜索迭代提升模型性能仍然是一个重大挑战。

结论、局限性和未来工作

在这项工作中,我们分享了我们通过强化学习增强模型推理能力的探索历程。DeepSeek-R1-Zero 代表一种不依赖冷启动数据的纯强化学习方法,在各种任务中都取得了优异的性能。DeepSeek-R1 则更为强大,它利用冷启动数据并结合迭代强化学习微调。最终,DeepSeek-R1 在一系列任务上的性能与 OpenAI-o1-1217 相当。我们进一步探索了将推理能力提炼到小型密集模型中。我们使用 DeepSeek-R1 作为教师模型生成了 80 万个训练样本,并对几个小型密集模型进行了微调。结果令人鼓舞:DeepSeek-R1-Distill-Qwen-1.5B 在数学基准测试中超越了 GPT-4o 和 Claude-3.5-Sonnet,在 AIME 上达到了 28.9% 的准确率,在 MATH 上达到了 83.9% 的准确率。其他密集模型也取得了令人瞩目的成果,显著优于基于相同底层检查点的其他指令微调模型。

未来,我们计划在以下方向上对 DeepSeek-R1 进行深入研究。

目前,DeepSeek-R1 在函数调用、多轮对话、复杂角色扮演和 JSON 输出等任务上的能力与 DeepSeek-V3 相比仍有不足。未来,我们计划探索如何利用长链思考 (CoT) 来提升这些领域任务的表现。 DeepSeek-R1 目前针对中文和英文进行了优化,这可能导致在处理其他语言的查询时出现语言混合的问题。例如,即使查询使用的语言不是英语或中文,DeepSeek-R1 也可能会使用英语进行推理和响应。我们计划在未来的更新中解决这一局限性。

在评估 DeepSeek-R1 时,我们发现它对提示词非常敏感。少样本提示会持续降低其性能。因此,我们建议用户直接描述问题,并使用零样本学习设置来指定输出格式,以获得最佳结果。

由于评估时间较长,影响了强化学习 (RL) 过程的效率,大规模强化学习尚未广泛应用于软件工程任务。因此,DeepSeek-R1 在软件工程基准测试上的表现并未显著优于 DeepSeek-V3。未来的版本将通过在软件工程数据上实施拒绝采样,或在强化学习过程中加入异步评估来提高效率,从而解决这个问题。