- 作者:老汪软件技巧
- 发表时间:2024-10-12 10:03
- 浏览量:
OpenAI的O-1出现前,其实就有已经有大佬开始分析后面OpenAI的技术路线,其中一个方向就是从Pretrain-scaling,Post-Train-scaling向Inference Scaling的转变,这一章我们挑3篇inference-scaling相关的论文来聊聊,前两篇分别从聚合策略和搜索策略来优化广度推理,最后一篇全面的分析了各类广度深度推理策略的最优使用方案。
广度打分策略
第一篇论文的出发点比较简单,简单说就是论证Inference Ensemble是否有效,既让模型多次回答同一个问题,再通过voting或filter-voting等不同的ensemble打分策略对答案进行投票,分析对回答准确率的影响。这里filter vote借助以下LLM prompt对推理得到的答案进行筛选再做major votte
[User Question]: {query}
[Answer]:{answer}
Instruction: Review your previous answer and find problems with your answer. Finally, conclude with either ’[[correct]]’ if the above answer is correct or ’[[wrong]]’ if it is incorrect. Think step by step.
Verdict:
论文在MMLU和QA等有标准答案的数据集上进行了测试,结果得到了下图非单调的曲线,会发现随着推理次数的上升,不论是vote还是filter vote的回答准确率都是非单调的,其中vote会先上升在下降,filter vote的表现在不同数据集上存在差异。这里我们就看下major vote,毕竟filter vote又引入一步模型推理所以其实有两层变量。
回到了最熟悉的data analysis领域,U-Shape,∩-shape模式多数情况下都是因为数据中存在多个表现各异的分组,有的组内指标先上升后稳定,有的组内指标稳定下降,多个小组的指标汇总后就会出现,先升后降或者先降后升的模式。所以这种U-Shape,∩-shape模式的解决思路就是寻找那个可以显著区分指标走势的confounder变量。
论文定位到的confounder变量是Query难度,使用一个问题最终能否被回答作为衡量这个问题难度的定义。其实个人认为不是query难度,而是该问题在模型内化知识空间中对的答案和错的答案本身的概率分布,当模型更高的概率得到正确答案时,更多的LLM推理和major vote才能生效。所以随着推理次数增加简单问题的回答准确率先上升后趋于平稳,而复杂问题的准确率持续下降,合并起来就出现了先升后降的趋势。
第一篇论文其实是用来做个首尾呼应,这里论文发现了Query难度会影响推理打分策略的效果,和后面谷歌的推理策略最优化不谋而合。
广度搜索策略
广度推理策略,其实包含两个部分一个是如何生成推理链路(搜索策略),一个是如何对推理链路进行打分
前面一篇论文说了major vote等打分策略,但搜索策略只用了简单的多次随机推理,这里我们再看一篇对搜索策略进行优化的论文REBEASE。论文采用了树形搜索,在搜索逻辑上REBEASE和TOT相似,通过实验提供了推理准确率和推理成本之间balance的一些insight。
树形搜索的流程如下,
在MATH和GSM8k数据集上,论文使用PRM数据集微调了Llemma-34B模型作为Reward模型,分别使用在MeatMath数据集上微调过的Mistral-7B,llema-7B,Llema-34B作为推理模型,以下是REBEASE和其他广度搜索策略,以及不考虑Budget的属性搜索策略的效果对比
效果上,相同的推理错误率,使用REBEASE搜索策略,相比随机采样和MCTS需要更低的推理成本,并且随错误率降低,推理量级的上升幅度相比其他策略更低。
同时在同一个模型系列中,相同错误率下,使用推理广度或者树形搜索策略,7B模型相比34B所需的推理成本更低。 这里的观点就很有意思了也就是小模型通过更优的推理策略,是有可能用更低的成本达到大模型的效果的,这个观点在后面谷歌的论文中得到了更全面细致的论证。
全面分析:Test Time Scaling
如果说前两篇论文各自选了推理策略中的一个方向去做优化和分析,那谷歌的这篇论文就是一网打尽式的把各个推理策略和优化方向都全面考虑在内,给出了一个综合的推理策略选择最优方案。论文的目标就是回答在给定prompt和推理budget的前提下如何选择最优的推理策略, 以及该推理策略对推理效果的提升,是否比直接换个大模型要来的更显著?
论文提出优化推理效果,本质上是调整模型推理的token分布,一种是让模型自我调整,例如通过RL对齐让模型生成中间推理过程(STaR),也可以让模型通过自我优化,对推理结果给出优化建议并针对建议进行优化,论文称之为“Proposal”。另一种就是面向一个打分模型进行搜索优化,论文称之为“Verifier”。我理解其实前者的本质就是深度策略(例如self-refine,self-critique,self-reflection),而后者的本质广度策略(例如best-of-n)。
论文提出以上不同的策略适配不同难度的问题,那第一步就是对问题的难度进行分类,这里论文使用MATH数据集,使用基座模型对每个样本生成2048个推理结果,然后使用打分模型评估这些推理结果是否正确,对正确率进行分桶,总共分成5个桶,代表不同的难度分层。有了难度分类,下面我们分别看下优化Verifier和Proposal的效果
Verifier
Verifier依赖打分模型,所以首先是PRM模型的训练,不熟悉PRM的可以先读这篇解密prompt系列34. RLHF之训练另辟蹊径:循序渐进 & 青出于蓝。这里论文参考了MATH-SHEPHERD的全自动标注方案,通过对同一个问题生成多个推理过程,过程中的每个节点,都使用该节点通向正确答案的概率作为该节点的标签来训练PRM模型。
至于如何使用PRM来优化推理,其实包含两个步骤:多个推理链路的搜索生成,以及对多个链路打分投票得到最终答案。
先说推理链路的搜索策略,这里论文尝试了三种方案包含简单广度搜索和树形搜索,分别是
再来说下打分投票策略,以上不同的搜索策略都会得到N个推理链路,论文对每个推理链路进行整体打分,这里没有使用多个步骤的PRM打分聚合而是直接使用了最后一个节点的PRM打分作为整个推理链路的得分。得到打分后,使用weighted best-of-n来得到最终答案,也就是对每个答案计算所有得到该答案的推理链路的总分,得分最高的答案作为最终答案。
不同策略的效果对比能得到以下几个结论
一言以蔽之问题越简单搜索策略越简单,推理资源越多搜索策略越简单
Proposal
Proposal依赖模型自我反思优化的能力,所以首先是训练Revision模型,论文参考了RISE的方案,只不过采用了离线构建多轮回答的方案。论文对每个样本独立采样64次,从中把正确的回答和0-4个错误的回答(随机采样)进行配对,把错误回答作为上文,正确回答作为最终的回答构建多轮对话作为训练数据。
配对过程选用了编辑距离来挑选和正确回答最相近的错误回答,帮助模型更容易找到正确和错误之间的关联性,真的是去学习从错误中定位原因进行优化,而非跳过错误的上文,直接去尝试生成正确答案。然后使用以上样本对模型进行微调。
但以上的样本存在bias,也就是上文只有错误答案,最终的推理答案都和上文不同,而真正在推理过程中使用多个结果作为上文,其中是可能存在正确答案的,也就是有可能模型会把正确答案给改成错误答案。因此论文选择把revision和verifier进行结合,也就是使用打分模型从revision序列生成的多个推理结果中选择最正确的。
效果上论文发现,在不同的推理budget下,同样是N个推理链路,revision深度搜索的效果都要优于parallel广度搜索。但论文认为本质上两种策略应该在不同场景中各有优劣,广度策略更善于全局搜索,而深度策略依赖最开始已经选择了正确的方向然后进行持续的局部优化。因此论文尝试把广度策略和深度策略进行合并,并寻找最优的合并比例,给定budget多少用来做深度搜索,多少做广度搜索。
论文认为在不同的budget和问题难度下应该存在广度和深度策略的最优ratio,老实说下图的趋势并不是非常的明显,能推理出的结论有
最后还有一个问题没有回答就是推理效果提升和预训练之间的balance,直接上图,具体数据不是很重要因为和模型以及数据集都相关,所以只说下insight
想看更全的大模型相关论文梳理·微调及预训练数据和框架·AIGC应用,移步Github >> DecryPrompt