DeepSeek-R1 技术报告的关键点

OpenAI o1 是在 inference 时增加思维链推理的长度从而获得推理能力,而 R1 是第一个验证了在 post-training 时使用 RL 让千亿参数的模型获得推理能力的研究。在 post-training 阶段使用 RL 一直是业界探索的方向,但难的是如何在这个尺寸的模型下实现成本和时间可控的 RL,之前业界主流的探索方向是 Process Reward Model (PRM) 和 Monte Carlo Tree Search (MCTS)(被传得很神的 OpenAI 的 Q* 据说是 MCTS),这次 DeepSeek 用的是自己研究的一个叫 GRPO 的 RL 框架,论文于 2024 年 2 月发表 arXiv:2402.03300

image.png

第一步:R1-Zero

  1. DeepSeek 首先基于 DeepSeek-V3-Base 这个预训练模型,在不使用任何监督数据的情况下仅靠 RL 就训练出极具推理能力的 R1-Zero —— 取名 Zero 暗示了这个模型的推理能力的获得路径类似于不依赖人类棋谱 的 AlphaGo Zero(感觉致敬与炫耀并存)。

    image.png

  2. RL 只对 2 种结果做奖励:准确性与格式。准确性很容易理解;格式是指模型必须把思考过程放在 <think/> 标签内,这个点很有趣,并不是传统 CoT 的做法,结果是使得 R1 成为了一种富含推理过程的合成数据源,后续还会讲到用途。

    image.png

  3. 有意思的发现:R1-Zero 在没有对于推理步骤长度进行奖励的情况下,发现模型为了在复杂问题下获得更准确的结果,自己自然地增加了推理步骤。

    image.png

  4. 有意思的发现:R1-Zero 在思考过程中出现了 “Wait, wait. Wait. That’s an aha moment I can flag here.” 的语句 —— 这也是研究人员的 Aha moment。

    image.png

  5. 有意思的发现:R1-Zero 会混合使用多语言来思考(主要是中英),如果为了迎合人类的读性强制模型使用一种语言来思考,则会略微降低模型的表现。

    image.png

  6. 在应用 majority voting (我理解为通过采样不同 decode 参数生成多个候选答案后选择最高频作为结果)后,R1-Zero 在数学领域的推理表现直接追平了 o1。

    image.png

第二步:R1

  1. 在 R1-Zero 之后再去开发了更具通用性的 R1 是因为:1. 能否通过一些高质量的训练数据集作为冷启动,使得相同的 RL 过程最终让模型获得更好的推理表现?2. 让模型在非推理场景也有好的表现,并且让思考与结果对人类更具可读性,让模型获得更广泛的适用性。

    image.png

  2. 合成冷启动数据集 —— 60 万条推理数据集:1. 让 R1-Zero (规定格式)生成大量长思考链的合成数据集;2. 取其中可以通过简单规则就判断正确性的数据,如数学答案的数值验证、选择题选项是正确;3. 取可通过 DeepSeek-V3 来和真实结果进行比较校验真实性的数据;4. 过滤掉其中包含混合语言、超长段落和代码快的数据。

    image.png

  3. 合成冷启动数据集 —— 20 万条非推理数据集:在例如写作、QA、自我认知、翻译 …… 等非推理场景下,沿用了 V3 的 pipeline 和 SFT 数据集约 20 万条。

    image.png

  4. 在 DeepSeek-V3-Base 的预训练模型的基础上,先对这大约 80 万条冷启动数据进行 SFT 后,再应用 R1-Zero 的 RL pipeline,让模型在除了数学领域也获得了和 o1 类似的表现。

  5. 最后为了对齐人类偏好(可读性、安全性)进行了额外一轮的 RL。

对小模型的影响

  1. 展示了仅使用 R1 的蒸馏数据作为 SFT 数据集,就能将现有小模型的推理能力获得巨大的提升。报告仅测试了 Qwen 和 Llama,结果是仅在 Qwen2.5-7B 和 Llama3.1-8B 的尺寸上,模型在数学基准上的推理能力就超越了 GPT-4o-0513,也超越了各自的 32B 版本。

    image.png

  2. 报告也指出自己在 Qwen2.5-32B 上进行了一样的 RL 训练,但并没有让模型获得推理能力的提升,说明小模型的推理能力(可能受限于模型容量对长推理链的建模能力而)存在明显的上限,提升推理能力的关键是直接学习高质量的富含推理过程的训练数据即可 —— 有点像笨学生最有效提升成绩的办法就是刷题,不太需要知道为什么 🤣

    image.png

Coding 能力