链接
-
智源:https://hub.baai.ac.cn/paper/abde9c9e-5884-4df3-a328-d31b7cdd262d
-
发布时间:2025年01月22日
原文
摘要
我们推出了第一代推理模型DeepSeek - R1 - Zero和DeepSeek - R1。DeepSeek - R1 - Zero是通过大规模强化学习(RL)训练的模型,无需监督微调(SFT)作为初步步骤,展现出卓越的推理能力。通过强化学习,DeepSeek - R1 - Zero自然地呈现出许多强大且有趣的推理行为。然而,它也面临着诸如可读性差和语言混淆等挑战。为了解决这些问题并进一步提升推理性能,我们推出了DeepSeek - R1,它在强化学习之前纳入了多阶段训练和冷启动数据。DeepSeek - R1在推理任务上达到了与OpenAI - o1 - 1217相当的性能。为了支持研究社区,我们开源了DeepSeek - R1 - Zero、DeepSeek - R1以及基于Qwen和Llama从DeepSeek - R1中提炼出的六个稠密模型(1.5B、7B、8B、14B、32B、70B)。
1. 引言
近年来,大语言模型(LLMs)经历了快速的迭代与发展(Anthropic,2024;Google,2024;OpenAI,2024a),与通用人工智能(AGI)的差距逐渐缩小。
最近,后训练已成为完整训练流程的重要组成部分。事实证明,后训练能提升推理任务的准确性,使模型与社会价值观保持一致,并适应用户偏好,而且与预训练相比,它所需的计算资源相对较少。在推理能力方面,OpenAI的o1(OpenAI,2024b)系列模型率先通过延长思维链推理过程的长度来实现推理时缩放。这种方法在数学、编码和科学推理等各种推理任务中取得了显著进步。然而,如何在测试时进行有效缩放这一挑战,对研究界来说仍是一个悬而未决的问题。此前有多项研究探索了各种方法,包括基于过程的奖励模型(Lightman等人,2023;Uesato等人,2022;Wang等人,2023)、强化学习(Kumar等人,2024),以及诸如蒙特卡洛树搜索和束搜索等搜索算法(Feng等人,2024;Trinh等人,2024;Xin等人,2024)。然而,这些方法中没有一种能在通用推理性能上与OpenAI的o1系列模型相媲美。
在本文中,我们迈出了利用纯强化学习(RL)提升语言模型推理能力的第一步。我们的目标是探索大语言模型在无需任何监督数据的情况下发展推理能力的潜力,专注于通过纯强化学习过程实现自我进化。具体而言,我们使用DeepSeek - V3 - Base作为基础模型,并采用GRPO(Shao等人,2024)作为强化学习框架来提升模型在推理方面的性能。
在训练过程中,DeepSeek - R1 - Zero自然展现出许多强大且有趣的推理行为。经过数千步强化学习后,DeepSeek - R1 - Zero在推理基准测试中表现卓越。例如,在2024年美国数学邀请赛(AIME)上,单模型通过率从15.6% 提升至71.0%,通过多数投票,这一分数进一步提升至86.7%,与OpenAI - o1 - 0912的性能相当。
然而,DeepSeek - R1 - Zero也面临一些挑战,比如可读性差和语言混淆。为解决这些问题并进一步提升推理性能,我们推出了DeepSeek - R1,它纳入了少量冷启动数据和多阶段训练流程。具体来说,我们首先收集数千条冷启动数据对DeepSeek - V3 - Base模型进行微调。之后,像DeepSeek - R1 - Zero那样进行面向推理的强化学习。在强化学习过程接近收敛时,我们通过对强化学习检查点进行拒绝采样,结合来自DeepSeek - V3在写作、事实性问答和自我认知等领域的监督数据,创建新的监督微调(SFT)数据,然后重新训练DeepSeek - V3 - Base模型。用新数据微调后,该检查点会再经历一轮强化学习过程,同时考虑所有场景的提示。经过这些步骤,我们得到一个名为DeepSeek - R1的检查点,其性能与OpenAI - o1 - 1217相当。
我们进一步探索从DeepSeek - R1提炼出更小的稠密模型。以Qwen2.5 - 32B(Qwen,2024b)为基础模型,直接从DeepSeek - R1进行提炼的效果优于对其直接应用强化学习。这表明更大的基础模型发现的推理模式对于提升推理能力至关重要。我们开源了提炼后的Qwen和Llama(Dubey等人,2024)系列模型。值得注意的是,我们提炼的140亿参数模型大幅超越了当前最先进的开源模型QwQ - 32B - Preview(Qwen,2024a),并且提炼的320亿参数和700亿参数模型在稠密模型的推理基准测试中创下了新纪录。
1.1 贡献
后训练:基础模型上的大规模强化学习
- 我们直接将强化学习应用于基础模型,无需将监督微调(SFT)作为初步步骤。这种方法使模型能够探索思维链(CoT)以解决复杂问题,从而开发出了DeepSeek - R1 - Zero。DeepSeek - R1 - Zero展现出诸如自我验证、反思以及生成较长思维链等能力,为研究界树立了一个重要的里程碑。值得注意的是,这是首个通过验证表明大语言模型的推理能力可纯粹通过强化学习来激励,而无需监督微调的公开研究。这一突破为该领域未来的发展铺平了道路。
- 我们介绍了开发DeepSeek - R1的流程。该流程包含两个强化学习阶段,旨在发现更优的推理模式并与人类偏好保持一致,同时还包含两个监督微调阶段,作为模型推理及非推理能力的起点。我们相信这个流程将通过创建更优的模型,使整个行业受益。
提炼:小模型也能强大
- 我们证明了大模型的推理模式可以提炼到小模型中,与通过在小模型上直接应用强化学习所发现的推理模式相比,能带来更好的性能提升。开源的DeepSeek - R1及其应用程序编程接口(API),将有助于研究界在未来提炼出更出色的小模型。
- 利用DeepSeek - R1生成的推理数据,我们对研究界广泛使用的几个稠密模型进行了微调。评估结果表明,提炼后的较小稠密模型在基准测试中表现极为出色。DeepSeek - R1 - Distill - Qwen - 7B在2024年美国数学邀请赛(AIME)上达到了55.5% 的成绩,超越了QwQ - 32B - Preview。此外,DeepSeek - R1 - Distill - Qwen - 32B在2024年AIME上得分为72.6%,在MATH - 500上得分为94.3%,在LiveCodeBench上得分为57.2%。这些结果显著超越了之前的开源模型,与o1 - mini相当。我们向社区开源了基于Qwen2.5和Llama3系列提炼的15亿、70亿、80亿、140亿、320亿和700亿参数的模型检查点。
1.2 评估结果总结
- 推理任务:
- (1)DeepSeek - R1在2024年美国数学邀请赛(AIME)上的单模型通过率(Pass@1)达到79.8%,略超过OpenAI - o1 - 1217。在MATH - 500测试中,它取得了令人瞩目的97.3% 的成绩,与OpenAI - o1 - 1217表现相当,且显著超越其他模型。
- (2)在编码相关任务方面,DeepSeek - R1在代码竞赛任务中展现出专家水平,在Codeforces平台上获得2029的Elo评级,超过了竞赛中96.3% 的人类参与者。对于工程相关任务,DeepSeek - R1的表现略优于DeepSeek - V3,这对实际工作中的开发者有所帮助。
- 知识:在诸如MMLU、MMLU - Pro和GPQA Diamond等基准测试中,DeepSeek - R1取得了出色的成绩,显著超越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。
- 其他方面:DeepSeek - R1在广泛的任务中表现出色,包括创意写作、通用问答、编辑、总结等。在AlpacaEval 2.0测试中,它在长度可控的情况下胜率达到87.6%,在ArenaHard测试中胜率为92.3%,展示了其智能处理非考试类查询的强大能力。此外,DeepSeek - R1在需要长文本理解的任务中表现卓越,在长文本上下文基准测试中大幅超越DeepSeek - V3。
2. 方法
2.1. 概述
以往的研究主要依赖大量的监督数据来提升模型性能。在本研究中,我们证明即使不使用监督微调(SFT)作为冷启动,也可以通过大规模强化学习(RL)显著提升推理能力。此外,如果加入少量冷启动数据,性能还可以进一步提升。在接下来的章节中,我们将介绍:(1) DeepSeek-R1-Zero,它直接将强化学习应用于基础模型,无需任何SFT数据,以及 (2) DeepSeek-R1,它从一个经过数千个长链思维(CoT)示例微调的检查点开始应用强化学习。3) 将DeepSeek-R1的推理能力提炼到小型密集模型中。
2.2. DeepSeek-R1-Zero:基础模型的强化学习
强化学习在推理任务中已经展现出显著的效果,这一点在我们之前的研究中得到了证实(Shao等,2024;Wang等,2023)。然而,这些工作都严重依赖于监督数据,而收集这些数据需要耗费大量时间。在本节中,我们探索大语言模型(LLMs)在没有任何监督数据的情况下发展推理能力的潜力,重点关注它们通过纯强化学习过程的自我进化。我们首先简要概述我们的强化学习算法,然后展示一些令人振奋的结果,希望这能为研究社区提供有价值的见解。
2.2.1. 强化学习算法
群组相对策略优化
为了节省强化学习的训练成本,我们采用群组相对策略优化(GRPO)(Shao等,2024),这种方法不需要通常与策略模型具有相同规模的评论家模型,而是从群组分数中估计基准线。具体来说,对于每个问题q,GRPO从旧策略$\pi_{\theta_{old}}$中采样一组输出${o_1, o_2, \cdots, o_G}$,然后通过最大化以下目标函数来优化策略模型$\pi_\theta$:
\[J_{\text{GRPO}} (\theta) = E\left[q \sim P (Q), \{o_i\}^G_{i=1} \sim \pi_{\theta_{\text{old}}} (O\|q)\right] \frac{1}{G} \sum_{i=1}^G \min \left(\frac{\pi_\theta (o_i \|q)}{\pi_{\theta_{\text{old}}} (o_i \|q)} A_i, \text{clip}\left(\frac{\pi_\theta (o_i \|q)}{\pi_{\theta_{\text{old}}} (o_i \|q)}, 1 - \varepsilon, 1 + \varepsilon\right) A_i\right) - \beta D_{\text{KL}} (\pi_\theta\|\|\pi_{\text{ref}}),\]\[D_{\text{KL}} \left(\pi_\theta \|\|\pi_{\text{ref}}\right) = \frac{\pi_{\text{ref}}(o_i\|q)}{\pi_\theta(o_i\|q)} - \log \frac{\pi_{\text{ref}}(o_i\|q)}{\pi_\theta(o_i\|q)} - 1,\]该公式描述了一个在强化学习策略优化算法中使用的目标函数。下面是对其含义的解释:
- $J_{\text{GRPO}} (\theta)$:这是整个目标函数,代表广义相对策略优化(假设GRPO是这种策略优化方法的缩写)相对于参数$\theta$的结果。
- $E[q \sim P(Q), {o_i}^G_{i=1} \sim \pi_{\theta_{\text{old}}} (O|q)]$:这里计算的是一个期望值,其中$q$是从分布$P(Q)$中抽取的一个样本,而${o_i}^G_{i=1}$是从旧策略$\pi_{\theta_{\text{old}}}(O|q)$根据状态或观察$O$和给定的$q$采样得到的动作序列。$G$可能指的是每个episode中的时间步数。
- $\frac{1}{G} \sum_{i=1}^G \min(…)$:对所有时间步长求平均,内部采用最小值操作选择两个量中的较小者:
- 第一个是新旧策略的概率比值乘以优势函数$A_i$。
- 第二个是经过“剪切”后的相同比率与优势函数$A_i$的乘积,确保该比率不会偏离1太远(具体为$[1-\varepsilon, 1+\varepsilon]$区间),这有助于控制更新步骤大小,防止策略变化过大。
- 最后一项$- \beta D_{\text{KL}} (\pi_\theta||\pi_{\text{ref}})$是一个正则化项,通过调整参数$\beta$来控制当前策略$\pi_\theta$与参考策略$\pi_{\text{ref}}$之间的Kullback-Leibler散度,避免策略更新导致过大的偏离。 综上所述,此公式旨在通过考虑动作的优势、限制策略更新幅度以及保持策略相对稳定的方式优化策略参数$\theta$。这种方法有助于平衡探索与利用,促进更加稳健的学习过程。请注意,为了清晰起见,上述解释采用了简化处理;实际应用中可能涉及更多细节和技术上的考量。
给定的公式: \(D_{\text{KL}} \left(\pi_\theta \|\|\pi_{\text{ref}}\right) = \frac{\pi_{\text{ref}}(o_i\|q)}{\pi_\theta(o_i\|q)} - \log \frac{\pi_{\text{ref}}(o_i\|q)}{\pi_\theta(o_i\|q)} - 1,\) 实际上并不直接对应于传统意义上的Kullback-Leibler (KL) 散度定义。通常,KL散度用于衡量一个概率分布相对于另一个概率分布的差异性,并且其形式为: \(D_{\text{KL}}(P\|\|Q) = \sum P(x) \log\left(\frac{P(x)}{Q(x)}\right)\) 然而,您给出的公式似乎描述了一个与KL散度相关的量,但以一种特殊的形式出现。更准确地说,这个表达式看起来像是基于每个观测$o_i$下的局部测量,而不是整个分布上的期望值。让我们具体解析一下:
- 分子$\pi_{\text{ref}}(o_i|q)$和分母$\pi_\theta(o_i|q)$代表在给定状态或观察$q$下,参考策略$\pi_{\text{ref}}$和当前策略$\pi_\theta$对动作$o_i$的概率估计。
- 表达式$\frac{\pi_{\text{ref}}(o_i|q)}{\pi_\theta(o_i|q)} - \log \frac{\pi_{\text{ref}}(o_i|q)}{\pi_\theta(o_i|q)} - 1$实际上是计算了两部分:第一部分是两个概率比值本身;第二部分是该比值的负对数减一。这种形式可以看作是对概率比值与其对数之间的差距的一种度量。 这个特定的表达式可能来源于某个优化问题中的局部近似或者是在某些上下文中简化KL散度得到的结果。值得注意的是,真正的KL散度会涉及到对所有可能的状态(或样本点)进行加权求和(或积分),而这里只展示了针对单个$o_i$的情况。 实际上,如果考虑整个分布而非单一观测,一个更常见的处理方法是计算所有可能动作的加权平均,其中权重就是这些动作发生的概率。但在您提供的表达式中,它更像是对单个数据点的贡献进行了分析,这可能是更大公式或算法的一部分,用于特定情况下的策略更新或评估。 因此,尽管这个表达式不是标准的KL散度定义,但它可能在特定算法框架内有其独特的用途,例如在策略梯度方法或信赖域策略优化(TRPO)及其变体中作为局部调整的一部分。为了全面理解其意义,了解该公式的背景信息和应用上下文是很重要的。
其中$\varepsilon$和$\beta$是超参数,$A_i$是优势值,使用每个组内输出对应的一组奖励${r_1, r_2, \ldots, r_G}$计算得出:
\[A_i = \frac{r_i - \text{mean}(\{r_1, r_2, \cdots, r_G\})}{\text{std}(\{r_1, r_2, \cdots, r_G\})}\]给定的公式定义了优势函数$A_i$的计算方式,具体如下: \(A_i = \frac{r_i - \text{mean}(\{r_1, r_2, \cdots, r_G\})}{\text{std}(\{r_1, r_2, \cdots, r_G\})}\) 这个表达式用于标准化奖励值$r_i$,通过从每个单独的奖励$r_i$中减去所有奖励的平均值(即$\text{mean}({r_1, r_2, \cdots, r_G})$),然后除以这些奖励的标准差(即$\text{std}({r_1, r_2, \cdots, r_G})$)。这样做有几个目的:
- 归一化处理:通过对奖励进行标准化处理,可以确保不同规模或范围的奖励值在比较时具有可比性。这有助于算法更有效地学习,特别是在奖励信号差异较大的情况下。
- 稳定训练过程:在强化学习算法中,尤其是那些依赖于奖励预测误差来更新策略的方法,如Actor-Critic方法,使用标准化后的奖励可以帮助稳定训练过程,减少因奖励尺度变化导致的学习速率不稳定问题。
- 提高学习效率:标准化奖励有助于加速学习过程,因为它可以使学习算法更快地识别出哪些动作是相对更好的选择,从而提高探索效率和策略优化速度。 在这个上下文中,$r_i$代表第$i$个时间步长或事件中的奖励,而集合${r_1, r_2, \cdots, r_G}$则包含了整个episode或考虑的时间窗口内所有相关奖励。因此,$A_i$实际上反映了特定时间点上的奖励相对于整体表现的好坏程度,经过标准化后,更容易被用于指导策略调整或评估。
2.2.2. 奖励建模
奖励是训练信号的来源,它决定了强化学习的优化方向。为了训练DeepSeek-R1-Zero,我们采用了一个基于规则的奖励系统,主要包含两类奖励:
• 准确性奖励:准确性奖励模型评估响应是否正确。例如,对于具有确定性结果的数学问题,要求模型以指定格式(如在方框内)提供最终答案,从而能够通过基于规则的验证可靠地判断正确性。同样,对于LeetCode问题,可以使用编译器根据预定义的测试用例生成反馈。
• 格式奖励:除了准确性奖励模型外,我们还使用格式奖励模型,强制模型将其思考过程放在’
在开发DeepSeek-R1-Zero时,我们没有使用结果或过程神经奖励模型,因为我们发现神经奖励模型在大规模强化学习过程中可能会遭受奖励欺骗(reward hacking)问题,而且重新训练奖励模型需要额外的训练资源,这会使整个训练流程变得更加复杂。
2.2.3. 训练模板
为了训练DeepSeek-R1-Zero,我们首先设计了一个简单直接的模板,引导基础模型遵循我们指定的指令。如表1所示,这个模板要求DeepSeek-R1-Zero首先生成推理过程,然后给出最终答案。我们有意将约束限制在这种结构化格式上,避免任何与内容相关的偏见——比如强制要求反思性推理或推广特定的问题解决策略——以确保我们能够准确观察模型在强化学习过程中的自然进展。
2.2.4. DeepSeek-R1-Zero的性能、自我进化过程和顿悟时刻
DeepSeek-R1-Zero的性能
图2展示了DeepSeek-R1-Zero在强化学习训练过程中在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能够在不需要任何监督微调数据的情况下获得强大的推理能力。这是一个值得注意的成就,因为它凸显了模型仅通过强化学习就能有效学习和泛化的能力。此外,通过使用多数投票机制,DeepSeek-R1-Zero的性能可以进一步提升。例如,当在AIME基准测试中使用多数投票时,DeepSeek-R1-Zero的性能从71.0%提升到86.7%,从而超越了OpenAI-o1-0912的性能。DeepSeek-R1-Zero无论是否使用多数投票都能达到如此具有竞争力的性能,这突显了其强大的基础能力以及在推理任务中进一步发展的潜力。
DeepSeek-R1-Zero的自我进化过程
DeepSeek-R1-Zero的自我进化过程是一个引人入胜的示例,展示了强化学习如何驱动模型自主提升其推理能力。通过直接从基础模型开始进行强化学习,我们能够在不受监督微调阶段影响的情况下,密切监控模型的进展。这种方法清晰地展示了模型随时间的演变过程,特别是在处理复杂推理任务的能力方面。
如图3所示,DeepSeek-R1-Zero的思考时间在整个训练过程中持续改进。这种改进并非源于外部调整,而是模型内在发展的结果。DeepSeek-R1-Zero通过利用延长的测试时间计算,自然地获得了解决越来越复杂推理任务的能力。这种计算范围从生成数百到数千个推理标记不等,使模型能够更深入地探索和完善其思维过程。
这种自我进化最引人注目的方面之一是,随着测试时间计算的增加,复杂行为的出现。例如反思行为——模型重新审视和重新评估其先前步骤——以及探索问题解决的替代方法,这些都是自发产生的。这些行为并非明确编程的结果,而是模型与强化学习环境交互的自然产物。这种自发的发展显著增强了DeepSeek-R1-Zero的推理能力,使其能够以更高的效率和准确性处理更具挑战性的任务。
DeepSeek-R1-Zero的顿悟时刻
在训练DeepSeek-R1-Zero期间,我们观察到一个特别有趣的现象,即”顿悟时刻”的出现。如表3所示,这一时刻出现在模型的中间版本中。在这个阶段,DeepSeek-R1-Zero学会了通过重新评估其初始方法来为问题分配更多的思考时间。这种行为不仅证明了模型不断增长的推理能力,也是强化学习如何能够导致意外和复杂结果的一个引人入胜的例子。
这一时刻不仅是模型的”顿悟时刻”,也是观察其行为的研究人员的顿悟时刻。它凸显了强化学习的力量和美:我们不是明确地教导模型如何解决问题,而是仅仅提供正确的激励,模型就能自主发展出高级的问题解决策略。这个”顿悟时刻”有力地提醒我们,强化学习在人工系统中开启新层次智能的潜力,为未来更自主和更具适应性的模型铺平了道路。
表3 | DeepSeek-R1-Zero中间版本的一个有趣的”顿悟时刻”。模型学会了使用拟人化的语气重新思考。这对我们来说也是一个顿悟时刻,让我们见证了强化学习的力量和美。
问题:如果a > 1,那么方程 $\sqrt{a-\sqrt{a+x}}=x$ 的实数解之和等于多少?
回答:
$(\sqrt{a-\sqrt{a+x}})^2 = x^2 \implies a-\sqrt{a+x} = x^2$
重新整理以隔离内部平方根项:
$(a-x^2)^2 = a+x \implies a^2-2ax^2+(x^2)^2 = a+x \implies x^4-2ax^2-x+(a^2-a) = 0$
···等等,等等。等一下。这是我可以标记的一个顿悟时刻。让我们重新一步步评估来确定正确的和···
我们从方程开始: $\sqrt{a-\sqrt{a+x}}=x$
首先,让我们两边平方: $a-\sqrt{a+x}=x^2 \implies \sqrt{a+x}=a-x^2$
接下来,我可以再次对两边平方,处理方程:··· …
DeepSeek-R1-Zero的缺点
尽管DeepSeek-R1-Zero展现出强大的推理能力,并能自主发展出意想不到且强大的推理行为,但它仍面临着几个问题。例如,DeepSeek-R1-Zero在可读性差和语言混杂等方面存在挑战。为了使推理过程更易读并能与开放社区分享,我们探索了DeepSeek-R1,这是一种利用人类友好的冷启动数据进行强化学习的方法。
2.3. DeepSeek-R1:带冷启动的强化学习
受DeepSeek-R1-Zero令人鼓舞的结果启发,自然产生了两个问题: 1) 通过引入少量高质量数据作为冷启动,是否能进一步提升推理性能或加快收敛速度? 2) 我们如何训练一个用户友好的模型,使其不仅能产生清晰连贯的思维链(CoT),还能展示出强大的通用能力?
为了解决这些问题,我们设计了一个训练DeepSeek-R1的流程。该流程包含以下四个阶段。
2.3.1. 冷启动
与DeepSeek-R1-Zero不同,为了防止从基础模型开始的强化学习训练早期不稳定的冷启动阶段,DeepSeek-R1构建和收集了少量长思维链(CoT)数据来微调模型,作为初始强化学习参与者。为了收集这些数据,我们探索了几种方法:
- 使用少样本提示,以长思维链作为示例
- 直接提示模型生成带有反思和验证的详细答案
- 以可读格式收集DeepSeek-R1-Zero的输出
- 通过人工标注者后处理来完善结果
在本研究中,我们收集了数千条冷启动数据来微调DeepSeek-V3-Base,作为强化学习的起点。与DeepSeek-R1-Zero相比,冷启动数据的优势包括:
• 可读性:DeepSeek-R1-Zero的一个主要限制是其内容往往不适合阅读。响应可能混合多种语言或缺乏markdown格式来为用户突出显示答案。相比之下,在为DeepSeek-R1创建冷启动数据时,我们设计了一个可读的模式,在每个响应的末尾包含一个总结,并过滤掉不适合阅读的响应。在这里,我们将输出格式定义为|special_token|
• 潜力:通过仔细设计带有人类先验知识的冷启动数据模式,我们观察到比DeepSeek-R1-Zero更好的性能。我们认为迭代训练是推理模型更好的方式。
2.3.2. 面向推理的强化学习
在对冷启动数据进行DeepSeek-V3-Base的微调之后,我们应用了与DeepSeek-R1-Zero相同的大规模强化学习训练过程。这个阶段主要关注提升模型的推理能力,特别是在推理密集型任务中,如编程、数学、科学和逻辑推理,这些任务涉及具有明确解决方案的明确定义问题。
在训练过程中,我们观察到思维链(CoT)经常出现语言混杂的现象,特别是当强化学习提示涉及多种语言时。为了缓解语言混杂的问题,我们在强化学习训练期间引入了语言一致性奖励,该奖励根据思维链中目标语言词汇的比例计算。虽然消融实验表明这种对齐会导致模型性能略有下降,但这种奖励符合人类偏好,使其更具可读性。
最后,我们通过直接相加推理任务的准确性和语言一致性奖励来组合它们,形成最终奖励。然后,我们对微调后的模型进行强化学习训练,直到它在推理任务上达到收敛。
2.3.3. 拒绝采样和监督微调
当面向推理的强化学习收敛后,我们利用产生的检查点为后续轮次收集SFT(监督微调)数据。与主要关注推理的初始冷启动数据不同,这个阶段整合了来自其他领域的数据,以增强模型在写作、角色扮演和其他通用任务方面的能力。具体来说,我们按照以下方式生成数据并微调模型:
推理数据 我们整理推理提示,并通过对上述强化学习训练的检查点进行拒绝采样来生成推理轨迹。在前一阶段,我们只包含了可以使用基于规则的奖励进行评估的数据。然而,在这个阶段,我们通过引入额外数据来扩展数据集,其中一些数据使用生成式奖励模型,将真实答案和模型预测输入DeepSeek-V3进行判断。此外,由于模型输出有时混乱且难以阅读,我们过滤掉了混合语言、长段落和代码块的思维链。对于每个提示,我们采样多个响应并只保留正确的响应。总共,我们收集了约60万个与推理相关的训练样本。
非推理数据 对于非推理数据,如写作、事实问答、自我认知和翻译,我们采用DeepSeek-V3流程,并重用DeepSeek-V3的部分SFT数据集。对于某些非推理任务,我们通过提示调用DeepSeek-V3在回答问题之前生成潜在的思维链。然而,对于更简单的查询,如”hello”,我们在响应中不提供思维链。最终,我们收集了大约20万个与推理无关的训练样本。
我们使用上述约80万个样本的精选数据集对DeepSeek-V3-Base进行了两轮微调。
2.3.4. 全场景强化学习
为了进一步使模型与人类偏好保持一致,我们实施了第二阶段的强化学习,旨在提高模型的有用性和无害性,同时完善其推理能力。具体来说,我们使用奖励信号和多样化提示分布的组合来训练模型。
对于推理数据,我们遵循DeepSeek-R1-Zero中概述的方法,使用基于规则的奖励来指导数学、编程和逻辑推理领域的学习过程。
对于通用数据,我们采用奖励模型来捕捉复杂和微妙场景中的人类偏好。我们在DeepSeek-V3流程的基础上,采用类似的偏好对和训练提示分布。
- 对于有用性,我们专注于最终摘要,确保评估强调响应对用户的实用性和相关性,同时最小化对底层推理过程的干扰。
- 对于无害性,我们评估模型的整个响应,包括推理过程和摘要,以识别和缓解在生成过程中可能出现的任何潜在风险、偏见或有害内容。
最终,奖励信号和多样化数据分布的整合使我们能够训练出一个在推理方面表现出色,同时优先考虑有用性和无害性的模型。
2.4. 蒸馏:赋予小型模型推理能力
为了使更高效的小型模型具备类似DeepSeek-R1的推理能力,我们使用在§2.3.3中详述的通过DeepSeek-R1整理的80万个样本,直接对开源模型如Qwen(Qwen,2024b)和Llama(AI@Meta,2024)进行微调。我们的研究结果表明,这种直接的蒸馏方法显著提升了小型模型的推理能力。
我们在此使用的基础模型包括:
- 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),没有包含强化学习阶段,尽管加入强化学习可能会大幅提升模型性能。我们在这里的主要目标是展示蒸馏技术的有效性,将强化学习阶段的探索留给更广泛的研究社区。
3. 实验
基准测试
我们在以下基准测试上评估模型:
- MMLU (Hendrycks等,2020)
- MMLU-Redux (Gema等,2024)
- MMLU-Pro (Wang等,2024)
- C-Eval (Huang等,2023)
- CMMLU (Li等,2023)
- IFEval (Zhou等,2023)
- FRAMES (Krishna等,2024)
- GPQA Diamond (Rein等,2023)
- SimpleQA (OpenAI,2024c)
- C-SimpleQA (He等,2024)
- SWE-Bench Verified (OpenAI,2024d)
- Aider
- LiveCodeBench (Jain等,2024)(2024-08 – 2025-01)
- Codeforces
- 中国高中数学奥林匹克(CNMO 2024)
- 美国数学邀请赛2024(AIME 2024)(MAA,2024)
除了标准基准测试外,我们还使用大语言模型作为评判来评估我们的模型在开放式生成任务上的表现。具体来说,我们遵循AlpacaEval 2.0 (Dubois等,2024)和Arena-Hard (Li等,2024)的原始配置,使用GPT-4-Turbo-1106作为配对比较的评判。在这里,我们只将最终摘要输入评估以避免长度偏差。
对于蒸馏模型,我们报告了在AIME 2024、MATH-500、GPQA Diamond、Codeforces和LiveCodeBench上的代表性结果。
评估提示
遵循DeepSeek-V3的设置,我们使用simpleevals框架的提示来评估标准基准测试,如MMLU、DROP、GPQA Diamond和SimpleQA。
对于不同基准测试的具体评估方法:
- MMLU-Redux:在零样本设置中采用Zero-Eval提示格式(Lin,2024)
- MMLU-Pro、C-Eval和CLUE-WSC:由于原始提示是少样本的,我们将提示略微修改为零样本设置。少样本中的思维链可能会影响DeepSeek-R1的性能
- 其他数据集:遵循其创建者提供的原始评估协议和默认提示
对于代码和数学基准测试:
- HumanEval-Mul数据集:覆盖八种主流编程语言(Python、Java、C++、C#、JavaScript、TypeScript、PHP和Bash)
- LiveCodeBench:使用思维链格式评估,数据收集时间为2024年8月至2025年1月
- Codeforces数据集:使用来自10个Div.2比赛的问题和专家制作的测试用例进行评估,之后计算预期评级和参赛者百分比
- SWE-Bench验证结果:通过无代理框架获得(Xia等,2024)
- AIDER相关基准测试:使用”diff”格式进行测量
DeepSeek-R1在每个基准测试中的输出上限为32,768个标记。
基线模型
我们对比了几个强大的基线模型进行全面评估,包括:
- DeepSeek-V3
- Claude-Sonnet-3.5-1022
- GPT-4-0513
- OpenAI-o1-mini
- OpenAI-o1-1217
由于在中国大陆访问OpenAI-o1-1217 API比较困难,我们根据官方报告来报告其性能。
对于蒸馏模型,我们还比较了开源模型QwQ-32B-Preview(Qwen,2024a)。
评估设置
我们将模型的最大生成长度设置为32,768个标记。我们发现使用贪婪解码来评估长输出推理模型会导致更高的重复率,并且在不同检查点之间存在显著的变异性。因此,我们默认使用pass@k评估(Chen等,2021),并使用非零温度报告pass@1。
具体来说:
- 采样温度:0.6
- top-p值:0.95
- 为每个问题生成k个响应(通常在4到64之间,取决于测试集大小)
Pass@1的计算公式为:
$pass@1 = \frac{1}{k}\sum^k_{i=1}p_i$
其中$p_i$表示第i个响应的正确性。这种方法提供了更可靠的性能估计。
对于AIME 2024,我们还使用64个样本报告共识(多数投票)结果(Wang等,2022),表示为cons@64。
3.1. DeepSeek-R1评估
知识基准测试表现 在面向教育的知识基准测试(如MMLU、MMLU-Pro和GPQA Diamond)上,DeepSeek-R1相比DeepSeek-V3展现出更优越的性能。这种改进主要归功于STEM相关问题准确性的提升,这是通过大规模强化学习实现的。此外,DeepSeek-R1在长上下文依赖的问答任务FRAMES上表现出色,展示了其强大的文档分析能力。这凸显了推理模型在AI驱动的搜索和数据分析任务中的潜力。
事实性基准测试表现 在事实性基准测试SimpleQA上,DeepSeek-R1优于DeepSeek-V3,展示了其处理基于事实查询的能力。类似的趋势也出现在OpenAI-o1在此基准测试上超越GPT-4o的表现中。然而,DeepSeek-R1在中文SimpleQA基准测试上的表现不如DeepSeek-V3,主要是因为安全强化学习后倾向于拒绝回答某些查询。如果没有安全强化学习,DeepSeek-R1可以达到超过70%的准确率。
指令遵循和开放域任务表现 DeepSeek-R1在IF-Eval(评估模型遵循格式指令能力的基准测试)上取得了令人印象深刻的结果。这些改进可以归因于在最终阶段的监督微调(SFT)和强化学习训练中包含了指令遵循数据。此外,在AlpacaEval2.0和ArenaHard上观察到了显著的性能,表明DeepSeek-R1在写作任务和开放域问答方面的优势。其显著超越DeepSeek-V3的表现凸显了大规模强化学习的泛化优势,不仅提升了推理能力,还改善了各个领域的性能。此外,DeepSeek-R1生成的摘要长度简洁,在ArenaHard上平均为689个标记,在AlpacaEval 2.0上平均为2,218个字符。这表明DeepSeek-R1在基于GPT的评估中避免了引入长度偏差,进一步巩固了其在多个任务中的稳健性。
数学和编程任务表现 在数学任务上,DeepSeek-R1展现出与OpenAI-o1-1217相当的性能,大幅超越其他模型。在编程算法任务(如LiveCodeBench和Codeforces)上也观察到类似的趋势,其中注重推理的模型主导了这些基准测试。在工程导向的编程任务上,OpenAI-o1-1217在Aider上优于DeepSeek-R1,但在SWE Verified上达到了相当的性能。我们相信DeepSeek-R1的工程性能将在下一个版本中得到改善,因为目前相关的强化学习训练数据仍然非常有限。
3.2. 蒸馏模型评估
如表5所示,仅仅通过蒸馏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蒸馏模型的结果。
4. 讨论
4.1. 蒸馏与强化学习的比较
在第3.2节中,我们可以看到通过蒸馏DeepSeek-R1,小型模型能够取得令人印象深刻的结果。然而,还有一个问题待解答:模型是否能够通过本文讨论的大规模强化学习训练,在不进行蒸馏的情况下达到相当的性能?
为了回答这个问题,我们使用数学、编程和STEM数据对Qwen-32B-Base进行了大规模强化学习训练,训练超过10,000步,得到了DeepSeek-R1-Zero-Qwen-32B。表6中的实验结果表明,32B基础模型经过大规模强化学习训练后,达到了与QwQ-32B-Preview相当的性能。然而,从DeepSeek-R1蒸馏而来的DeepSeek-R1-Distill-Qwen-32B在所有基准测试中的表现都显著优于DeepSeek-R1-Zero-Qwen-32B。
因此,我们可以得出两个结论:
- 将更强大的模型蒸馏到较小的模型中能够产生优秀的结果,而较小的模型如果依赖本文提到的大规模强化学习,需要巨大的计算力,甚至可能无法达到蒸馏的性能水平。
- 虽然蒸馏策略既经济又有效,但要突破智能的边界,可能仍然需要更强大的基础模型和更大规模的强化学习。
4.2. 失败尝试
在开发DeepSeek-R1的早期阶段,我们也遇到了一些失败和挫折。我们在此分享这些失败经验以提供见解,但这并不意味着这些方法无法开发出有效的推理模型。
过程奖励模型(PRM)
PRM是一种合理的方法,可以引导模型采用更好的方法来解决推理任务(Lightman等,2023;Uesato等,2022;Wang等,2023)。然而,在实践中,PRM有三个主要限制可能阻碍其最终成功:
- 在一般推理中很难明确定义细粒度的步骤。
- 判断当前中间步骤是否正确是一项具有挑战性的任务。使用模型进行自动标注可能无法产生令人满意的结果,而人工标注则不利于扩展。
- 一旦引入基于模型的PRM,就不可避免地导致奖励欺骗(Gao等,2022),而重新训练奖励模型需要额外的训练资源,这使整个训练流程变得更加复杂。
总之,虽然PRM在对模型生成的前N个响应进行重新排序或辅助引导搜索(Snell等,2024)方面表现出良好的能力,但在我们的实验中,与其在大规模强化学习过程中引入的额外计算开销相比,其优势是有限的。
蒙特卡洛树搜索(MCTS)
受AlphaGo(Silver等,2017b)和AlphaZero(Silver等,2017a)的启发,我们探索使用蒙特卡洛树搜索(MCTS)来增强测试时计算的可扩展性。这种方法包括将答案分解成更小的部分,使模型能够系统地探索解决方案空间。为了实现这一点,我们提示模型生成多个标签,这些标签对应搜索所需的特定推理步骤。对于训练,我们首先使用收集的提示,通过预训练价值模型引导的MCTS来寻找答案。随后,我们使用产生的问答对来训练演员模型和价值模型,迭代改进这个过程。
然而,这种方法在扩大训练规模时遇到了几个挑战:
- 与搜索空间相对明确的象棋不同,标记生成呈现出指数级更大的搜索空间。为了解决这个问题,我们为每个节点设置了最大扩展限制,但这可能导致模型陷入局部最优。
- 价值模型直接影响生成质量,因为它指导搜索过程的每一步。训练一个细粒度的价值模型本质上是困难的,这使得模型难以迭代改进。虽然AlphaGo的核心成功依赖于训练价值模型来逐步提升其性能,但由于标记生成的复杂性,这一原则在我们的设置中难以复制。
总之,虽然MCTS在与预训练价值模型配对时可以在推理过程中提高性能,但通过自搜索迭代提升模型性能仍然是一个重大挑战。
5. 结论、局限性与未来工作
在这项工作中,我们分享了通过强化学习提升模型推理能力的探索历程。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时,我们发现它对提示很敏感。少样本提示始终会降低其性能。因此,我们建议用户直接描述问题,并使用零样本设置指定输出格式,以获得最佳结果。
- 软件工程任务:由于评估时间长,影响了强化学习过程的效率,大规模强化学习尚未在软件工程任务中广泛应用。因此,DeepSeek - R1在软件工程基准测试中相对于DeepSeek - V3并没有展现出巨大的提升。未来版本将通过对软件工程数据实施拒绝采样,或在强化学习过程中纳入异步评估来提高效率,从而解决这一问题。