为什么先看推理阶段

模型在某个任务上表现不好,很多团队第一反应是“微调一下”,或者“再多喂点数据”。这两件事都贵:要标注、要算力、要时间,做完还不一定对。

推理阶段是更便宜的切入点。不改权重、不重训,能动的只有两处:写进提示词的部分,和调用前后那层编排。

推理算力只有两种扩张方式。先分清这两者,后面八种方法就好归类了:

  • **并行采样**:同一个提示采样多次,再从结果里挑一个。批量并发跑,多采样只是多花 token 和 GPU 时间,几乎不影响延迟。
  • **串行延长**:让模型在给答案前多想一会儿。每个 token 都依赖前一个,所以想得越久,延迟越高。

树状方法把两者叠起来用,也把两边的毛病一起继承下来。

一、思维链

提示模型一步步想,把中间结果落到上下文里,后面的 token 就能引用前面的推理。这是最基础的一层,几乎零成本,也是后面大部分方法的地基。

二、多数投票

采多条推理链,返回出现次数最多的那个答案,用“多条链是否一致”替代奖励模型来打分。

它能降低方差,但对偏差毫无办法:如果模型每次都把题目看错成同一个样子,多条链会一致地错,投票只会让那个错答案更自信。

三、Best-of-N

用奖励模型给 N 个完整答案打分,取最高的那个。

这里有个反直觉的现象:真实效果好到某个点就开始往下走。因为优化压力会压向代理指标,过了峰值之后,搜索找到的是“奖励模型喜欢的答案”,而不是真正正确的答案。

四、延长思考

让模型先花一段 token 预算做内部推理。

关键在:不是越长越好。有团队专门构造过任务,发现准确率会随着推理链变长而下降——其中一类是计数题,题干里无关的数字会把模型带偏。

五、自我修正

让模型自己批改并重写答案。

在 GSM8K 上的实测结果是:GPT-3.5 修对了 7.6% 的错题,同时弄错了 8.8% 的原本正确的题,净收益为负。

这个方法真正管用的前提,是把“批改者”从模型换成编译器或测试套件——也就是有外部确定性信号可依的时候。

六、思维树

一次提出多个下一步,给它们打分,保留最好的几条,走进死胡同就回退。

七、束搜索

保留 K 条不完整的解,每一步都用过程奖励模型打分。

小预算下它比 Best-of-N 好,大预算下反而更差,原因还是同一个:搜索开始讨好打分器,而不是解决问题。

八、MCTS

沿着有希望的路往下走,展开到完整答案,把得分往回传,循环往复。

动作空间会强制限制节点展开数量,加上这个限制之后,搜索容易停在局部最优。


比记住八个方法更重要的一条结论

上面每一种方法都在做同一件事:生成候选,然后挑一个。

这意味着——挑的那个环节决定了天花板。候选生成得再多,选择器不行,结果也上不去。所以正确的顺序是:先把验证信号做出来,再去扩搜索规模。反过来做,只是花更多算力买同一个错误答案。