理解LLM所谓的“推理”能力
文章目录
- 1. 如何定义“推理模型”?
- 2. 什么时候应该使用推理模型?
- 3. 简要介绍 DeepSeek 训练流程
- 4. 建立和改进推理模型的四种主要方法
- 4.1 推理时间扩展(inference-time scaling)
- 4.2 纯强化学习(RL)
- 4.3 监督微调和强化学习(SFT + RL)
- 4.4 纯监督微调(SFT)和蒸馏
- 4.5 总结
- 5. 如何在有限的预算下开发推理模型
- 5.1 蒸馏可以发挥很大作用
- 5.2 预算有限的纯强化学习
- 5.3 超越传统SFT:旅程学习(Journey Learning)
- 参考
本人看到Sebastian Raschka 博士的这篇文章,有所收获,分享给大家。本文部分翻译自 Sebastian Raschka 博士的文章:https://magazine.sebastianraschka.com/p/understanding-reasoning-llms
1. 如何定义“推理模型”?
如果你从事人工智能(或一般机器学习)领域的工作,你可能对那些模糊且备受争议的定义并不陌生。“推理模型”这个术语也不例外。最终,有人会在一篇论文中正式定义它,但在下一篇论文中又会重新定义它,如此反复。
在本文中,我将“推理”定义为回答那些需要复杂、多步骤生成且包含中间步骤的问题的过程。例如,像“法国首都是哪里?”这样的事实性问答不需要推理。相比之下,像“如果一列火车以 60 英里/小时的速度行驶 3 小时,它能行驶多远?”这样的问题则需要一些简单的推理。例如,它需要识别距离、速度和时间之间的关系,才能得出答案。
左图表示普通的 LLM 可能只提供简短的答案,而右图推理模型通常包含揭示部分思维过程的中间步骤。(请注意,许多并非专门为推理任务开发的 LLM 也可以在其答案中提供中间推理步骤)
大多数 LLM 都具备基本的推理能力,可以回答诸如“如果一列火车以 60 英里/小时的速度行驶 3 个小时,它能行驶多远?”之类的问题。因此,今天,当我们提到推理模型时,我们通常指的是那些擅长更复杂的推理任务的 LLM,例如解决谜题、谜语和数学证明。
此外,如今大多数标榜为推理模型的 LLM 课程都将“思考”或“思考”过程作为其答案的一部分。LLM 是否以及如何真正“思考”则另当别论。
推理模型中的中间步骤可以以两种方式出现。首先,它们可能明确包含在响应中,如上图所示。其次,一些推理 LLM(例如 OpenAI 的 o1)会运行多次迭代,其中包含不向用户显示的中间步骤。
“推理”用于两个不同的层面:1)处理输入并通过多个中间步骤生成;2)提供某种推理作为对用户的响应的一部分。
2. 什么时候应该使用推理模型?
既然我们已经定义了推理模型,那么我们可以进入更有趣的部分:如何构建和改进用于推理任务的 LLM。然而,在深入探讨技术细节之前,重要的是要考虑何时真正需要推理模型。
我们什么时候需要推理模型? 推理模型旨在擅长处理复杂的任务,例如解决难题、高等数学问题以及具有挑战性的编程任务。然而,对于诸如摘要、翻译或基于知识的问答等较为简单的任务,它们并非必需。事实上,将推理模型用于所有任务可能效率低下且成本高昂。例如,推理模型通常使用成本更高、更冗长,有时由于“过度思考”而更容易出错。同样适用的简单规则是:针对具体任务使用合适的工具(或LLM类型)。
下表总结了推理模型的主要优势和局限性:
擅长 | 不擅长 |
---|---|
+ 演绎或归纳推理(例如谜语、数学证明) | - 快速且廉价的响应(推理时间更长) |
+ 链式思维推理(分解多步骤问题) | - 基于知识的任务(幻觉) |
+ 复杂决策任务 | - 简单任务(“过度思考”) |
+ 对新问题更好的泛化能力 |
3. 简要介绍 DeepSeek 训练流程
在下一节讨论构建和改进推理模型的四种主要方法之前,我想简要概述一下 DeepSeek R1 流程。
请注意,DeepSeek 并没有发布单一的 R1 推理模型,而是推出了三种不同的变体:DeepSeek-R1-Zero、DeepSeek-R1 和 DeepSeek-R1-Distill。
根据技术报告中的描述,我在下图中总结了这些模型的发展过程:
接下来,我们先简单回顾一下上图所示的流程。下一节将详细介绍构建和改进推理模型的四种主要方法。
(1) DeepSeek-R1-Zero:该模型基于 2024 年 12 月发布的 671B 预训练 DeepSeek-V3 基础模型。研究团队使用强化学习 (RL) 和两种奖励类型对其进行训练。这种方法被称为“冷启动”训练,因为它不包含监督微调 (SFT) 步骤,而这通常是带人工反馈的强化学习 (RLHF) 的一部分。
(2) DeepSeek-R1:这是 DeepSeek 的旗舰推理模型,基于 DeepSeek-R1-Zero 构建。团队通过增加 SFT 阶段和进一步的强化学习训练对其进行了进一步完善,从而在“冷启动”的 R1-Zero 模型上实现了改进。
(3) DeepSeek-R1-Distill*:利用前面步骤生成的 SFT 数据,DeepSeek 团队对 Qwen 和 Llama 模型进行了微调,以增强其推理能力。虽然此过程并非传统意义上的“蒸馏”,但它涉及使用较大的 DeepSeek-R1 671B 模型的输出来训练较小的模型(Llama 8B 和 70B,以及 Qwen 1.5B-30B)。
4. 建立和改进推理模型的四种主要方法
在本节中,我将概述当前用于增强 LLM 推理能力和构建专门推理模型(如 DeepSeek-R1、OpenAI 的 o1 和 o3 等)的关键技术。
注:OpenAI 的 o1 和 o3 的具体工作原仍未知。不过,据传它们结合了推理和训练技术。
4.1 推理时间扩展(inference-time scaling)
提升 LLM 推理能力(或任何一般能力)的一种方法是推理时间扩展。该术语可能有多种含义,但在本文中,它指的是在推理过程中增加计算资源以提高输出质量。
粗略地类比一下,当人类有更多时间思考复杂问题时,往往会做出更好的回答。同样,我们可以运用一些技巧,鼓励 LLM 在生成答案时更多地“思考”。(不过,LLM 是否真的会“思考”则是另一个话题)
推理时间扩展的一个直接方法是巧妙的提示设计。一个经典的例子是思路链 (chain-of-thought,CoT) 提示,在输入提示中包含诸如“逐步思考(think step by step)”之类的短语。这鼓励模型生成中间推理步骤,而不是直接跳到最终答案,这通常(但并非总是)能够在更复杂的问题上产生更准确的结果。
请注意,对于更简单的基于知识的问题,例如“法国的首都是哪里”,采用这种策略是没有意义的,这同样也是判断推理模型是否适用于给定输入查询的一个很好的经验法则。
下图是论文(https://arxiv.org/abs/2205.11916)的一个经典 CoT prompt 的例子。
前面提到的 CoT 方法可以看作是推理时间扩展,因为它通过生成更多的输出 token 使推理更加长。
另一种提高推理时间可扩展性的方法是使用投票和搜索策略。一个简单的例子是多数投票,我们让 LLM 生成多个答案,然后我们通过多数投票选出正确答案。同样,我们可以使用集束搜索(beam search)和其他搜索算法来生成更好的答案。
下图来自 LLM Test-Time Compute 论文,https://arxiv.org/abs/2408.03314,不同的基于搜索的方法依赖于基于过程奖励的模型来选择最佳答案:
DeepSeek R1 技术报告将常见的推理时间扩展方法(例如基于过程奖励模型和蒙特卡洛树搜索的方法)归类为“未成功尝试”。这表明,DeepSeek 并未明确使用这些技术,而只是利用了 R1 模型生成更长响应的自然倾向。与 V3 基础模型相比,R1 模型自然倾向于生成更长的响应,这可以说是一种隐式的推理时间扩展形式。
然而,显式推理时间缩放通常是在应用层而不是在 LLM 本身内实现的,因此 DeepSeek 可能仍会在其应用程序中应用此类技术。
我怀疑 OpenAI 的 o1 和 o3 模型使用了推理时间缩放,这可以解释为什么它们与 GPT-4o 等模型相比成本相对较高。除了推理时间缩放之外,o1 和 o3 很可能使用了与 DeepSeek R1 类似的强化学习流程进行训练。
4.2 纯强化学习(RL)
如前所述,DeepSeek 开发了三种类型的 R1 模型。第一种是 DeepSeek-R1-Zero ,它建立在 DeepSeek-V3 基础模型之上,后者是 DeepSeek 于 2024 年 12 月发布的标准预训练 LLM。与典型的强化学习流程(在强化学习之前应用监督微调 (SFT))不同,DeepSeek-R1-Zero 完全采用强化学习进行训练,没有初始的 SFT 阶段,如下图所示。
尽管如此,这种强化学习过程与常用的 RLHF 方法类似。DeepSeek-R1-Zero 的关键区别在于,他们跳过了用于指令调整的监督微调 (SFT) 阶段。这就是为什么他们将其称为“纯”强化学习。
对于奖励,他们没有使用根据人类偏好训练的奖励模型,而是采用了两种类型的奖励:准确性奖励和格式奖励。
- 准确性奖励使用 LeetCode 编译器来验证编码答案,并使用确定性系统来评估数学响应。
- 格式奖励依赖于 LLM 评委来确保响应遵循预期格式,例如将推理步骤放在
<think>
标签内。
令人惊讶的是,这种方法足以让 LLM 发展出基本的推理能力。研究人员观察到一个“啊哈!”的时刻,尽管模型没有经过明确的训练,但它开始在其反应中生成推理痕迹,如下图所示。
虽然 R1-Zero 并非性能最佳的推理模型,但它确实通过生成中间的“思考”步骤展示了推理能力,如上图所示。这证实了使用纯强化学习开发推理模型是可行的,而 DeepSeek 团队是第一个展示(或至少是发表)这种方法的团队。
4.3 监督微调和强化学习(SFT + RL)
接下来,我们来看一下 DeepSeek 旗舰推理模型 DeepSeek-R1 的开发历程,它是构建推理模型的蓝图。该模型在 DeepSeek-R1-Zero 的基础上进行了改进,加入了额外的监督微调 (SFT) 和强化学习 (RL),从而提升了其推理性能。
需要注意的是,在强化学习之前加入一个 SFT 阶段实际上很常见,就像在标准 RLHF 流程中看到的那样。OpenAI 的 o1 很可能就是采用类似的方法开发的。
如上图所示,DeepSeek 团队使用 DeepSeek-R1-Zero 生成了所谓的“冷启动”SFT 数据。“冷启动”指的是这些数据是由 DeepSeek-R1-Zero 生成的,而 DeepSeek-R1-Zero 本身并未接受过任何监督微调 (SFT) 数据的训练。
使用这些冷启动 SFT 数据,DeepSeek 随后通过指令微调训练模型,然后进行另一个强化学习 (RL) 阶段。此 RL 阶段保留了 DeepSeek-R1-Zero RL 流程中使用的准确率和格式奖励。此外,他们还添加了一致性奖励,以防止语言混合(当模型在一次响应中切换多种语言时会发生这种情况)。
强化学习阶段之后,又进行了一轮 SFT 数据收集。在此阶段,我们使用最新的模型检查点生成 60 万个思维链 (CoT) SFT 示例,同时使用 DeepSeek-V3 基础模型创建了另外 20 万个基于知识的 SFT 数据。
这 60 万 + 20 万个 SFT 样本随后被用于指令微调 DeepSeek-V3 基础模型,之后进行最后一轮强化学习。在此阶段,他们再次使用基于规则的方法对数学和编程问题进行准确率奖励,而对其他问题类型则使用人类偏好标签。总而言之,这与常规的 RLHF 非常相似,只是 SFT 数据包含(更多)CoT 示例。而且,除了基于人类偏好的奖励之外,强化学习还具有可验证的奖励。
最终模型 DeepSeek-R1 由于增加了 SFT 和 RL 阶段,性能较 DeepSeek-R1-Zero 有显著提升,如下表所示:
4.4 纯监督微调(SFT)和蒸馏
到目前为止,我们已经介绍了构建和改进推理模型的三种主要方法:
-
推理时间扩展,一种无需训练或修改底层模型即可提高推理能力的技术。
-
纯强化学习(RL),如 DeepSeek-R1-Zero,它表明推理可以作为一种学习行为出现,而无需监督微调。
-
监督微调(SFT)加上 RL,从而产生了 DeepSeek 的旗舰推理模型 DeepSeek-R1。
那么,还剩下什么呢?模型“蒸馏”。
令人惊讶的是,DeepSeek 还发布了一些规模较小的模型,这些模型是通过他们称之为“知识蒸馏”的过程训练的。然而,在 LLM 的背景下,知识蒸馏并不一定遵循深度学习中使用的经典知识蒸馏方法。传统上,在知识蒸馏中,一个规模较小的学生模型会同时在规模较大的教师模型和目标数据集的对数样本上进行训练。
此处的蒸馏指的是在由较大 LLM 生成的 SFT 数据集上,对较小的 LLM(例如 Llama 8B 和 70B 以及 Qwen 2.5 模型(0.5B 到 32B))进行指令微调。具体来说,这些较大的 LLM 是 DeepSeek-V3 和 DeepSeek-R1 的一个中间检查点。实际上,此蒸馏过程使用的 SFT 数据与上一节中描述的用于训练 DeepSeek-R1 的数据集相同。
为了阐明这一过程,我在下图中突出显示了蒸馏部分:
他们为什么要开发这些提炼模型?我认为有两个主要原因:
-
更小的模型效率更高。这意味着它们运行成本更低,而且也能在低端硬件上运行,这对于像我这样的许多研究人员和爱好者来说尤其有趣。
-
纯监督微调 (SFT) 案例研究。这些经过提炼的模型可以作为有趣的基准,展示纯监督微调 (SFT) 在没有强化学习的情况下,模型可以走多远。
下表比较了这些提炼模型与其他流行模型以及 DeepSeek-R1-Zero 和 DeepSeek-R1 的性能:
我们可以看到,精简后的模型明显弱于 DeepSeek-R1,但尽管规模小了几个数量级,它们却出奇地强于 DeepSeek-R1-Zero。值得一提的是,这些模型与 o1 mini 相比表现得非常出色(我怀疑 o1-mini 本身可能是 o1 的一个类似的精简版本)。
在用结论结束本节之前,还有一个有趣的比较值得一提。DeepSeek 团队测试了 DeepSeek-R1-Zero 中出现的涌现推理行为是否也能在较小的模型中出现。为了验证这一点,他们将 DeepSeek-R1-Zero 中相同的纯强化学习方法直接应用于 Qwen-32B。
本次实验的结果总结如下表所示,其中 QwQ-32B-Preview 是 Qwen 团队基于 Qwen 2.5 32B 开发的参考推理模型(我认为训练细节从未公开过)。本次比较提供了一些额外的见解,让我们了解纯强化学习能否在比 DeepSeek-R1-Zero 小得多的模型中诱导推理能力。
有趣的是,结果表明,对于较小的模型,蒸馏比纯强化学习更有效。这与以下观点相符:单靠强化学习可能不足以在这种规模的模型中诱导出强大的推理能力,而使用高质量推理数据进行随机场推理 (SFT) 则可能在处理小型模型时成为一种更有效的策略。
4.5 总结
在本节中,我们探讨了构建和改进推理模型的四种不同策略:
-
推理时间扩展无需额外训练,但会增加推理成本,随着用户数量或查询量的增长,大规模部署的成本也会更高。尽管如此,对于提升原本就很强大的模型的性能来说,这仍然是一个显而易见的选择。我强烈怀疑 o1 利用了推理时间扩展,这有助于解释为什么它比 DeepSeek-R1 的单位 token 成本更高。
-
纯强化学习在研究方面很有意思,因为它能洞察推理作为一种新兴行为。然而,在实际的模型开发中,强化学习 + 弹性预测模型 (SFT) 才是首选方法,因为它能构建更强大的推理模型。我强烈怀疑 o1 也是用 RL + SFT 训练的。更准确地说,我认为 o1 的基础模型比 DeepSeek-R1 更弱、更小,但通过 RL + SFT 和推理时间扩展弥补了这一缺陷。
-
如上所述,RL + SFT 是构建高性能推理模型的关键方法。DeepSeek-R1 是一个很好的蓝图,展示了如何实现这一点。
-
蒸馏是一种颇具吸引力的方法,尤其是在创建更小、更高效的模型时。然而,蒸馏的局限性在于它无法推动创新,也无法产生下一代推理模型。例如,蒸馏总是依赖于现有的、更强大的模型来生成监督微调 (SFT) 数据。
5. 如何在有限的预算下开发推理模型
开发一个 DeepSeek-R1 级别的推理模型可能需要数十万甚至数百万美元,即使从像 DeepSeek-V3 这样的开放权重基础模型开始也如此。这对于预算有限的研究人员或工程师来说,可能会令人望而却步。
5.1 蒸馏可以发挥很大作用
幸运的是,模型蒸馏提供了一种更具成本效益的替代方案。DeepSeek 团队通过他们的 R1 蒸馏模型证明了这一点,尽管模型规模远小于 DeepSeek-R1,但却实现了令人惊讶的强大推理性能。然而,即使是这种方法也并非完全便宜。他们的蒸馏过程使用了 80 万个 SFT 样本,这需要大量的计算。
有趣的是,就在DeepSeek-R1发布的几天前,我偶然看到了一篇关于Sky-T1的文章(https://novasky-ai.github.io/posts/sky-t1/)。这是一个引人入胜的项目,一个小团队仅使用17000个 SFT 样本训练了一个开放权重的 32B 模型。总成本是多少?只需450美元,比大多数 AI 会议的注册费还低。
虽然大规模训练仍然昂贵,但规模较小、有针对性的微调工作仍然可以以极低的成本产生令人印象深刻的结果。
根据他们的基准测试,Sky-T1 的表现与 o1 大致相当,考虑到其低廉的训练成本,这一表现令人印象深刻
5.2 预算有限的纯强化学习
虽然 Sky-T1 专注于模型蒸馏,但我也发现了一些“纯强化学习”领域的有趣工作。其中一个值得注意的例子是 TinyZero(https://github.com/Jiayi-Pan/TinyZero/) ,它是一个 3B 参数模型,复制了 DeepSeek-R1-Zero 的方法(附注:它的训练成本不到 30 美元)。
令人惊讶的是,即使只有 3B 个参数,TinyZero 也表现出一些新兴的自我验证能力,这支持了推理可以通过纯 RL 出现的想法,即使在小模型中也是如此。
上述两个项目表明,即使预算有限,在推理模型方面也能开展一些有趣的工作。虽然这两种方法都复制了 DeepSeek-R1 的方法,但其中一个专注于纯强化学习 (TinyZero),另一个专注于纯弹性函数 (Sky-T1),探索如何进一步扩展这些想法将会非常有趣。
5.3 超越传统SFT:旅程学习(Journey Learning)
论文《O1 Replication Journey: A Strategic Progress Report – Part 1.》(https://arxiv.org/abs/2410.18982)介绍了一种改进蒸馏(纯 SFT)工艺的另一种方法。
论文的核心思想是用“旅程学习”来替代“捷径学习”。
捷径学习是指指令微调中的传统方法,其中仅使用正确的解决方案路径来训练模型。
另一方面,旅程学习也包括错误的解决路径,让模型从错误中学习。
这种方法与 TinyZero 在纯强化学习训练中观察到的自我验证能力有些相似,但它专注于完全通过 SFT 来改进模型。通过让模型接触错误的推理路径及其修正,旅程学习或许还能增强自我修正能力,从而有可能通过这种方式提高推理模型的可靠性。
这可能是未来工作的一个令人兴奋的方向,特别是对于低预算推理模型开发,其中基于 RL 的方法在计算上可能不切实际。
参考
[1] https://magazine.sebastianraschka.com/p/understanding-reasoning-llms