为什么先看推理阶段
模型在某个任务上表现不好,很多团队第一反应是“微调一下”,或者“再多喂点数据”。这两件事都贵:要标注、要算力、要时间,做完还不一定对。
推理阶段是更便宜的切入点。不改权重、不重训,能动的只有两处:写进提示词的部分,和调用前后那层编排。
推理算力只有两种扩张方式。先分清这两者,后面八种方法就好归类了:
- **并行采样**:同一个提示采样多次,再从结果里挑一个。批量并发跑,多采样只是多花 token 和 GPU 时间,几乎不影响延迟。
- **串行延长**:让模型在给答案前多想一会儿。每个 token 都依赖前一个,所以想得越久,延迟越高。
树状方法把两者叠起来用,也把两边的毛病一起继承下来。
一、思维链
提示模型一步步想,把中间结果落到上下文里,后面的 token 就能引用前面的推理。这是最基础的一层,几乎零成本,也是后面大部分方法的地基。
二、多数投票
采多条推理链,返回出现次数最多的那个答案,用“多条链是否一致”替代奖励模型来打分。
它能降低方差,但对偏差毫无办法:如果模型每次都把题目看错成同一个样子,多条链会一致地错,投票只会让那个错答案更自信。
三、Best-of-N
用奖励模型给 N 个完整答案打分,取最高的那个。
这里有个反直觉的现象:真实效果好到某个点就开始往下走。因为优化压力会压向代理指标,过了峰值之后,搜索找到的是“奖励模型喜欢的答案”,而不是真正正确的答案。
四、延长思考
让模型先花一段 token 预算做内部推理。
关键在:不是越长越好。有团队专门构造过任务,发现准确率会随着推理链变长而下降——其中一类是计数题,题干里无关的数字会把模型带偏。
五、自我修正
让模型自己批改并重写答案。
在 GSM8K 上的实测结果是:GPT-3.5 修对了 7.6% 的错题,同时弄错了 8.8% 的原本正确的题,净收益为负。
这个方法真正管用的前提,是把“批改者”从模型换成编译器或测试套件——也就是有外部确定性信号可依的时候。
六、思维树
一次提出多个下一步,给它们打分,保留最好的几条,走进死胡同就回退。
七、束搜索
保留 K 条不完整的解,每一步都用过程奖励模型打分。
小预算下它比 Best-of-N 好,大预算下反而更差,原因还是同一个:搜索开始讨好打分器,而不是解决问题。
八、MCTS
沿着有希望的路往下走,展开到完整答案,把得分往回传,循环往复。
动作空间会强制限制节点展开数量,加上这个限制之后,搜索容易停在局部最优。
比记住八个方法更重要的一条结论
上面每一种方法都在做同一件事:生成候选,然后挑一个。
这意味着——挑的那个环节决定了天花板。候选生成得再多,选择器不行,结果也上不去。所以正确的顺序是:先把验证信号做出来,再去扩搜索规模。反过来做,只是花更多算力买同一个错误答案。