算力拉平后再比:自我反思全输给重复采样,7B 以下让模型自评反降 8 到 17 点

Sample More, Reflect Less: Self-Refine and Reflexion Lose to Repeated Sampling at Equal Token Cost, from 1.5B to 7B

Iliya Mirzaei

cs.CL, cs.AI, cs.LG

2026-07-31

token 预算拉平后,七种推理增强方法无一胜过多次采样取众数;让模型自评或改写答案,在 7B 以下规模稳定掉点。

这篇在解决什么

Self-Refine、Reflexion、Best-of-N、多智能体辩论这些「让模型想得更细」的方法,几乎都会让模型多吐字。一条思维链(chain of thought)可能 300 token,三轮自我批评能到 1600,三个副本辩论两轮能到 2500。算力变了五到十倍。而把更多算力花在「同一题多采样几次、取众数答案」(self-consistency)上,本来就能涨点。所以一个方法「比单条思维链强」说明不了是它的机制在起作用,可能只是它烧了更多 token。

Wang et al.(2024)点破过这件事,但他们只给了点估计,没有置信区间、没有显著性检验,每个数据集只有 100 题,差异小于约十个百分点就和噪声分不开。这篇把它重做成一个正经的对照实验。

方法

作者固定 Qwen2.5 的 1.5B、3B、7B 三个尺寸(Q80 量化、纯 CPU 跑,无 GPU),在 GSM8K 和 MATH-500 上各抽 150 题,比七种方法:Chain-of-Thought、Plan-and-Solve、Self-Refine、Reflexion(含一个强制版)、Best-of-N(模型自选)、多智能体辩论。

关键在成本计量。一个方法为一道题生成的所有 token 都算钱,包括批评、反思、辩论往返、校验这些从不出现在最终答案里的 token。然后拿这个实测成本,去查「重复采样」曲线(self-consistency 在 N=1…16 上的准确率-成本曲线)上同样成本那一点的准确率,比的就是这个。为了省钱,他们每题只采一个 16 条链的池子,从中无放回抽 N 条做众数投票,反复 200 次,就能廉价描出整条曲线。

所有比较按题配对,报配对 bootstrap 的 95% 置信区间,再用 Holm 校正应对「一次比七种方法总有一两个撞大运」的问题。这套设计能稳定识别大约 5 到 6 个百分点以上的差异。

结果

36 个「方法×设置」比较里,没有一种在任何设置下显著优于等成本重复采样;10 个显著更差,全都是要求模型检查自己输出的方法。

最干净的一刀来自 Best-of-N。它采 8 个样本,然后让模型挑最好的。把同样这 8 个样本拿来做众数投票,样本、token、模型完全一样,只差最后一步是谁来定胜负。结果是数票处处赢,差距随模型变大而收窄:

设置模型选数票差距(百分点)
1.5B / GSM8K71.3%79.3%-8.0
1.5B / MATH-50046.7%58.0%-11.3
3B / MATH-50052.0%69.3%-17.3
7B / GSM8K90.7%92.7%-2.0(不显著)

7B 以下数票四战四胜,到 7B 差距掉到约两点、与零分不开。改写类(Self-Refine、强制 Reflexion)到 7B 仍比基线低 3.6 到 10.1 个点,没回升。

还有个反讽细节:按原论文实现的 Reflexion 在 1.5B 上一题都没触发反思,模型每次都判自己对,于是悄悄退化成单条思维链,分数不低恰恰因为它最便宜。作者把「自适应部分到底触发了多少次」也测了,否则这个数字会被当成「反思有效」报出来。

为什么重要

对从业者,结论很务实:在算力固定、答案是可判定的数学题上,把多出来的 token 花在「再多采一次」比花在「让模型自我批评」更划算,模型规模越小越是如此。如果你的 pipeline 在 7B 以下用 Self-Refine 或 Best-of-N 自选来省钱提点,先拿「等成本多次采样取众数」当对照组跑一遍,很可能是白花的算力。这条结论有明确的边界,见下一节。

方向上的信号是:差距在 7B 收敛,是因为模型越来越认同多数票,不是因为它变成了更好的裁判。它偏离多数票时仍常常错。文献里训练过的验证器(process supervision、训出来的 self-verifier)确实能在 7B 附近胜过众数投票,所以真正起作用的可能是训练而不是「验证」这个动作本身。

局限与存疑

作者自己把边界讲得很清楚,这也是这篇可信的地方。完整成本匹配比较只覆盖 1.5B 和 3B,Best-of-N 到 7B,再往上(前沿模型)没测,数票对自选会不会反超未知。任务只有可自动判分的数学题,而 Self-Refine 本是为开放式生成设计的:在数学题上答案非对即错,一次改写就是一次赌博,换到开放式任务、众数投票本身不存在(没法对一段散文取众数)的比较里,结论未必成立。作者明说不主张「这些方法没用」,只主张「在数学题、这些规模下,它们输给把同样 token 拿去多采样」。

方法上每种只实现了一个版本、固定超参、没按数据集调,prompt 措辞敏感(Reflexion 在 1.5B 不触发反思就取决于判分 prompt)。统计上只重采样了题目、没估种子级方差,所以涉及随机的三种方法(采样、Best-of-N、辩论)的区间是总不确定性的下界,那几个显著结果应算最不牢靠的部分。作者还坦白抓到并修了两个 bug:一个服务端上下文截断让 Best-of-N 偏向更易的题(重跑补齐),一个评分 bug 把 Best-of-N 当成众数投票打分(修完后它从「贴着基线」变成「每个设置都低于基线」),并放了独立重算脚本对全部 96 项核对一致。

术语

原文与代码

社区讨论

相关论文

全部论文解读