跳到主要内容DeepSeek-R1 技术解读:强化学习与推理能力的激发机制 | 极客日志编程语言AI算法
DeepSeek-R1 技术解读:强化学习与推理能力的激发机制
DeepSeek-R1 展示了仅通过强化学习(RL)即可激发大模型产生长思维链(Long CoT)和反思能力,无需监督微调(SFT)作为前置条件。文章对比了 DeepSeek-R1-Zero 与正式版 R1 的训练流程。R1-Zero 验证了基于规则的奖励模型配合 Base 模型进行 RL 的有效性。正式版 R1 则采用冷启动数据 SFT 初始化,结合多阶段 RL 及高质量数据蒸馏。此外,针对小模型仅需蒸馏即可提升推理能力。该研究揭示了推理时间扩展与训练过程可能并非完全独立,为后续大模型训练提供了新视角。
利刃1 浏览 在 OpenAI o1 刚发布时,其有限的技术报告中有两个内容格外抓人眼球:
- Inference/test-time scaling(推理/测试时扩展)
- RL(强化学习)
我一直是将这两者理解为两个独立的个体。基于此,当时我对 o1 的实现思路做出了一些猜想:
我认为 o1 走的可能是 Framework 3 的路线,总结如下:
- Inference/test-time scaling:这一块的主要作用是为 RL 过程自动化地制造高质量数据集。包括用于格式化模型产生思考过程的 Long CoT 数据集,以及带 preference labels 的数据集。我把这一块的系统抽象为 PRM + some search methods 的形式。例如讨论度很高的 MCTS,本质上也可理解为 fixed PRM + some search methods。
- RL:这部分应该就是 OpenAI 自己惯有的一套 RL 流程。
在这样的训练框架下,最终推理时是否要再次引入 inference-time scaling 模块,就是一个可选项了。只要 RL 过程做得充分好,那么直接用训完的 policy 模型就可以,完全不需要再做优化。
那么,为什么当时会认为 inference-time scaling 和 RL 应该是两个独立的过程呢?因为在当时的认知里,如果没有显式的引导,模型是不具备产生 Long CoT(乃至带反思的 CoT)的能力的。在模型训练初期,这个能力是指 formatting 模型,让它知道要产出这种格式的回答;在训练过程中再来慢慢提升这种回答的质量。这个显式引导就是指诸如 SFT 这样的过程。所以在这个认知里,上面的两个过程就应该是独立的。
而第一次发现这样的认知可能有问题,是在阅读相关万字长文时,有一句话格外引起兴趣:
'没有人为的刻意为之,模型在某种训练过程中自发出现了反思的行为。'
这句话的意思是:如果这一点都能实现,那是否意味着没有人为的刻意为之,模型本来也具备产生 Long CoT 的能力呢?如果是这样的话,那么 o1 可能除了数据工程 + 惯常的 RL 技巧外,整个系统要比想的简单很多。可是我的水平有限,实在不知道除了显式引导外,模型怎么可能自发产生这样的能力呢?
直到前几天,读到了 DeepSeek-R1 的技术报告,才发现:原来单纯的 RL 就可以激发模型产出带有 Long CoT(甚至是反思)的回复的能力!这里单纯的 RL 是指:并没有显式提供一些真正的 Long CoT 数据让模型去背去学,只是在 system message 里告诉模型先思考,再回答。接着通过 RL 一轮又一轮的训练,模型产出的 responses 越来越长,且在某个时刻出现了自我评估和反思的行为。这个实验探索就是 DeepSeek-R1-Zero 在做的事情。
如果 RL 有这种能力,那么 inference time scaling 和 RL 就可以不是两个独立的过程,而是在 RL 的过程里自发出现了 inference time scaling 的现象。而如果它们不再独立,那么类 o1 的训练架构也许就比我们想得要简单很多。
二、DeepSeek-R1-Zero
在 DeepSeek-R1 的报告里,提到了两个模型,分别是 DeepSeek-R1-Zero 和 DeepSeek-R1。总结来看:
- Zero:算是一个实验性质的模型。在 Zero 上不通过任何 SFT 的方式,仅使用 RL + 规则 RM,就能激发模型产出带反思的 Long CoT。这个重要的实验发现进一步启发了 R1 的训练。
- R1:是受到 Zero RL 相关的实验结果启发,而新训的最终版的模型。Zero 所采用的 RL 方法(即什么样的 RL 能激发模型主动产出 Long CoT,甚至是反思)将被 R1 参考。
2.1 强化学习方法
DeepSeek 家的 GRPO,不是本文关注的重点,暂略。
2.2 奖励模型 - 规则式 RM
在训练 DeepSeek-R1-Zero 时,采用了基于规则的奖励系统,主要包括两种类型的奖励:
- 准确性奖励(Accuracy Rewards):用于评估模型 responses 的准确性。例如数学问题的答案是否正确,代码是否通过测试用例等。
- 格式奖励(Format Rewards):除了准确性奖励模型外,还需要评估模型的输出是否遵从了一定的格式要求,以此规范模型的思维过程。具体要求:要求模型将其思维过程放在
<thinking> 和 </thinking> 标签之间。这种格式化有助于明确模型的推理步骤。
- Reward Hacking(奖励黑客行为)
- 训练资源与复杂性
2.3 RL 数据的 prompt 设计
为了训练 DeepSeek-R1-Zero,首先设计了一个简单的模板,指导基础模型遵循我们指定的指令:
从中可以看出,这个模版就是 system message + question,整体作为 prompt。这里不是说用 SFT,而是说直接用这个 prompt 喂给 base 模型(就是 actor),同时由于 RM 是规则式的,不需要用数据训练了,所以接下来就可以正常走 RLHF 过程了。
2.4 关于 Zero 的重要结论
和别的模型的性能比较这里略去,简单介绍一下对于 R1 Zero 性能重要的几个结论:
- R1 Zero 证明了无需 SFT,直接用 Base Model 做 RL,已经可以取得强大的 reasoning 能力。
- 使用多数投票策略(例如对一条 prompt 采样多次,取出现次数最多的那个答案)可以进一步增强模型性能。
- 随着训练 steps 的增加,R1 Zero 倾向于产出更长的 response(Long CoT),并且还出现了反思行为。这些都是在没有外部干预的情况下,R1 Zero 模型在训练中自我进化的结果。
- Response 的长度随着训练时间增加而变长(思考得更多了)
- R1 Zero 自然而然学会了重新评估和反思
2.5 Zero 的缺陷
所以接下来探索 DeepSeek R1,这是独立于 R1 Zero 的正式训练流程了。可以说,R1 Zero 的训练是一个探索性的过程,它验证了 RL 本身对于激励模型产生推理的能力。在这个探索结论上,开始正式进入 R1 的训练。
三、DeepSeek-R1
- 从 Base 模型开始:
- 使用量少、质量高的冷启动数据(cold data)来 SFT Base 模型,使得 Base 模型可以有个良好的初始化
- 使用 RL 提升模型的推理能力
- 在 RL 阶段接近收敛时,用这个时候的 checkpoint 生成高质量的数据,将它们与现有的 SFT 数据混合,创建新的 SFT 数据集
- 再次从 Base 模型开始:
- 使用新创建的 SFT 数据集做 Finetune
- 执行二阶段 RL
- 得到最终的 R1
3.1 使用冷启动数据做 SFT
- Few-shot:用带有 Long CoT 的例子作为 few-shot,引导模型生成回答(引导的是 Base 模型)
- 直接在 Prompt 中,要求模型生成带有反思和验证的回答(引导的也是 Base 模型)
- 收集前面对 R1 Zero 的部分结果
- 使用人工对数据做一些后处理
|special_token|<reasoning_process>|special_token|<summary>
- 使用这千条冷启动数据,对 Base 模型进行 SFT。
3.2 冷启动 SFT 后的 RL
RM 衡量的内容有 2 方面(看样子也是规则式的):
- 语言混合问题:这里 RM 在打分时,也要对语言一致性进行打分(计算目标语言词汇的比例)
- 答案的准确性
然后继续做类似于 R1 Zero 的 RL 过程。
3.3 创建新的 SFT 数据集
这里新的 SFT 数据集来自两个方面,一共约 80w 条。
-
当前正在训练的模型产出的结果(Reasoning Data)
- 取 RL 接近收敛时的 checkpoint
- 构造 Prompt 模版,使用拒绝采样的方式来筛选轨迹数据。在判断一条轨迹是否应该保留时,除了使用之前规则式的 RM,还会引入 DeepSeek V3 作判断(比如这条轨迹所指向的答案和 V3 的结果是否一致)。引入多个判断标准的目的是为了更好扩展数据集,保证多样性。
- 最后在做一些过滤,这部分收集约 60w 条新 SFT 数据集
-
不是当前正在训练的模型产出的结果(No Reasoning Data)
- 已经有的高质量 SFT 数据集(DeepSeek V3 做 SFT 的数据集)
- 通过 Prompt 引导 DeepSeek V3 产出的有 CoT 的数据集等
- 这部分大约收集了 20w
3.4 使用新的 SFT 数据集继续 Finetune,并做 RL
再次回到 Base 模型上,首先用这 80w 的新数据对它做 2 个 epoch 的 SFT。
- 第 1 阶段 RL:旨在增强模型推理方面的能力。采取类似 R1 Zero 的 RL 方法,使用基于规则的 RM,对模型进行 RL 训练,以提升模型在数学、代码和逻辑方面的推理能力。(这里用的数据集应该不是那 80w,是类似于 Zero 直接构建 Prompt)
- 第 2 阶段 RL:旨在针对模型的 Helpfulness 和 Harmlessness,类似于 DeepSeek V3 的训练 Pipeline。
3.5 为什么还有 SFT 的过程
当你观察上面对 R1 的两个阶段训练时,你会发现它们依然用到了 SFT,表现在:
- 在第 1 阶段,使用千条冷启动数据做 SFT,这千条冷启动数据都是带有 Long CoT 的 Reasoning Data
- 在第 2 阶段,使用约 80w 条新的数据做 SFT,这里有 60w Reasoning Data 和 20w General Data。
那么看可能会有这样的疑问:如果还用 SFT,那前面 Zero 的实验是不是白做了?既然得到了 RL 本身就有激发模型做 Long CoT 和反思的能力,那要 SFT 干嘛?这岂不是和开头所说的 RL 中实现 Inference Time Scaling 有矛盾吗?
首先,总体来看,SFT 的作用是为了让模型拥有一个好的训练起点。具体来说,在冷启动阶段,你只是用了千条数据做 SFT 而已;在第 2 阶段,虽然使用了 80w 这一较多数量的数据,但这波数据的使用是一次性的,你不需要让这个过程贯穿在 RL on-policy 训练的每个 step。而且相比于设计一个复杂独立的 Inference 系统,它的生成是容易的。这里做的事情不过是让模型拥有强壮的训练起点。
而在拥有这个起点之后,更强的推理和反思能力,则是靠 RL 来做,这正是受到 Zero 的启发。
四、蒸馏 Dense 模型
使用以上 80w 数据,对 Llama 和 Qwen 系的部分 Dense 模型做 SFT,然后检测这些模型的推理能力。
结论:对于小模型,不需要依然 RL,只用蒸馏就可以使得其推理能力得到显著提升(对于大模型会是怎么样的,这里没有提)。
五、总结与展望
DeepSeek-R1 系列的研究揭示了大模型推理能力涌现的新路径。核心启示在于:
- RL 的潜力被低估:R1-Zero 证明无需大量 SFT 数据,仅凭规则奖励和强化学习即可激发模型的自我反思和长链推理能力。这降低了高质量推理数据的获取门槛。
- 训练架构的简化:传统的'预训练 -> SFT -> RLHF'流水线中,SFT 往往被视为必要环节。但 R1 表明,SFT 更多是提供初始状态,核心的推理能力可以通过 RL 在训练过程中动态演化出来。这意味着未来的训练架构可能更加轻量化,减少了对昂贵标注数据的依赖。
- 推理与训练的统一:过去认为 Inference-time Scaling(如思维链生成)需要专门的推理系统支持,而 R1 展示了这种能力可以在训练阶段通过 RL 内化到 Policy 模型中。这为降低推理成本提供了新思路。
- 蒸馏的有效性:对于中小规模模型,直接从大模型蒸馏推理能力比从头训练 RL 更高效,这为推理能力的普惠化提供了可行方案。
总体而言,DeepSeek-R1 不仅是一个模型,更是对大模型训练范式的探索。它提示我们,强化学习在激发模型内在推理潜能方面具有巨大的空间,未来或许会有更多研究聚焦于如何通过 RL 而非单纯的数据堆砌来提升模型智能。
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online