DeepSeek-R1[1]、OpenAI o3-mini[2]和Google Gemini 2.0 Flash Thinking[3]完美展示了LLM如何通过“推理“框架突破性能极限。
这标志着一个重大转变:从扩展训练时算力到扩展推理时算力。
本文包含40多张独特的可视化图表,带你深入探索推理型大语言模型、测试时计算,以及DeepSeek-R1的技术细节。我们将逐一剖析相关概念,帮助你理解这个范式转变。
欢迎查看我们编写的大语言模型专著,了解更多LLM相关的可视化内容,同时支持这份周报!
另外,如果你读过这本书,能在*亚马逊[4]*留下简短评价就再好不过了 — 这对我们作者来说意义重大!
与传统大语言模型相比,推理型LLM在回答问题前,往往会将问题分解成若干个小步骤(通常称为推理步骤或思维过程)。
那么“思维过程“、“推理步骤“或“思维链“到底是什么意思?
虽然我们可以对LLM是否真的能像人类一样思考进行哲学探讨1[5],但这些推理步骤实际上是将整个过程分解成更小的、结构化的推理单元。
换句话说,LLM不再是学习“该回答什么“,而是学习“如何去回答“!
要理解推理型LLM是如何构建的,我们首先要探讨从注重训练(训练阶段计算)到推理(测试阶段计算)的范式转变。
到2024年上半年为止,开发者为了提升LLM在预训练阶段的性能,通常会增加以下要素的规模:
模型(参数数量)
数据集(token数量)
算力(FLOPs数量)
这些要素统称为训练阶段计算,体现了预训练数据是“AI的化石燃料“这一理念。简而言之,预训练预算越大,最终得到的模型就会越好。
训练阶段的计算量包括模型训练期间和微调过程中所需的全部计算资源。
它们一直是提升LLM性能的主要研究方向。
通过各种扩展定律,研究人员探索了模型规模(包括算力、数据集大小和模型参数量)与模型性能之间的关联性。
这些被称为“幂律“,即一个变量(如算力)的增加会导致另一个变量(如性能)产生相应的比例变化。
这些关系通常以对数-对数坐标展示(呈现为一条直线),以便更直观地展示算力的巨大增长。
最广为人知的是“Kaplan“2[6]和“Chinchilla“3[7]缩放定律。这些定律基本表明,模型性能会随着计算量、token数量和参数量的增加而提升。
“神经语言模型的缩放规律[8]“论文的注释图。该图展示了性能如何随不同计算因素(更长训练时间、数据集规模和参数规模)的增加而提升。
研究表明,要获得最佳性能,这三个因素必须协同扩展。
Kaplan缩放定律指出,在计算资源固定的情况下,扩大模型规模通常比扩大数据规模更有效。相比之下,Chinchilla缩放定律则认为模型规模和数据规模同等重要。
然而,纵观2024年,尽管计算资源、数据集规模和模型参数持续增长,但收益增长却呈现边际递减趋势。
就像这些幂律一样,规模扩大时会遇到收益递减。
这就引出了一个问题:
“我们是否已经触及天花板?”
由于增加训练时计算成本高昂,研究人员开始将注意力转向另一个方向:推理时计算。
与不断增加预训练预算不同,推理时计算允许模型在推理阶段进行“更长时间的思考“。
对于非推理型模型,它通常只会直接输出答案,跳过所有“推理“步骤:
而推理型模型则会使用更多token来通过系统化的“思考“过程得出答案:
LLM需要消耗资源(如显存和算力)来生成答案。但如果所有算力都用在生成最终答案上,这种方式其实并不高效!
相反,通过预先生成更多包含额外信息、关联性和新思路的token,模型可以将更多算力投入到最终答案的生成中。
相比训练时的计算量规模法则,推理时的计算量规模法则研究相对较新。值得注意的是,有两个重要来源揭示了推理计算量与训练计算量之间的关系。
首先是 OpenAI 的一篇文章[9],展示了推理时的计算量可能实际上遵循与训练计算量相同的发展趋势。
摘自“Learning to reason with LLMs[9]“的注释图。添加的红色虚线用于展示 OpenAI 提出的新范式可能是测试时计算。
据此,他们认为,由于这仍是一个新兴领域,可能会出现向扩展测试时计算的范式转变。
其次,一篇名为“Scaling Scaling Laws with Board Games“4[10]的有趣论文探讨了 AlphaZero 在不同计算资源下学习六边棋的表现。
研究结果表明,训练时计算和测试时计算之间存在紧密关联。每条虚线都标示出达到特定 ELO 分数所需的最低计算量。
测试时计算与训练时计算呈现相似的扩展特性,这标志着“推理“模型正在向更多测试时计算的方向发生范式转变。
在这一范式转变中,这些“推理型“模型不再仅仅关注训练时计算(预训练和微调),而是在训练和推理之间取得平衡。
测试时的计算量甚至可以随长度扩展:
深入探讨DeepSeek-R1时,我们还会研究长度扩展这个课题!
DeepSeek R-1和OpenAI o1等推理模型的巨大成功表明,除了简单地“思考更久“之外,还有更多技术可以探索。
正如我们将要探讨的,测试时计算可以包含多种形式,包括思维链、答案修正、回溯、采样等等。
这些技术大致可以分为两类5[11]:
验证器搜索(生成多个采样并选择最佳答案)
修改提议分布(经过训练的“思考“过程)
因此,对验证器的搜索是以输出为导向的,而修改提议分布则是以输入为导向的。
我们将探讨两种验证器:
结果奖励模型(ORM)
过程奖励模型(PRM)
顾名思义,ORM只关注最终结果,不考虑背后的过程:
相比之下,PRM不仅评判结果,还会考察达成结果的过程(即“推理过程“):
让我们来更清晰地说明这些推理步骤:
注意第2步是个质量较差的推理步骤,因此在PRM评分中得分较低!
现在你已经很好地理解了ORM和PRM的区别,让我们来探索一下如何在各种验证技术中应用它们!
第一个主要的测试时计算类别是针对验证器进行搜索。这通常包含两个步骤。
首先,生成多个推理过程和答案样本。
其次,由验证器(奖励模型)对生成的输出进行评分
验证器通常是一个经过微调的 LLM,可以用来评判结果(ORM)或过程(PRM)。
使用验证器的一大优势在于,无需重新训练或微调用于回答问题的 LLM。
实际上最直接的方法并不是使用奖励模型或验证器,而是采用多数投票制。
我们让模型生成多个答案,最常生成的答案将作为最终答案。
这种方法也被称为自洽性6[12],用于强调生成多个答案和推理步骤的必要性。
第一种涉及验证器的方法叫做最优N样本。这种技术会生成N个样本,然后使用验证器(结果奖励模型)来评判每个答案:
首先,LLM(通常被称为生成器)会通过设置高温度或变化的温度来生成多个答案。
接着,每个答案都会通过输出奖励模型(ORM)进行评分,以衡量答案的质量。最终会选择得分最高的答案:
与其直接评判答案,我们也可以通过推理过程奖励模型(Process Reward Model,PRM)来评估每个推理步骤的质量。该模型会选择总权重最高的候选项。
这两种验证器类型都可以用RM对每个候选答案进行加权,并选择总分最高的答案。这种方法被称为加权N选最优采样:
生成答案和中间步骤的过程还可以通过束搜索进一步扩展。在束搜索中,系统会采样多个推理步骤,并由PRM对每一步进行评判(类似于思维树7[13])。整个过程中会持续跟踪得分最高的3条“路径“。
这种方法能够快速终止那些不太有价值的“推理“路径(即被PRM评分较低的路径)。
最终的答案会通过我们之前探讨过的Best-of-N方法进行加权处理。
蒙特卡洛树搜索(Monte Carlo Tree Search)是一种让树搜索更高效的绝佳技术。它包含四个步骤:
选择(根据预设公式选择特定叶节点)
扩展(生成额外节点)
模拟(随机创建新节点直至达到终点)
反向传播(根据输出更新父节点得分)
这些步骤的主要目标是在扩展最佳推理路径的同时,也要探索其他可能的方向。
这实际上是在探索和利用之间寻找平衡。以下是节点评分和选择的示例:
因此,在选择新的推理步骤时,我们并不一定要选择当前表现最好的路径。
采用这种公式,我们首先选择一个节点(推理步骤),然后通过生成新的推理步骤来扩展它。和之前一样,这可以通过设置较高且多变的temperature值来实现:
从扩展的推理步骤中选择一个,并多次展开直至得出多个答案。
这些展开结果可以基于推理步骤(PRM)、奖励值(ORM)或两者的组合来评判。
父节点的分数会被更新(反向传播),然后我们可以从选择步骤重新开始这个过程。
第二类提升LLM推理能力的方法称为“修改提议分布“。与使用验证器搜索正确推理步骤(以输出为中心)不同,这种方法通过训练模型来生成更优质的推理步骤(以输入为中心)。
换句话说,这种方法修改了用于采样补全内容/思考过程/词元的概率分布。
设想我们有一个问题和一个可以用来采样词元的分布。常见的策略是选择得分最高的词元:
不过,请注意上图中某些标记呈现红色。这些标记更有可能引导出推理过程:
虽然选择贪婪标记并非完全错误,但选择那些能够引导推理过程的标记往往能产生更优质的答案。
当我们修改候选分布(词元概率分布)时,实际上是在让模型重新排序,使“推理“类词元被更频繁地选中:
修改候选分布的方法多种多样,但总的来说可以分为两大类:
通过提示工程来优化提示词
通过训练让模型更关注推理类词元/过程
通过提示词工程,我们试图通过更新提示来改进输出。这个过程也可能促使模型展示我们之前看到的一些推理过程。
为了通过提示来改变建议分布,我们可以向模型提供必须遵循的示例(上下文学习),以生成类似推理的行为:
这个过程可以通过简单地说“让我们一步一步思考“来进一步简化8[14]。同样,这种方式改变了概率分布,使得LLM倾向于在给出答案之前先分解解题过程:
不过,模型并未从根本上学会遵循这个流程。而且,这是一个静态且线性的过程,限制了自我修正的能力。如果模型一开始采用了错误的推理路径,往往会沿着这个方向继续,而不是及时纠正。
除了提示词之外,我们还可以通过训练模型进行“推理“,让它在生成这些推理步骤时得到奖励。这通常需要大量的推理数据和强化学习来奖励特定行为。
一个备受争议的技术是 STaR(自我教学推理器)9[15]。STaR 是一种利用 LLM 生成自己的推理数据作为模型微调输入的方法。
在第一步(1)中,它会生成推理步骤和答案。如果答案正确(2a),则将推理和答案添加到三元组训练数据集中(3b)。这些数据用于对模型进行监督式微调(5):
如果模型给出了错误答案(2b),我们就会提供一个“提示“(正确答案),并要求模型推理为什么这个答案是正确的(4b)。最后一步是将这些数据添加到用于模型监督微调的三元组训练数据中(5):
这里的一个关键要素(与其他多种修改提议分布的技术一样)在于我们明确地训练模型去遵循我们展示给它的推理过程。
换句话说,我们通过有监督微调来决定推理过程应该如何进行。
整个流程非常有趣,因为它本质上是在生成合成训练样本。使用合成训练样本(正如我们将在DeepSeek R-1中探讨的)也是将这种推理过程蒸馏到其他模型中的一种强大方法。
在推理模型领域中的一个重大突破是DeepSeek-R1,这是一个开源模型,其权重是公开可用的10[16]。作为OpenAI o1推理模型的直接竞争对手,DeepSeek-R1在这个领域产生了重大影响。
DeepSeek通过多种技巧,成功地将推理能力优雅地融入其基础模型(DeepSeek-V3-Base)中。
有趣的是,他们没有使用验证器,也没有通过监督式微调来灌输推理行为,而是将重点放在了强化学习上。
让我们一起来看看他们是如何训练模型的推理行为的!
DeepSeek-R1 Zero这个实验性模型是通向DeepSeek-R1的重大突破。
从DeepSeek-V3-Base开始,他们没有在大量推理数据上进行监督式微调,而是仅仅使用强化学习(RL)来实现推理行为。
为此,他们在流程中使用了一个非常直接的提示语(类似系统提示):
请注意,他们明确要求推理过程应放在
在强化学习过程中,开发了两种特定的规则奖励机制:
准确度奖励 - 通过测试来奖励答案的正确性。
格式奖励 - 奖励使用
这个过程中使用的强化学习算法被称为群组相对策略优化(GRPO)11[17]。该算法的核心思想是调整导致正确或错误答案的所有选择的概率。这些选择既包括词组token的选择,也包括推理步骤。
有趣的是,关于
通过提供这些与思维链相关的间接奖励,模型自行学习到:推理过程越长、越复杂,答案就越可能正确。
这张图特别重要,因为它强调了从训练期计算向推理期计算的范式转变。随着这些模型生成更长的思维序列,它们将重点放在了推理期计算上。
通过这个训练流程,研究人员发现模型能够自主发现最佳的思维链式行为,包括自我反思和自我验证等高级推理能力。
但这仍然存在一个显著的缺陷。它的可读性较差,且常常混杂不同语言。因此,他们探索了另一种方案,也就是现在广为人知的 DeepSeek R1。
让我们来看看他们是如何稳定推理过程的!
创建 DeepSeek-R1 时,研究团队遵循了五个步骤:
冷启动
面向推理的强化学习
拒绝采样
有监督微调
全场景强化学习
在第一步中,研究人员使用一个小规模的高质量推理数据集(约5,000个token)对 DeepSeek-V3-Base 进行微调。这样做是为了避免冷启动问题导致的可读性差的情况。
在第二步中,采用了类似训练 DeepSeek-R1-Zero 的强化学习过程来训练模型。不过,为了确保目标语言保持一致性,还额外增加了一个奖励度量指标。
在第3步中,研发团队利用经过RL训练的模型生成了用于后期监督微调的推理数据。通过拒绝采样(基于规则的奖励)和奖励模型(DeepSeek-V3-Base)的双重把关,最终筛选出60万条高质量的推理样本。
此外,他们还借助DeepSeek-V3及其部分训练数据,生成了20万条非推理样本。
在第4步中,研发团队利用这80万条样本数据集对DeepSeek-V3-Base模型进行了有监督微调。
在第5步中,团队采用了类似DeepSeek-R1-Zero的方法对模型进行强化学习训练。不过,为了更好地对齐人类偏好,他们额外引入了着重于助人性和无害性的奖励信号。
就是这样!这说明 DeepSeek-R1 实际上是通过监督微调和强化学习在 DeepSeek-V3-Base 基础上训练而成的。
最关键的工作就在于确保生成高质量的样本!
DeepSeek-R1 是一个拥有 6710 亿参数的庞大模型。遗憾的是,这意味着在消费级硬件上运行如此规模的模型将会非常困难。
幸运的是,研究团队探索了如何将 DeepSeek-R1 的推理能力提炼到其他模型中,比如可以在消费级硬件上运行的 Qwen-32B!
在这个过程中,他们将 DeepSeek-R1 作为教师模型,将较小的模型作为学生模型。两个模型都会接收相同的提示,并生成token概率分布。在训练过程中,学生模型会努力模仿教师模型的分布。
这个提炼过程使用了我们之前看到的全部80万个高质量样本:
这些经过提炼的模型表现相当出色,因为它们不仅从80万个样本中学习,还学习了老师模型(DeepSeek-R1)的回答方式!
还记得我们之前讨论过的过程奖励模型(Process Reward Models,PRMs)和蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)吗?事实证明,DeepSeek团队也尝试过用这些技术来培养模型的推理能力,但最终并未成功。
在使用MCTS时,他们遇到了搜索空间过大的问题,不得不限制节点扩展。此外,训练一个精细的奖励模型本身就充满挑战。
在使用Best-of-N技术的PRM时,他们遇到了计算开销的问题,因为需要不断重新训练奖励模型以防止奖励欺骗。
这并不意味着这些技术无效,而是让我们深入了解了这些技术的局限性!
至此,我们关于推理型大语言模型的探索告一段落。希望这篇文章能让你更好地理解扩展测试时计算能力的潜力。
想要查看更多有关大语言模型的可视化内容,欢迎阅读我写的LLM技术书籍!
这算是对推理型大语言模型的入门介绍。如果你想深入学习,推荐以下学习资源:
Jay Alammar撰写的DeepSeek-R1图解指南[18]堪称精品之作。
这篇Hugging Face博文[19]通过一系列有趣实验,深入探讨了测试时计算规模化的问题。
推理时扩展技术探讨[20]这个视频详尽解析了常见测试时计算技术的技术细节。
#大语言模型 #推理能力 #强化学习 #测试时计算 #深度学习
及时掌握技术脉搏,深度解析行业动态,我们致力于为您提供最前沿的技术见解和实战经验。关注公众号,与技术一同成长,让我们携手探索创新的无限可能!每周精选高质量内容,用通俗易懂的方式,为您揭示技术背后的精彩故事。