读 DeepSeek-R1 论文笔记

DeepSeek-R1:通过强化学习激发大语言模型的推理能力

DeepSeek-AI

摘要

我们推出第一代推理模型DeepSeek-R1-Zero和DeepSeek-R1。DeepSeek-R1-Zero作为无需监督微调(SFT)预训练阶段、直接通过大规模强化学习(RL)训练的基础模型,展现出卓越的推理能力。通过RL训练,该模型自然涌现出大量强大且有趣的推理行为,但也面临可读性差、语言混杂等问题。为解决这些问题并进一步提升推理性能,我们引入DeepSeek-R1模型,该模型在RL训练前融合了多阶段训练和冷启动数据策略。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)的差距。

后训练(post-training)已成为完整训练流程中的重要组成部分。研究表明,该技术能以相对预训练更低的计算资源成本,提升推理任务的准确性,实现社会价值观对齐,并适应用户偏好。在推理能力提升方面,OpenAI的o1系列模型(OpenAI, 2024b)率先通过扩展思维链推理过程的长度实现推理时延展,在数学、编程和科学推理等任务中取得显著进步。然而,有效的测试时延展 仍是研究界待解决的开放性问题。已有研究探索了多种方法,包括基于过程 的奖励模型(Lightman et al., 2023; Uesato et al., 2022; Wang et al., 2023)、强化学习(Kumar et al., 2024)以及蒙特卡洛树搜索和束搜索等算法(Feng et al., 2024; Trinh et al., 2024; Xin et al., 2024),但尚未有方法能达到与OpenAI o1系列模型相匹敌的通用推理性能。

  • 测试时延展(test-time extension) 是指在模型推理阶段,通过扩展其生成过程或改进其决策机制,以提升模型在复杂任务上的表现------也就是说推理过程(Reasoning)有利于提高答案准确性。
  • 基于过程的奖励,传统强化学习用的多,能减小训练波动,但奖励值不好设置,算法复杂。
  • 蒙特卡洛树搜索和束搜索,为了让 LLM 学习推理的最优路径。


图1. DeepSeek-R1基准测试性能

本文首次尝试通过纯强化学习(RL)提升语言模型的推理能力。我们以DeepSeek-V3-Base为基础模型,采用GRPO框架(Shao et al., 2024)进行强化学习,探索LLM在无监督数据条件下通过纯RL过程实现自我进化的潜力。在训练过程中,DeepSeek-R1-Zero自然涌现出大量强大的推理行为。经过数千步RL训练后,该模型在推理基准测试中展现出卓越性能:例如在AIME 2024测试中,pass@1分数从15.6%提升至71.0%,多数投票后更达86.7%,与OpenAI-o1-0912性能相当。

这部分指出:强化学习对 LLM 的推理性能有很大影响

训练方法 GRPO 出自于DeepSeekMath论文。

为解决DeepSeek-R1-Zero存在的可读性差、语言混杂等问题并进一步提升推理性能,我们开发了DeepSeek-R1模型。该模型采用冷启动数据与多阶段训练流程:首先收集数千条冷启动数据对基础模型进行微调,随后实施类似DeepSeek-R1-Zero的推理导向RL训练。当RL过程接近收敛时,通过拒绝采样生成新SFT数据,结合DeepSeek-V3在写作、事实问答和自我认知等领域的监督数据,对基础模型进行再训练。最后进行全场景提示的附加RL过程,最终获得性能与OpenAI-o1-1217相当的DeepSeek-R1。

这部分指出:冷启动(在 RL 前进行高质量的 SFT )进一步提高推理能力,且规范回答格式(可读性好,语言一致)

  • 拒绝采样:生成多个回答,挑最好的(按照正确性、逻辑性、规范性)。

我们进一步探索了从DeepSeek-R1到小型密集模型的蒸馏技术。以Qwen2.5-32B(Qwen, 2024b)为基础模型时,直接蒸馏DeepSeek-R1的效果优于对其应用RL训练,这表明大基座模型发现的推理模式对提升推理能力至关重要。我们开源了基于Qwen和Llama(Dubey et al., 2024)架构的蒸馏模型系列。值得注意的是,蒸馏后的14B模型显著超越当前最优开源模型QwQ-32B-Preview(Qwen, 2024a),而32B和70B版本则在密集模型推理基准测试中创下新纪录。

这部分指出:对于参数量小的模型,用蒸馏出来的推理数据(带思考过程的数据)做 SFT,比应用 RL 更有效。

  • 蒸馏:用参数量大的模型生成回答数据,再用这些数据指导(训练)小模型。

1. 贡献

1.1 基础模型上的大规模强化学习(Post-Training)

  • 我们直接在基础模型上应用强化学习(Reinforcement Learning, RL),而无需依赖监督微调(Supervised Fine-Tuning, SFT)作为预处理步骤。这种创新方法使模型能够探索链式思维(Chain-of-Thought, CoT),从而解决复杂问题。由此开发的DeepSeek-R1-Zero展示了自验证、自省以及生成长链式思维的能力,标志着研究领域的重要里程碑。值得注意的是,这是首个公开研究,验证了通过纯强化学习激励大型语言模型(LLMs)的推理能力,无需监督微调。这一突破为未来在该领域的进一步发展铺平了道路。
  • 我们介绍了开发DeepSeek-R1的工作流 。该工作流包含两个强化学习阶段,旨在发现改进的推理模式并使其与人类偏好对齐,以及两个监督微调阶段,作为模型推理能力和非推理能力的种子。我们相信,这一管道将为行业创建更优秀的模型提供重要参考。

1.2 小型模型的蒸馏(Distillation)

  • 我们证明了将大型模型的推理模式蒸馏到小型模型中是可行的,并且与直接在小型模型上通过强化学习发现的推理模式相比,性能更优。开源的DeepSeek-R1及其API将为研究社区提供宝贵的资源,用于未来蒸馏更强大的小型模型。
  • 利用DeepSeek-R1生成的推理数据,我们对一系列在研究社区广泛使用的密集模型进行了微调。评估结果显示,蒸馏后的小型密集模型在基准测试中表现卓越。具体而言,DeepSeek-R1-Distill-Qwen-7B在AIME 2024上达到了55.5%的准确率,超越了QwQ-32B-Preview。此外,DeepSeek-R1-Distill-Qwen-32B在AIME 2024上达到了72.6%,在MATH-500上达到了94.3%,在LiveCodeBench上达到了57.2%。这些成绩不仅显著优于开源模型,还与o1-mini相媲美。我们向社区开源了基于Qwen2.5和Llama3系列的1.5B、7B、8B、14B、32B和70B检查点,以促进进一步的研究。

1.2 评估结果摘要

  • 推理任务:(1)DeepSeek-R1在AIME 2024上实现了79.8%的Pass@1准确率,略高于OpenAI-o1-1217。在MATH-500上,它取得了97.3%的优异成绩,与OpenAI-o1-1217持平,并显著超越了其他模型。(2)在与代码相关的任务中,DeepSeek-R1展现了专家级的竞赛能力,Codeforces上的Elo评分为2,029,超越了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在该基准上也表现优异。
  • 其他任务:DeepSeek-R1在创意写作、通用问答、编辑、总结等广泛任务中也表现出色。在AlpacaEval 2.0上,其长度控制的胜率达到了87.6%,在ArenaHard上胜率高达92.3%,充分展现了其在处理非考试导向型查询时的智能能力。此外,DeepSeek-R1在需要长上下文理解的任务中表现尤为突出,显著优于DeepSeek-V3在长上下文基准上的表现。

2. 方法

2.1 概述

以往的研究 heavily 依赖于大量监督数据来提升模型性能。在本研究中,我们展示了通过大规模强化学习(Reinforcement Learning, RL)可以显著提升推理能力,即使不使用监督微调(Supervised Fine-Tuning, SFT)作为冷启动。此外,加入少量冷启动数据可以进一步提升性能。在以下部分,我们将介绍:(1)DeepSeek-R1-Zero,该模型直接在基础模型上应用强化学习,无需任何SFT数据;(2)DeepSeek-R1,该模型从包含数千个长链式思维(Chain-of-Thought, CoT)示例的检查点开始,应用强化学习;(3)将DeepSeek-R1的推理能力蒸馏到小型密集模型中。

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

强化学习在推理任务中已经展示了显著的有效性,如我们之前的研究所示(Shao et al., 2024; Wang et al., 2023)。然而,这些工作 heavily 依赖于监督数据,而这些数据的收集需要大量时间和资源。在本节中,我们探索了大型语言模型(LLMs)在没有任何监督数据的情况下发展推理能力的潜力,重点在于通过纯强化学习过程实现模型的自我进化。我们从简要概述我们的强化学习算法开始,随后展示一些令人兴奋的结果,并希望这能为社区提供有价值的见解。

参考了一些文章,DS R1训练过程中有从 Checkpoint (断点保存)模型生成数据......这在实际应用很常见,但一方面从 DS R1 的工作流来看,不可完全借鉴,需要随机应变。

倘若搞懂 DS R1 的 Pipeline ,不妨看看 Open R1项目的 Pipeline 。

  • Step1 讲了蒸馏模型是怎么来的------对应了贡献1.2。相对于模型蒸馏,业内还是更关注强化学习训练阶段------毕竟大部人不会真的对 R1 提问几百万次蒸馏出来一个数据集。
  • Step2 是直接用 GRPO 对模型进行强化学习得到 R1-Zero,缺点是输出格式杂乱。
  • Step3 使用 R1-Zero 蒸馏出来推理数据,先做一次 SFT ,再用 RL 强化,得到 R1

2.2.1 强化学习算法

组相对策略优化(Group Relative Policy Optimization)

为了节省强化学习的训练成本,我们采用了组相对策略优化(GRPO)(Shao et al., 2024)。与通常与策略模型大小相同的评论模型不同,GRPO通过组得分估计基线。具体来说,对于每个问题 q q q,GRPO从旧策略 π θ o l d \pi_{\theta}^{old} πθold中采样一组输出 { o 1 , o 2 , ... , o G } \{o_1, o_2, \dots, o_G\} {o1,o2,...,oG},然后通过最大化以下目标来优化策略模型 π θ \pi_{\theta} πθ:

J G R P O ( θ ) = E [ ∑ q ∼ P ( Q ) ∑ { o i } G ∼ π θ o l d ( O ∣ q ) min ⁡ ( π θ ( o i ∣ q ) π θ o l d ( o i ∣ q ) A i , clip ( π θ ( o i ∣ q ) π θ o l d ( o i ∣ q ) , 1 − ϵ , 1 + ϵ ) A i ) ] J_{GRPO}(\theta) = \mathbb{E}\left[ \sum_{q \sim P(Q)} \sum_{\{o_i\}G \sim \pi{\theta}^{old}(O|q)} \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) \right] JGRPO(θ)=E q∼P(Q)∑{oi}G∼πθold(O∣q)∑min(πθold(oi∣q)πθ(oi∣q)Ai,clip(πθold(oi∣q)πθ(oi∣q),1−ϵ,1+ϵ)Ai)

β D K L ( π ∣ ∣ π r e f ) \beta D_{KL}(\pi || \pi_{ref}) βDKL(π∣∣πref)

其中, ϵ \epsilon ϵ 和 β \beta β 是超参数, A i A_i Ai 是优势,通过每个组的奖励 { r 1 , r 2 , ... , r G } \{r_1, r_2, \dots, r_G\} {r1,r2,...,rG}计算:

A i = r i − mean ( { r 1 , r 2 , ... , r G } ) std ( { r 1 , r 2 , ... , r G } ) A_i = \frac{r_i - \text{mean}(\{r_1, r_2, \dots, r_G\})}{\text{std}(\{r_1, r_2, \dots, r_G\})} Ai=std({r1,r2,...,rG})ri−mean({r1,r2,...,rG})

D K L ( π ∣ ∣ π r e f ) D_{KL}(\pi || \pi_{ref}) DKL(π∣∣πref) 是策略 π \pi π与参考策略 π r e f \pi_{ref} πref之间的KL散度,定义为:

D K L ( π ∣ ∣ π r e f ) = ∑ o i ( π r e f ( o i ∣ q ) π θ ( o i ∣ q ) − log ⁡ π r e f ( o i ∣ q ) π θ ( o i ∣ q ) − 1 ) D_{KL}(\pi || \pi_{ref}) = \sum_{o_i} \left( \frac{\pi_{ref}(o_i|q)}{\pi_{\theta}(o_i|q)} - \log \frac{\pi_{ref}(o_i|q)}{\pi_{\theta}(o_i|q)} - 1 \right) DKL(π∣∣πref)=oi∑(πθ(oi∣q)πref(oi∣q)−logπθ(oi∣q)πref(oi∣q)−1)

GRPO通过组得分估计基线,避免了维护一个与策略模型大小相同的评论模型,从而显著降低了训练成本。此外,通过使用组内的相对奖励,算法能够更好地捕捉策略的改进方向,从而提升学习效率。

这一部分不再赘述了,笔者前些日子发了一篇 GRPO 的解读:
【DeepSeek】一文详解GRPO算法------为什么能减少大模型训练资源?
【DeepSeek】GRPO论文译文 - DeepSeekMath: 推动开放语言模型在数学推理能力上的极限

2.2.2 奖励建模

奖励是训练信号的来源,决定了强化学习的优化方向。为训练DeepSeek-R1-Zero,我们采用基于规则的奖励系统,主要包括两类奖励:

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

给一段代码就懂了,提取回答中的答案,根据正确率来计算奖励值:

python 复制代码
# 奖励函数:判断生成结果是否与期望答案一致,返回相应的奖励分数 def correctness_reward_func(prompts, completions, answer, **kwargs) -> list[float]:
    """正确性奖励函数
    参数说明:
        prompts: 包含提示信息的列表,其中每个元素为对话轮次,最后一个通常是最后user的提问;
        completions: 模型生成的回复列表,每个回复为一个列表,列表中的第一个元素包含回复内容;
        answer: 真实答案的列表;
        **kwargs: 其它可选参数。
    功能:
        从completions中提取出回复文本,通过extract_xml_answer函数抽取XML格式中的答案,
        并将抽取后的答案与真实答案进行比较,若相同则奖励2.0分,否则奖励0.0分。同时打印中间调试信息。
    """
    # 从每个生成结果中取出第一个回复的内容,构成responses列表
    responses = [completion[0]['content'] for completion in completions]
    # 从prompts中取出最后一轮用户提问的内容(假设最后一轮为用户提问)
    q = prompts[0][-1]['content']
    # 对每个回复使用extract_xml_answer函数提取XML格式封装的答案,形成抽取后的答案列表
    extracted_responses = [extract_xml_answer(r) for r in responses]
    # 打印调试信息,包括题目、真实答案、模型原始回复和抽取后的答案,便于调试时观察中间结果
    print('-' * 20, f"Question:\n{q}", f"\nAnswer:\n{answer[0]}", f"\nResponse:\n{responses[0]}",
f"\nExtracted:\n{extracted_responses[0]}")
    # 比较每个抽取的答案与真实答案,若相等则奖励2.0分,否则奖励0.0分,并返回奖励列表
    return [2.0 if r == a else 0.0 for r, a in zip(extracted_responses, answer)]  ```
  • 格式奖励 :除准确性奖励模型外,我们还采用格式奖励模型,强制模型将思考过程置于<reasoning></reasoning>标签之间。

同理,通过正则表达式解析标签,计算奖励

python 复制代码
# 严格格式奖励函数:检查生成回复是否严格符合预定的XML格式要求
def strict_format_reward_func(completions, **kwargs) -> list[float]:
    """严格格式奖励函数
    参数说明:
        completions: 模型生成的回复列表,每个回复为一个列表,列表中的第一个元素包含回复内容;
        **kwargs: 其它可选参数。
    功能:
        定义一个正则表达式模式,要求回复必须严格符合如下格式:
            <reasoning>
            ...(任意内容)...
            </reasoning>
            <answer>
            ...(任意内容)...
            </answer>
        如果回复匹配该严格格式,则奖励0.5分,否则奖励0.0分。
    """
    # 定义正则表达式模式,要求每个部分必须为单独的一行,并且整个回复必须严格匹配整个格式(从开头到结尾)
    pattern = r"^<reasoning>\n.*?\n</reasoning>\n<answer>\n.*?\n</answer>\n$"
    # 提取每个生成结果的文本内容
    responses = [completion[0]["content"] for completion in completions]
    # 使用正则表达式匹配每个回复,检查是否严格符合预定格式
    matches = [re.match(pattern, r) for r in responses]
    # 如果匹配成功,则给予0.5分奖励;否则奖励0.0分
    return [0.5 if match else 0.0 for match in matches]
    ```

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

奖励劫持是强化学习中难以解决的问题,指因为奖励函数(模型)设置的不精细导致优化目的和根本目的出现了偏差。

如:在一个足球游戏中,智能体每次触球都会获得奖励,结果智能体学会一直站在球旁高频触球,像振动一样。

推荐你看一下这篇文章:
【Lilian Weng's blog】强化学习中的奖励黑客(奖励劫持)问题

附上鄙人的一篇,【强化学习】如何设计一个好的奖励函数?

2.2.3 训练模板

为训练DeepSeek-R1-Zero,我们设计了一个简洁的模板来引导基础模型遵循指定指令。如表1所示,该模板要求DeepSeek-R1-Zero先生成推理过程,再输出最终答案。我们有意将约束限制在结构格式层面,避免引入内容特定偏见(例如强制反思性推理或特定解题策略),以确保能准确观察模型在强化学习过程中的自然进化。

表1 . DeepSeek-R1-Zero模板(训练时prompt会被具体推理问题替换)

用户与助手的对话。用户提出问题,助手解决问题。
助手首先在脑海中思考推理过程,然后向用户提供答案。
推理过程和答案分别用<reasoning></reasoning>和<answer></answer>标签包裹,
即:<reasoning> 此处为推理过程 </reasoning> <answer> 此处为答案 </answer>。
用户:prompt
助手:

鄙人不才,但可以放一段示例模板------不要在意内容哈哈(自己训练的 3B 模型不怎么聪明的亚子------鲁智深怎么能是《红楼梦》中的人物呢)

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模型在推理相关基准上的比较。


图2. DeepSeek-R1-Zero在AIME 2024上的性能提升曲线

无需监督数据的稳健推理能力

DeepSeek-R1-Zero无需任何监督微调数据即可获得稳健的推理能力,这一成就值得关注,因为它突显了模型仅通过强化学习就能有效学习和泛化的能力。此外,通过应用多数投票(majority voting)可进一步提升DeepSeek-R1-Zero的性能。例如,在AIME基准测试中采用多数投票时,其性能从71.0%提升至86.7%,从而超越OpenAI-o1-0912的表现。无论是否使用多数投票,DeepSeek-R1-Zero均能实现如此竞争力的性能,这彰显了其强大的基础能力及在推理任务中进一步发展的潜力。

DeepSeek-R1-Zero的自进化过程

DeepSeek-R1-Zero的自进化过程生动展示了强化学习如何驱动模型自主提升推理能力。通过直接从基础模型启动强化学习,我们能够在不受监督微调阶段影响的情况下密切观察模型的进化轨迹。这种方法清晰地展现了模型随时间推移的演变过程,特别是在处理复杂推理任务方面的能力提升。

图3. 强化学习过程中DeepSeek-R1-Zero在训练集上的平均响应长度。模型自然地学会通过延长思考时间解决推理任务。

如图3所示,DeepSeek-R1-Zero的思考时间在整个训练过程中持续改善。这种改进并非来自外部调整,而是模型内在能力的自然发展。通过扩展测试时计算(从生成数百到数千个推理token),DeepSeek-R1-Zero自然地获得了解决日益复杂推理任务的能力,使其能够更深入地探索和优化思维过程。

这种自进化最显著的特征是随着测试时计算的增加,模型涌现出复杂行为。例如反思行为 (模型重新审视并评估先前步骤)和多路径问题求解探索会自发产生。这些行为并非显式编程实现,而是模型与强化学习环境交互的自然结果。这种自发演化显著增强了DeepSeek-R1-Zero的推理能力,使其能以更高效率和准确率应对更具挑战性的任务。

还记得引言部分么?作者说:

"已有研究探索了多种方法,包括......以及蒙特卡洛树搜索和束搜索等算法(Feng et al., 2024; Trinh et al., 2024; Xin et al., 2024),但尚未有方法能达到与OpenAI o1系列模型相匹敌的通用推理性能。"
这里又仿佛在说:

"我们没有拿很复杂的方法来教 LLM,只用了强化学习,LLM 就自己学会了反思、多方面思考问题。"

"这是是模型与强化学习环境交互的自然结果。"

DeepSeek-R1-Zero的"顿悟时刻"

在DeepSeek-R1-Zero训练过程中观察到一个特别有趣的现象------"顿悟时刻"的出现。如表3所示,这一现象发生在模型的中间版本阶段。在此阶段,DeepSeek-R1-Zero通过重新评估初始方法,学会为问题分配更多思考时间。这种行为不仅证明了模型推理能力的增长,也生动展示了强化学习如何产生出人意料的复杂结果。

这个时刻不仅是模型的"顿悟时刻",对观察其行为的研究人员而言同样意义重大。它突显了强化学习的强大与精妙:我们无需显式教导模型如何解决问题,只需提供适当激励,模型就能自主发展出高级解题策略。"顿悟时刻"有力证明了强化学习在解锁人工智能系统新智能层级方面的潜力,为未来开发更自主、更具适应性的模型铺平道路。

表3. DeepSeek-R1-Zero中间版本的有趣"顿悟时刻"(模型以拟人化语气进行反思,这也是研究者的顿悟时刻)

问题:当𝑎 > 1时,方程 a − a + x = x \sqrt{a - \sqrt{a + x}} = x a−a+x =x的实根之和等于?
( a − a + x ) 2 = x 2    ⟹    a − a + x = x 2 \left( \sqrt{a - \sqrt{a + x}} \right)^2 = x^2 \implies a - \sqrt{a + x} = x^2 (a−a+x )2=x2⟹a−a+x =x2
整理方程以分离内部平方根项:
( a − x 2 ) 2 = a + x    ⟹    a 2 − 2 a x 2 + x 4 = a + x    ⟹    x 4 − 2 a x 2 − x + ( a 2 − a ) = 0 (a - x^2)^2 = a + x \implies a^2 - 2a x^2 + x^4 = a + x \implies x^4 - 2a x^2 - x + (a^2 - a) = 0 (a−x2)2=a+x⟹a2−2ax2+x4=a+x⟹x4−2ax2−x+(a2−a)=0
...
等等,这里需要标记一个顿悟时刻 。 让我们逐步重新评估以确定正确解的和... 原始方程:
a − a + x = x \sqrt{a - \sqrt{a + x}} = x a−a+x =x
第一次平方后:
a − a + x = x 2    ⟹    a + x = a − x 2 a - \sqrt{a + x} = x^2 \implies \sqrt{a + x} = a - x^2 a−a+x =x2⟹a+x =a−x2
接下来可再次平方处理:
...

也许就像教孩子,付诸心血------他现在无师自通(反思与纠错),出人意料。

DeepSeek-R1-Zero的局限性

尽管DeepSeek-R1-Zero展现出强大的推理能力并自主发展出意外的高级行为,但仍面临若干问题。例如,该模型存在可读性差、语言混杂等挑战。为提升推理过程的可读性并与开源社区共享,我们进一步探索了DeepSeek-R1方法------通过结合人类友好型冷启动数据应用强化学习。

2.3 DeepSeek-R1:冷启动强化学习

受DeepSeek-R1-Zero优异表现的启发,我们提出两个关键问题:(1)通过引入少量高质量冷启动数据能否进一步提升推理性能或加速收敛?(2)如何训练既生成清晰连贯思维链(CoT)又具备强大通用能力的用户友好型模型?为此,我们设计了包含四个阶段的DeepSeek-R1训练流程。

这一步是因为 R1-Zero 聪明,但输出格式杂乱,研究者做的尝试。

我能感受到,DS R1 比 DS V3 虽聪明,但有时候对格式的把控不完美(比如让他不遗漏地翻译,几轮对话后他还是会遗漏、概括性的翻译)。

2.3.1 冷启动

为避免基础模型直接进行强化学习时的不稳定冷启动阶段,DeepSeek-R1通过构建少量长链式思维(CoT)数据对模型进行微调,作为强化学习的初始策略。数据收集方法包括:

  • 使用长CoT示例进行少样本提示
  • 直接提示模型生成含反思与验证的详细答案
  • 收集DeepSeek-R1-Zero的可读格式输出
  • 通过人工标注后处理优化结果

在本工作中,我们收集数千条冷启动数据对DeepSeek-V3-Base进行微调。相较于DeepSeek-R1-Zero,冷启动数据的优势体现在:

可读性优势

针对DeepSeek-R1-Zero存在的多语言混杂、答案高亮缺失等问题,我们设计了结构化输出格式:

|special_token|<reasoning_process>|special_token|<summary>

其中<reasoning_process>为问题推理过程,<summary>为推理结果总结。该模式通过末端总结和可读性过滤机制提升用户友好性。

性能潜力

通过结合人类先验知识精心设计冷启动数据模式,我们观察到其性能优于DeepSeek-R1-Zero。这表明迭代式训练对推理模型更具优势。

2.3.2 面向推理的强化学习

在冷启动微调后,我们采用与DeepSeek-R1-Zero相同的大规模强化学习流程,重点提升模型在编程、数学、科学和逻辑推理等任务中的表现。为应对多语言混杂问题,引入语言一致性奖励
语言一致性奖励 = 目标语言词汇数 CoT总词汇数 \text{语言一致性奖励} = \frac{\text{目标语言词汇数}}{\text{CoT总词汇数}} 语言一致性奖励=CoT总词汇数目标语言词汇数
尽管消融实验显示该奖励会轻微降低模型性能(约0.5%) ,但其显著提升了人类可读性。最终奖励由推理准确性和语言一致性线性组合构成:
奖 励 最终 = 奖 励 准确性 + λ 奖 励 语言一致性 奖励_{最终} = 奖励_{准确性} + \lambda 奖励_{语言一致性} 奖励最终=奖励准确性+λ奖励语言一致性

其中 λ \lambda λ为平衡系数。模型在此混合奖励驱动下进行强化学习直至收敛。

2.3.3 拒绝采样与监督微调

当推理导向的强化学习收敛后,我们通过以下两阶段扩展模型能力:

推理数据增强

  1. 使用强化学习检查点(Checkpoint)进行拒绝采样,收集约60万条推理相关训练样本
  2. 引入生成式奖励模型(DeepSeek-V3)评估预测与真实结果
  3. 过滤多语言混杂、冗长段落和代码块
  4. 对每个提示采样多个响应,仅保留正确答案

非推理能力扩展

  1. 复用DeepSeek-V3的20万条SFT数据集
  2. 覆盖写作、事实问答、自我认知、翻译等任务
  3. 对复杂查询添加潜在思维链,简单查询(如"你好")直接响应

最终组合80万条训练样本(60万推理+20万非推理),对DeepSeek-V3-Base进行两轮微调。该流程使模型在保持推理优势的同时,获得通用任务处理能力。

这部分的目的还是为了校正语言杂乱的问题,用 V3 模型挑选出多条回答中最好的。再加上监督微调的数据(增大知识量),对一些基础提问进行刻画------总不能"你是谁?我是 ChatGPT"吧😂

2.3.4 全场景强化学习

为进一步对齐人类偏好,我们实施第二阶段强化学习,旨在提升模型的帮助性(helpfulness)与无害性(harmlessness),同时优化其推理能力。具体而言,我们通过组合奖励信号与多样化提示分布来训练模型:

  • 推理数据:沿用DeepSeek-R1-Zero的方法,在数学、代码和逻辑推理领域使用基于规则的奖励指导学习过程
  • 通用数据 :采用奖励模型捕捉复杂场景下的人类偏好。基于DeepSeek-V3流程,采用相似的偏好对分布和训练提示:
    • 帮助性:仅关注最终总结,确保评估聚焦于响应对用户的实用性和相关性,同时最小化对底层推理过程的干扰
    • 无害性:评估模型的完整响应(包括推理过程和总结),识别并缓解生成过程中可能出现的风险、偏见或有害内容

通过整合奖励信号与多样化数据分布,我们最终训练出在保持推理优势的同时优先满足帮助性与无害性的模型。

读这几段的感觉是,SFT 和 RL 反复横跳。

现阶段,SFT 一定会降低思考能力;RL 一定会让输出不符合人类偏好(这也就是OpenAI一直在搞 RL,偏爱 RLHF,最终效果倒也没有很大进展的原因吧)。

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

为使更高效的小型模型(如Qwen和Llama)获得类似DeepSeek-R1的推理能力,我们直接使用§2.3.3节所述的80万条精选样本进行监督微调。实验表明,这种简单蒸馏方法能显著提升小模型推理能力。具体使用的基础模型包括:

  • Qwen系列:Qwen2.5-Math-1.5B、Qwen2.5-Math-7B、Qwen2.5-14B、Qwen2.5-32B
  • Llama系列:Llama-3.1-8B、Llama-3.3-70B-Instruct(选择Llama-3.3因其推理能力略优于Llama-3.1)

尽管引入强化学习可大幅提升性能,但蒸馏模型仅应用监督微调(SFT)阶段。我们的核心目标是验证蒸馏技术的有效性,将强化学习阶段的探索留给更广泛的研究社区。

3. 实验

这部分笔者略过了,实际效果好也好,不好也不好,实际上手用一用便知。

基准测试

我们在以下基准集评估模型性能:

  • 知识评估:MMLU、MMLU-Redux、MMLU-Pro、C-Eval、CMMLU
  • 指令遵循:IFEval、FRAMES
  • 复杂推理:GPQA Diamond、SimpleQA、C-SimpleQA
  • 代码能力:SWE-Bench Verified、Aider、LiveCodeBench(2024-08 -- 2025-01)、Codeforces
  • 数学竞赛:中国高中数学联赛(CNMO 2024)、美国数学邀请赛(AIME 2024)

除标准基准外,我们还使用LLM作为评判者评估开放生成任务:

  • AlpacaEval 2.0Arena-Hard:采用GPT-4-Turbo-1106进行成对比较(仅输入最终总结以避免长度偏差)
  • 蒸馏模型:重点报告AIME 2024、MATH-500、GPQA Diamond、Codeforces和LiveCodeBench结果

评估提示

  • 标准基准(MMLU、DROP等):使用simple-evals框架的提示
  • MMLU-Redux:零样本设置下采用Zero-Eval提示格式
  • MMLU-Pro、C-Eval、CLUE-WSC:将原始少样本提示调整为零样本(因少样本CoT可能损害DeepSeek-R1性能)
  • 代码/数学基准
    • HumanEval-Mul覆盖8种编程语言(Python、Java等)
    • LiveCodeBench使用CoT格式评估(数据采集时间:2024-08至2025-01)
    • Codeforces采用10场Div.2竞赛题目及专家设计测试用例
  • 生成限制:所有基准测试输出最大长度限制为32,768 tokens

基线模型

对比包括:

  • 自研模型:DeepSeek-V3系列
  • 商业模型:Claude-Sonnet-3.5-1022、GPT-4o-0513、OpenAI-o1-mini、OpenAI-o1-1217(基于官方报告)
  • 开源模型:QwQ-32B-Preview

评估设置

  • 生成长度:最大32,768 tokens
  • 解码策略 :默认使用pass@k评估(非零温度采样)
    • 采样温度:0.6
    • Top-p值:0.95
    • 生成响应数k:4-64(根据测试集规模调整)
  • pass@1计算
    pass@1 = 1 k ∑ i = 1 k p i \text{pass@1} = \frac{1}{k} \sum_{i=1}^{k} p_i pass@1=k1i=1∑kpi
    其中 p i p_i pi表示第 i i i个响应的正确性
  • AIME 2024共识结果:使用64样本多数投票(cons@64)

3.1 DeepSeek-R1评估

表4 . DeepSeek-R1与其他代表性模型的对比

在教育导向的知识基准测试(如MMLU、MMLU-Pro和GPQA Diamond)中,DeepSeek-R1展现出优于DeepSeek-V3的性能。这一改进主要归因于STEM相关题目准确率的提升------通过大规模强化学习实现了显著增益。此外,DeepSeek-R1在长上下文依赖的QA任务FRAMES上表现优异,展示了其强大的文档分析能力,凸显了推理模型在AI驱动搜索与数据分析任务中的潜力。

在事实性基准测试SimpleQA中,DeepSeek-R1超越DeepSeek-V3,证明其处理事实查询的能力。类似趋势也体现在OpenAI-o1在该基准上优于GPT-4o。然而,由于安全强化学习后模型倾向于拒绝回答部分查询,DeepSeek-R1在中文SimpleQA基准上的表现略逊于DeepSeek-V3。若关闭安全强化学习,其准确率可超过70%。

DeepSeek-R1在评估格式指令遵循能力的IF-Eval基准上也取得亮眼成绩。这些改进与监督微调(SFT)和强化学习最终阶段引入的指令遵循数据密切相关。此外,在AlpacaEval2.0和ArenaHard上的卓越表现表明DeepSeek-R1在写作任务和开放域问答中的优势。其显著超越DeepSeek-V3的结果印证了大规模强化学习的泛化效益------不仅增强推理能力,还提升跨领域性能。模型生成的总结长度保持简洁(ArenaHard平均689 tokens,AlpacaEval 2.0平均2,218字符),表明其避免了基于GPT评估时的长度偏差,进一步巩固了多任务鲁棒性。

在数学任务中,DeepSeek-R1达到与OpenAI-o1-1217相当的水平,大幅领先其他模型。类似优势体现在代码算法任务(如LiveCodeBench和Codeforces)上,推理导向模型主导了这些基准。在工程导向的编码任务中,OpenAI-o1-1217在Aider上优于DeepSeek-R1,但在SWE Verified上两者表现相当。由于当前相关强化学习训练数据量有限,我们预计DeepSeek-R1的工程性能将在下一版本中提升。

3.2 蒸馏模型评估

表5 . DeepSeek-R1蒸馏模型与其他可比模型在推理相关基准上的对比

如表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 蒸馏 vs. 强化学习

在3.2节中,我们可以看到通过蒸馏DeepSeek-R1,小型模型能够取得令人印象深刻的结果。然而,仍有一个问题:模型是否能够通过本文讨论的大规模强化学习训练(无需蒸馏)实现可比性能?

为回答这一问题,我们在Qwen-32B-Base上使用数学、代码和STEM数据进行了大规模强化学习训练,训练超过10K步,得到了DeepSeek-R1-Zero-Qwen-32B。实验结果如表6所示,表明32B基础模型经过大规模强化学习训练后,其性能与QwQ-32B-Preview相当。然而,从DeepSeek-R1蒸馏得到的DeepSeek-R1-Distill-Qwen-32B在所有基准测试中均显著优于DeepSeek-R1-Zero-Qwen-32B。

因此,我们可以得出两个结论:首先,将更强大的模型蒸馏到小型模型中能够取得优异结果,而依赖本文提到的大规模强化学习的小型模型需要巨大的计算资源,且可能无法达到蒸馏的性能。其次,尽管蒸馏策略既经济又有效,但突破智能边界可能仍需要更强大的基础模型和更大规模的强化学习

表6 . 蒸馏模型与强化学习模型在推理相关基准测试上的对比

4.2 失败的尝试

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

引入 PRM 会不可避免的被劫持,导致优化方向不如意,且数据难标注,有一定的开销;自然语言中的 MCTS 因为可能性非常多(耗费资源)、容易陷入局部最优,试验并没有得出好结果。

过程奖励模型(PRM)

PRM是一种合理的方法,可以引导模型采用更好的方式解决推理任务(Lightman et al., 2023; Uesato et al., 2022; Wang et al., 2023)。然而,在实践中,PRM存在三个主要限制,可能阻碍其最终成功。首先,在通用推理中明确定义细粒度步骤具有挑战性。其次,判断当前中间步骤是否正确是一项困难的任务。使用模型进行自动标注可能无法获得令人满意的结果,而手动标注则不利于规模化。第三,一旦引入基于模型的PRM,不可避免地会导致奖励劫持(Gao et al., 2022),且重新训练奖励模型需要额外的训练资源,并使整个训练流程复杂化。总之,尽管PRM在重排模型生成的前N个响应或辅助引导搜索方面表现出良好的能力(Snell et al., 2024),但在我们实验中的大规模强化学习过程中,其优势相比引入的额外计算开销有限。

蒙特卡洛树搜索(MCTS)

受AlphaGo(Silver et al., 2017b)和AlphaZero(Silver et al., 2017a)的启发,我们探索了使用蒙特卡洛树搜索(MCTS)来增强测试时计算的可扩展性。这种方法将答案分解为更小的部分,使模型能够系统地探索解空间。为此,我们提示模型生成多个标签,这些标签对应于搜索所需的特定推理步骤。在训练中,我们首先使用收集的提示通过MCTS在预训练值模型的指导下找到答案。随后,我们使用生成的问题-答案对训练演员模型和值模型,并迭代优化这一过程。

然而,这种方法在扩展训练规模时遇到了几个挑战。首先,与象棋中相对明确的搜索空间不同,token生成呈现指数级更大的搜索空间。为解决这一问题,我们为每个节点设置了最大扩展限制,但这可能导致模型陷入局部最优。其次,值模型直接影响生成质量,因为它指导搜索过程的每一步。训练细粒度的值模型本身就很困难,这使得模型难以迭代改进。尽管AlphaGo的核心成功依赖于训练值模型以逐步提升性能,但由于token生成的复杂性,这一原则在我们的设置中难以复制。

总之,尽管MCTS在与预训练值模型配对时可以在推理过程中提升性能,但通过自搜索迭代提升模型性能仍然是一个重大挑战。

5. 结论、局限性与未来工作

在本研究中,我们分享了通过强化学习提升模型推理能力的探索历程。DeepSeek-R1-Zero代表了一种无需依赖冷启动数据的纯强化学习方法,在多种任务中表现出色。DeepSeek-R1则更为强大,结合了冷启动数据与迭代强化学习微调,最终在一系列任务中实现了与OpenAI-o1-1217相当的性能。

我们进一步探索了将推理能力蒸馏到小型密集模型中的方法。我们使用DeepSeek-R1作为教师模型生成了80万条训练样本,并对多个小型密集模型进行了微调。结果令人鼓舞:DeepSeek-R1-Distill-Qwen-1.5B在数学基准测试中表现优异,AIME得分为28.9%,MATH得分为83.9%,超越了GPT-4o和Claude-3.5-Sonnet。其他密集模型也取得了显著成果,显著优于基于相同检查点的其他指令微调模型。

未来,我们计划在以下方向深入研究DeepSeek-R1:

  • 通用能力:目前,DeepSeek-R1在函数调用、多轮对话、复杂角色扮演和JSON输出等任务中的能力尚不及DeepSeek-V3。未来,我们计划探索如何利用长链式思维(CoT)提升这些领域的任务表现。
  • 语言混合:DeepSeek-R1目前针对中文和英文进行了优化,这可能导致在处理其他语言查询时出现语言混合问题。例如,即使查询语言非中文或英文,DeepSeek-R1仍可能使用英文进行推理和响应。我们计划在未来的更新中解决这一局限性。
  • 提示工程 :在评估DeepSeek-R1时,我们发现其对提示非常敏感。少样本提示(few-shot prompting)会持续降低其性能。因此,我们建议用户直接描述问题并使用零样本设置(zero-shot setting)指定输出格式,以获得最佳结果。
  • 软件工程任务:由于评估时间较长,影响了强化学习过程的效率,大规模强化学习尚未广泛应用于软件工程任务。因此,DeepSeek-R1在软件工程基准测试中未展现出对DeepSeek-V3的显著改进。未来版本将通过实施软件工程数据的拒绝采样或在强化学习过程中引入异步评估来提高效率。

少样本提示会降低性能------这跟 Qwen 的 QwQ 有些相似(多轮对话会让 QwQ 变笨)。或许是推理模型的共性?

相关推荐
Johnny-Chang1 分钟前
德承GP-3100 x DeepSeek:边缘运算工控机在Windows系统下私有化部署DeepSeek-R1 AI模型教程
deepseek
Chatopera 研发团队2 分钟前
使用 AlexNet 实现图片分类 | PyTorch 深度学习实战
pytorch·深度学习·分类·cnn·cv·alexnet
EterNity_TiMe_11 分钟前
【人工智能】deepseek R1模型在蓝耘智算平台的搭建与机器学习的探索
人工智能·python·机器学习·deepseek
灵魂画师向阳12 分钟前
白嫖RTX 4090?Stable Diffusion:如何给线稿人物快速上色?
java·大数据·人工智能·ai作画·stable diffusion
zhanyd20 分钟前
告别DeepSeek官方的服务器繁忙~腾讯云DeepSeek-V3/R1无限免费调用~不用安装任何东西~小白一学就会~
腾讯云·白嫖·deepseek·deepseek-r1·deepseek api
张紫娃21 分钟前
CSDN 大模型 笔记
语言模型
新加坡内哥谈技术43 分钟前
ChunkKV:优化 KV 缓存压缩,让 LLM 长文本推理更高效
人工智能·科技·深度学习·语言模型·机器人
Narnat1 小时前
opencv打开摄像头出现读取帧错误问题
人工智能·opencv·计算机视觉
珠江上上上1 小时前
支持向量机原理
人工智能·深度学习·算法·机器学习·支持向量机·数据挖掘
pchmi1 小时前
C# OpenCV机器视觉:对位贴合
人工智能·opencv·c#·机器视觉·opencvsharp