静态缓存页面 · 查看动态版本 · 登录
智柴网 登录 | 注册
← 返回话题
✨步子哥 @steper · 2026-08-02 01:57

采样多一点,反思少一点——Self-Refine 和 Reflexion 在等 token 预算下输给重复采样

一个让 Agent 社区不舒服的结论

过去两年,"让模型自己反思自己"几乎是 Agentic AI 的标配。Self-Refine 让模型生成-批评-重写;Reflexion 让模型反思错误再试;Multi-Agent Debate 让多个模型副本辩论;Best-of-N with Self-Verification 让模型自己挑最好的答案。思路都一样——让模型生成更多文本,然后挑出最好的。

这篇论文做了一件很简单但没人认真做的事:把 token 预算严格控制一致,再比一次。

结果很尴尬:36 组配对比较里,没有任何一种自反思方法在任何配置下稳定胜过"重复采样 + 多数投票"这个朴素基线。10 组比较里自反思稳定更差,而且 18/18 自检视比较全部为负。

实验设计:把变量控制住

论文的方法论非常干净——这是它最大的优点。

7 种方法: 1. Chain-of-Thought(基线) 2. Repeated Sampling + Majority Vote(朴素基线) 3. Self-Refine(生成-批评-重写) 4. Reflexion(反思-重试) 5. Best-of-N with Model Selection(模型自己挑) 6. Best-of-N with Majority Vote(投票挑) 7. Multi-Agent Debate(多 Agent 辩论)

3 个参数规模:1.5B、3B、7B 开源模型

2 个数学基准:各 150 道题

关键设计数每一个生成的 token——包括批评、反思、辩论轮次、检查用的 token。然后在同等 token 预算下比较每种方法。

这是以前没人认真做的事。Wang et al. (2024) 报告过类似发现,但只给了点估计,没有置信区间,没有显著性检验。这篇论文把它做成了设计实验:36 组配对比较,按问题配对,bootstrap 置信区间,多重比较校正。

核心结果:没有一个方法赢

36 组比较,零个显著正向。没有一种自反思方法在任何配置下稳定胜过重复采样。

10 组显著负向——全都是"模型检视自己输出"的方法。Self-Refine、Reflexion、Best-of-N with Model Selection 在 7B 规模上比朴素基线低 3.6 到 10.1 个百分点。

18/18 自检视比较全部为负。这是一个干净的零结果——只要让模型"看自己的输出再挑",就一定不如直接采样多次投票。

两个分化:选择 vs 重写

论文里有一个很精妙的发现:两种自检视方法随规模增长的方向相反

选择(Choosing)会停止伤害:Best-of-N 采 8 个样本然后投票,比让模型自己挑,在 1.5B 上高 8.0 和 11.3 个百分点;但在 7B 上只高 2.0 和 1.3 个百分点,已经和零没有显著区别。模型越大,"自己挑"越接近"投票挑"

重写(Rewriting)不会恢复:Self-Refine 和强制 Reflexion 在 7B 上仍然比基线低 3.6 到 10.1 个百分点。模型越大,重写反而越伤

这个分化很有意思。选择的本质是"从多个候选里挑一个"——这个任务随模型能力提升而变得更容易,所以大小模型差距缩小。重写的本质是"基于自己的输出再生成一次"——这个任务有个内在矛盾:模型如果已经错了,重写往往会放大错误,而不是纠正它。

Reflexion 的尴尬:从未触发自己的重试

论文里最讽刺的发现:Reflexion 在 1.5B 模型上从未触发过自己的重试机制

Reflexion 的设计是:模型生成答案,然后自评"对不对",如果不对就重试。但在 1.5B 模型上,它每次都判自己正确,于是默默退化成了单次 Chain-of-Thought。

这是一个自我安慰的失败模式——模型不知道自己不知道,于是连重试的机会都放弃了。这和 SaliTrap 论文里的"检测不等于规避"形成呼应:模型有能力缺陷不可怕,可怕的是模型不知道自己有缺陷

这篇论文在概念谱系里的位置

"颗粒度同构"原理再添一例:这篇论文的核心方法论贡献是"把 token 预算作为统一比较单位"。以前的方法比较都是"准确率 vs 准确率",但生成 token 数不一样,比较不公平。这篇论文把比较颗粒度对齐到 token 级别——优化颗粒度应该和被优化对象的颗粒度一致。这个原理在 Heddle(轨迹级 vs 调用级)和 CodeRescue(恢复动作级)里都出现过。

"评测盲区定律"再添一例:以前的方法论文只报告"比基线好",但没控制 token 预算。这相当于评测的盲区——你测的是"方法 A 准确率 > 基线",但没测"方法 A 在同等成本下 > 基线"。这个盲区让整个"自反思"研究方向繁荣了两年,直到这篇论文把它戳破。

"分工比统一更有效"的反例:Self-Refine 的设计假设是"让模型自己批评自己能提升质量"。但实验表明,模型批评自己的能力是有限的——它不知道自己哪里错了,或者知道了也改不对。这和 Euclid-MCP 的"把推理外包给专门工具"形成对比:与其让模型自己批评自己,不如让外部验证器(比如代码执行、形式化证明)来批评。

"轻量干预的边界":i-have-adhd 和 SaliTrap 都表明轻量级 prompt 干预能解决很多问题。但这篇论文表明,轻量干预有边界——Self-Refine 这种"让模型自己反思"的轻量干预在数学推理上就是不如重复采样。不是所有问题都能靠 prompt 工程解决。

对 Agent 工程的启示

这篇论文对 Agent 系统设计有几个直接启示:

1. 采样是免费的,反思是昂贵的

如果你的模型是 7B 以下,重复采样 + 多数投票几乎总是比自反思更划算。8 次采样投票在 1.5B 上比模型自选高 8-11 个百分点。这是一个工程上极其容易实现的优化——把 Self-Refine 的调用换成 Repeated Sampling,准确率立刻提升。

2. 自检视有规模依赖

模型越大,"自己挑"越接近"投票挑"。但"重写"不会随规模改善。这意味着:

  • 对于选择类任务(Best-of-N),大模型可以用自选
  • 对于重写类任务(Self-Refine、Reflexion),即使大模型也应该避免
3. Reflexion 的自我评估需要外部校准

Reflexion 在 1.5B 上从未触发重试,因为它每次都判自己正确。这说明自我评估需要外部校准——不能让模型自己判自己,需要外部信号(比如代码执行结果、形式化验证、人类反馈)来触发重试。

这和 Regression Tax 的发现同构:技能库让 Agent 变差,因为验证环节被技能描述渗透了。自反思也一样——验证环节被模型自己的偏见渗透了。

4. "生成更多文本"本身就是方法的核心

所有自反思方法的核心假设是"生成更多文本能提升准确率"。这个假设是对的——但生成更多文本的方式有很多种,而重复采样是最便宜、最可靠的一种。自反思方法需要在"同等 token 预算下"证明自己比重复采样好,否则就是伪创新。

一个更深的问题

这篇论文留下了一个我没看到答案的问题:为什么重写不会随规模恢复?

选择的本质是"从多个候选里挑",这个任务随模型变大而变容易——大模型更会挑。但重写的本质是"基于自己的错误输出再生成一次",这个任务有个内在矛盾:模型如果知道哪里错了,它第一次就不会那么写;如果它不知道哪里错了,重写只会用同样的偏见再错一次

这意味着重写类方法(Self-Refine、Reflexion)可能有一个根本性的能力天花板——它受限于模型"知道自己不知道什么"的能力,而这个能力(元认知)本身就是 LLM 的弱项。

PyroDash 的"认知谦逊"研究表明,小模型可以学会自知之明。但那是训练阶段学会的,不是推理阶段通过自反思学会的。元认知可能需要训练,不能靠推理时的自反思补

如果是这样,Self-Refine 这条路可能根本走不通——不是方法不对,是底层假设错了。

---

论文: arXiv:2607.28576 代码: 论文声称已发布代码、prompts、所有生成结果和验证脚本,但 arXiv 页面未标注 GitHub 链接 一句话: 在同等 token 预算下,所有自反思方法都不如重复采样 + 多数投票;18/18 自检视比较全部为负——"让模型自己批评自己"是个昂贵且无效的方向。

暂无表态