摘要:这些推理步骤将过程分解为更小的、结构化的推理,所以更粗白的讲,这类模型与其是学习“回答什么”不如是学习“如何”回答。
1、什么是推理大模型reasoning LLMs
与普通大语言模型相比,推理型大语言模型倾向于在回答问题之前将问题分解为更小的步骤(通常称为推理步骤或思维过程)。
这些推理步骤将过程分解为更小的、结构化的推理,所以更粗白的讲,这类模型与其是学习“回答什么”不如是学习“如何”回答。
2、什么是训练时间计算?train-time compute
到2024年上半年,为了提高LLM在预训练过程中的性能,开发人员通常会增加以下大小:模型(参数数量)、数据集(标记数量)、计算( FLOP数量)
训练时计算可能包括训练期间和微调期间所需的计算。
3、什么是缩放定律Scaling Laws
通过各种缩放定律来研究模型的规模(通过计算、数据集大小和模型大小)与模型性能之间的关系。
这就就是所谓的“幂律”,其中一个变量(例如计算)的增加会导致另一个变量(例如性能)的比例变化。
可以通过更长的训练、数据集大小和参数大小来提高模型性能,必须同时扩大这三个因素才能实现最佳性能。
更进一步的,Kaplan缩放定律指出,缩放模型大小通常比缩放数据更有效(给定固定计算)。相比之下,Chinchilla 缩放定律表明模型大小和数据同样重要。
然而,在整个2024年,计算、数据集大小和模型参数稳步增长,但收益却呈现递减趋势。
随着规模的扩大,收益会递减。这就引出了一个问题:“我们陷入困境了吗?”
4、什么是测试时计算?test-time Compute
增加训练时间计算的成本昂贵性导致人们对另一个焦点,即测试时间计算产生兴趣。测试时间计算不是不断增加预训练预算,而是允许模式在推理过程中“思考更长时间” 。
对于非推理模型,它通常只会输出答案并跳过任何“推理”步骤:
然而,推理模型会使用更多的标记,通过系统的“思考”过程来得出答案:
这个想法是,LLM必须花费资源(如VRAM计算)来创建答案。但是,如果所有计算都用于生成答案,那么效率就比较低,所以呢,通过预先创建包含附加信息、关系和新想法的更多标记,模型花费更多的计算来生成最终答案。
5、测试阶段的缩放定律Scaling Laws
与训练时计算相比,测试时计算的扩展规律相对较新,将测试时计算扩展与训练时计算联系起来。
首先,OpenAI 的一篇文章展示了测试时间计算实际上可能遵循与扩展训练时间计算相同的趋势。
另一个文章是“用棋盘游戏扩展缩放定律”(Scaling Scaling Laws with Board Games),探索AlphaZero并训练它进行不同程度的计算来玩Hex。结果表明,训练时间计算和测试时间计算紧密相关。每条虚线都展示了特定ELO分数所需的最低计算量。
随着测试时间计算(如训练时间计算)的扩展,正在发生范式转变,转向使用更多测试时间计算的“推理”模型。
通过这种范式转变,这些“推理”模型不再单纯关注训练时间计算(预训练和微调),而是在训练和推理之间取得平衡。
测试时间计算甚至可以延长:
6、测试时间计算具体怎么实现,类别有哪些?DeepSeek R-1和OpenAI o1等推理模型的巨大成功表明,除了简单地“更长远”的思考之外,还有更多的技术,例如,测试时计算可以是很多不同的东西,包括思路链、修改答案、回溯、采样等等。
这些可以大致分为两类:一个是针对验证者进行搜索Search against Verifiers(抽样生成并选择最佳答案) 一个是修改提议分布Modifying Proposal Distribution(训练“思考”过程)
针对验证者的搜索是以输出为中心的,而修改提议分布是以输入为中心的。
但这几种,其实都是需要打分奖励的,有两种类型的验证器,一个是结果奖励模型(ORM),一个是流程奖励模型(PRM),ORM只判断结果,并不关心底层过程:
相比之下,PRM还会判断导致结果的过程(“推理”):
一个更为直观的推理步骤例子如下:
其中的步骤2是一个推理能力较差的步骤,PRM 对其评分很低。
在了解ORM与PRM后,可以探索如何将它们应用于各种验证技术。
一个是根据验证者搜索Search against Verifiers
测试时计算的第一个主要类别是针对验证器进行搜索。这通常涉及两个步骤。
首先,创建多个推理过程和答案的样本。其次,验证者(奖励模型)对生成的输出进行评分。
验证者通常是LLM,用于判断结果(ORM)或过程(PRM)。使用验证器的一个主要优点是不需要重新训练或微调用于回答问题的LLM。
可以细分为以下几种子类别:
1)多数表决,也就是投票Majority Voting
最直接的方法其实不是使用奖励模型或验证器,而是进行多数投票。让模型生成多个答案,生成次数最多的答案将作为最终答案。
这种方法也称为自洽,以强调生成多个答案和推理步骤的必要性。
2)最佳N样本Best-of-N samples
第一种涉及验证器的方法称为 Best-of-N 样本。此技术生成 N 个样本,然后使用验证器(结果奖励模型)判断每个答案:
首先,LLM(通常称为提议者)使用高温或变化的温度生成多个答案。
其次,每个答案都会经过输出奖励模型 (ORM),并根据答案的质量进行评分。得分最高的答案将被选中:
除了判断答案之外,推理过程还可以通过过程奖励模型(PRM) 来判断,该模型会判断每个推理步骤的质量。会选择总权重最高的候选答案。
对于这两种验证器类型,我们还可以通过 RM 对每个答案候选者进行加权,并选出总权重最高的答案。这称为加权 Best-of-N 样本:
3)是使用过程奖励模型进行集束搜索Beam search with process reward models
生成答案和中间步骤的过程可以通过定向搜索进一步扩展。使用定向搜索,可以抽取多个推理步骤,每个步骤都由PRM进行判断(类似于思维树7)。整个过程都会跟踪排名前3位的“beams”(得分最高的路径)。
这种方法可以快速停止那些没有结果的“推理”路径(PRM 评分较低)。
然后使用我们之前探索过的 Best-of-N 方法对得到的答案进行加权。
4)蒙特卡洛树搜索Monte Carlo Tree Search
使树搜索更加有效的一种重要技术是蒙特卡洛树搜索。它包括四个步骤:选择(根据预先确定的公式选择给定的叶子)->扩展(创建更多节点)->推出(随机创建新节点,直到到达终点)->反向传播(根据输出更新父节点分数),这些步骤的主要目标是不断扩展最佳推理步骤,同时探索其他路径。
因此,这是探索与利用之间的平衡。节点评分和选择方式的示例如下:
当选择一个新的推理步骤进行探索时,它不一定是迄今为止表现最佳的路径。使用这种类型的公式,首先选择一个节点(推理步骤),然后通过生成新的推理步骤来扩展它。和以前一样,这可以通过合理高且变化的温度值来完成:
选择其中一个扩展推理步骤,并进行多次,直到得出多个答案。
这些举措可以根据推理步骤(PRM)、奖励(ORM)或两者的结合来判断。父节点的分数被更新(反向传播),我们可以从选择开始重新开始该过程。
另一个是,修改提议分布Modifying Proposal Distribution
这种方式的模型不再使用验证器(以输出为中心)搜索正确的推理步骤,而是经过训练以创建改进的推理步骤(以输入为中心),换句话说,对完成/想法/标记进行采样的分布被修改了。
假设有一个问题和一个分布,我们可以从中抽取 token。一个常见的策略是获取得分最高的 token:
但是,请注意上图中的某些标记被标记为红色。这些标记更有可能引发推理过程:
虽然选择贪婪token不一定是错误的,但选择一个引发推理过程的令牌往往会得到更好的答案。当修改提议分布(标记概率分布)时,本质上是让模型对分布进行重新排序,以便更频繁地选择“推理”标记:
修改提案分布的方法有很多种,但一般可以分为两类,通过提示工程更新提示或者训练模型以关注推理标记/过程。
1)提示Prompting
通过提示工程,尝试通过更新提示来改进输出。
为了通过提示改变提议分布,可以向模型提供示例(上下文学习),模型必须遵循这些示例才能产生类似推理的行为:
这个过程可以进一步简化,只需说“让我们一步一步思考”( “Let’s think step-by-step”)。同样,这也改变了提案的分布,使得LLM 倾向于在回答之前分解整个过程:
然而,模型本身并没有学会遵循这个过程。此外,这是一个静态的线性过程,会阻碍自我完善。如果模型以错误的推理过程开始,它往往会保留它,而不是修改它。
2)STaR
除了提示之外,还可以通过训练让模型学会“推理”,这样模型在生成这些推理步骤时就会得到奖励。这通常需要大量推理数据和强化学习来奖励某些行为。
一种备受争议的技术被称为STaR,即自学推理机。STaR是一种利用LLM生成自身推理数据作为微调模型的输入的方法。
在第一步 (1) 中,它会生成推理步骤和答案。如果答案正确 (2a),则将推理和答案添加到三元组训练数据集 (3b)。此数据用于对模型进行监督微调(5):
然而,如果模型给出了错误的答案(2b),那么我们会提供一个“提示”(正确答案),并要求模型推理为什么这个答案是正确的(4b)。最后的推理步骤是添加相同的三元组训练数据,用于对模型进行监督微调(5):
这里的一个关键要素(以及修改提议分布的许多其他技术)是明确训练模型以遵循推理过程。换句话说,通过需要监督微调来决定推理过程应该如何进行。整个流程非常有趣,因为它本质上生成了合成训练示例。可以使用使用合成训练示例,也可以在其他模型中提炼这种推理过程。
推理模型的一个重要版本是DeepSeek-R1 ,这是一个开源模型,其权重可用。与OpenAI o1推理模型直接竞争,DeepSeek-R1对该领域产生了重大影响。
这类模型没有验证者参与,并且不是使用监督微调来提炼推理行为,而是重点关注强化学习。
推动 DeepSeek-R1的一个重大突破是名为DeepSeek-R1 Zero的实验模型。从DeepSeek-V3-Base开始,不再对一堆推理数据进行监督微调,而是仅使用强化学习(RL)来实现推理行为。
为此,从一个非常简单的提示(类似于系统提示)开始,以便在pipeline中使用:
请注意,推理过程应该在标签之间进行,但没有具体说明推理过程应该是什么样子。
在强化学习过程中,创建了两个特定的基于规则的奖励:准确度奖励——通过测试答案来奖励。格式化奖励——使用和标签的奖励。
此过程中使用的RL算法称为组相对策略优化 (GRPO)。该算法背后的直觉是,它使导致正确或错误答案的所有选择更有可能或更不可能。这些选择既可以是标记集,也可以是推理步骤 。
有趣的是,没有给出流程应该是什么样子的示例,只是指出它应该使用标签,仅此而已。
通过提供与思维链行为相关的间接奖励,模型自行学习到,推理过程越长、越复杂,答案就越有可能正确。
上面这个图来自“ DeepSeek-R1,通过强化学习激励LLM 中的推理能力”。通过使用间接RL 奖励,该模型可以通过不断增加的推理步骤自由探索最优的类似思维链的行为。
该图尤其重要,强化了从训练时计算到测试时计算的范式转变。由于这些模型会生成更长的思维序列,因此它们会专注于测试时计算。
通过这个训练流程,发现模型可以自行发现最优的思维链式行为,包括自我反省和自我验证等高级推理能力。然而,它仍然有一个明显的缺点。它的可读性很差,所以探索了一种替代方案,即现在众所周知的DeepSeekR1 。
为了创建 DeepSeek-R1,才用了五个步骤:冷启动->面向推理的强化学习->拒绝取样->监督微调->适用于所有场景的强化学习。
在冷启动解读那,使用小型高质量推理数据集(≈5,000个token)对 DeepSeek-V3-Base 进行微调。这样做是为了防止冷启动问题导致可读性差。
在面向推理的强化学习中,使用与训练 DeepSeek-V3-Zero 类似的 RL 过程训练生成的模型。但是,添加了另一个奖励措施以确保目标语言保持一致。
在拒绝取样中,利用得到的强化学习模型生成合成推理数据,供后续监督微调使用。通过拒绝采样(基于规则的奖励)和奖励模型(DeepSeek-V3-Base),生成了60万个高质量推理样本。
另外,利用DeepSeek-V3和部分训练数据,创建了20万个非推理样本。
在监督微调中,使用得到的800,000个样本的数据集对DeepSeek-V3-Base模型进行监督微调。
在适用于所有场景的强化学习中,使用与DeepSeek-R1-Zero中类似的方法对生成的模型进行基于 RL的训练。为了符合人类的偏好,添加了额外的奖励信号,重点关注有用性和无害性。该模型还被要求总结推理过程以防止可读性问题。
因此,这意味着DeepSeek-R1实际上是通过监督微调和强化学习对DeepSeek-V3-Base进行的微调,大部分工作是确保生成高质量的样本
但是,问题又来了,DeepSeek-R1是一个拥有 671B参数的庞大模型。不幸的是,这意味着在消费级硬件上运行这样的模型会很困难。所以可以将DeepSeek-R1的推理质量提炼到其他模型中的方法,例如Qwen-32B,这样可以在消费级硬件上运行它。
为此,这就是蒸馏,使用DeepSeek-R1作为教师模型,使用较小的模型作为学生模型。两个模型都会收到提示,并且必须生成一个token概率分布。在训练期间,学生模型将尝试紧密遵循教师模型的分布。(这块其实是存疑的,也可能是直接用数据进行微调,而不是软标签。),这一过程使用了800,000个高质量样本
但其中也有一些失败的尝试,DeepSeek 也尝试过过程奖励模型(PRM) 和蒙特卡洛树搜索(MCTS)技术来灌输推理,但没有成功。
例如,使用MCTS,遇到了搜索空间过大的问题,不得不限制节点扩展。此外,训练细粒度的奖励模型本身就很困难。
使用Best-of-N技术的PRM时,遇到了计算开销问题,需要不断重新训练奖励模型以防止奖励攻击。
1、https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-reasoning-llms
来源:正正杂说