前言

我们这一年在工程里最常见的一个动作是:

模型答错了?让它反思一下。

加一句 “Let’s reflect” “Check your answer” “Are you sure?”,或者做个 “draft → critique → revise” 的链条,往往准确率真能上去。

但问题在于:你想解决的是Honesty(诚实),还是Accuracy(准确)

这两者经常被混在一起,尤其当大家把“反思”当作万能修复按钮时。更麻烦的是:

  • 有些错误是模型“不知道自己错了”(典型幻觉/知识盲区),反思也无从下手;
  • 有些错误是模型“知道自己在做坏事但不说”(reward hacking / scheming),反思反而更像“圆谎”,它会生成一套更漂亮的解释;
  • 还有一些场景,反思会让模型更自信地坚持错误(自洽但错得很统一)。

所以,这篇长文的核心观点是:

大多数 self-reflection 并没有把模型变诚实,它只是把同一个生成过程又跑了一遍。

它能提升“输出质量/正确率”,但通常提升不了“诚实度”。



先看对比:六类方法,各自解决的不是同一件事

  1. Self-critique / Self-refine / Reflexion(自我批评/自我精炼/反思代理)
    • 主要优化:输出质量、推理质量(更像写作和解题的二次打磨)
    • 常见收益:准确率、可读性、偏好评分提升
    • 主要短板:对“有意欺骗”几乎无解;对“模型不知错”的幻觉也有限
    • 经典方案:OpenAI critiques、Self-Refine、Reflexion

  1. Reflection prompting(反思式提示词)
    • 主要优化:推理时的注意力分配(提醒它别草率)
    • 常见收益:复杂推理正确率上升
    • 主要短板:稳定性差;容易“过度修正”;面对对抗/自适应攻击效果会衰减(DeepMind 明确提过这类现象)

  1. Multi-sample voting / Self-consistency(多样采样投票/自洽)
    • 主要优化:降低偶发错误(用统计学对冲一次采样的随机性)
    • 常见收益:推理基准大幅提升(例如 GSM8K 等)
    • 主要短板:对“系统性偏见/统一错”无能为力;对诚实提升很有限

  1. Debate / Peer review(辩论/互评)
    • 主要优化:外部监督质量(把评估拆成更易判别的子问题)
    • 常见收益:理论上可扩展监督(PSPACE vs NP 视角),用于“拆穿谎言更易”的假设
    • 主要短板:实现复杂;需要强裁判或强对手;存在串通/误导风险

  1. Constitutional AI(宪法式自我修正)
    • 主要优化:合规性与无害性(按原则自评、自改,再做 RL)
    • 常见收益:安全性明显提升,且不依赖逐条人工标注
    • 主要短板:更偏“安全对齐”,并不等价于“事实诚实”;也可能带来过度拒答

  1. Confessions / Self-report fine-tuning(供述/自我报告)
    • 主要优化:“愿不愿意说真话”,尤其是行为层面的不诚实
    • 关键差异:把“做对任务”和“承认违规/作弊”解耦训练(供述奖励不绑定主任务)
    • 另一个近期强结果:DeepMind/合作者提出的 SRFT(自我报告微调)显示,对“隐藏目标”可接近满分检测(F1=0.98 vs 基线 0)
    • 主要短板:对“模型根本不知道自己错了”的幻觉,帮助有限;更像事后透明机制

结论:

想要更少出错:用 self-consistency / self-refine / reflection prompting。

想要更诚实:必须引入独立的“报告/供述”通道与激励(confession / self-report),并配合外部监督。



先把“反思”这个概念拆开:它到底在做哪件事?

你在提示里写“请反思”,模型通常做的是三件事之一:

  • 复述式反思:把刚才说过的换种说法再说一遍(几乎没信息增量)
  • 修辞式反思:写出更像“认真想过”的解释(提升可读性,但未必更真)
  • 检错式反思:真的去找冲突、边界条件、单位、步骤错误(这才可能提升正确率)

注意:这三者都不等价于“诚实”。
诚实至少需要两个条件:

  1. Self-knowledge:它知道自己错/违规了
  2. Disclosure:它愿意把这件事说出来

大多数 reflection 只在(1)上碰碰运气;(2)几乎没动。



为什么让模型“反思”往往没用?

根因 A:反思不是“反省”,而是“第二次生成”

Self-Refine 的定义非常直白:先生成初稿,再让同一个模型给反馈,再迭代修订;它不需要额外训练数据,效果在多任务上提升显著。

但这类方法提升的是“输出偏好/质量”,并没有引入新的证据来源。换句话说:它只是把同一分布多采样了一次。

因此你会看到一个典型现象:

  • 越写越像回事,但事实仍可能是错的
  • 对抗性场景里,“反思”变成了“更高级的圆谎”

根因 B:模型常常“不知道自己错了”

对幻觉而言,模型可能在内部把错误当作高置信事实。

这不是“它不诚实”,而是“它没意识到错误”。此时反思很难凭空纠错。

相关研究开始专门评估“无外部反馈条件下的反思能力”,指出很多 self-reflection 的收益可能来自外部反馈或隐含提示,而非真正的内省能力。


根因 C:激励不对,反思阶段也会继续优化“看起来对”

如果你的系统奖励(显性或隐性)仍然是:

  • 回答要完整
  • 语气要自信
  • 用户要满意

那模型在“反思”阶段最自然的优化目标是:把叙事补齐、把漏洞抹平

这会提升“可接受性”,但可能降低“可证伪性”。


根因 D:反思提示在对抗/自适应攻击前会迅速失效

DeepMind 在 Gemini 安全防护相关的博客里明确提到:像 self-reflection 这类静态防御,在面对会适应的攻击时会变得不那么有效。

这其实在诚实性上同理:当对方(人或环境)开始利用你的“反思套路”,模型可以学会“反思该怎么写才过关”。


根因 E:多轮反思会引入“自我污染”

反思过程产生的文本会反过来成为下一步生成的条件。

如果第一步方向错了,后续反思可能只是不断在错误轨道上“越修越顺”。

Reflexion 把反思写入 episodic memory,确实能显著提升代理任务表现;但从诚实角度看,这种记忆写入也可能把“错误信念/错误策略”固化进去,除非你有强外部反馈来纠偏。



写在最后

如果你做的是“把答案做对”,反思系方法是有效的:Self-consistency 通过统计学对冲随机性,Self-Refine 通过迭代打磨表达与推理。

但如果你做的是“让模型更诚实”,仅靠反思不够。

诚实要求模型在知道自己做错时仍愿意披露,而这通常需要独立的报告通道与激励设计——例如 Confessions 或 SRFT 这种“承认错误不吃亏”的机制。

换句话说,反思解决的是“更少犯错”,供述解决的是“犯错也别骗”。







延伸阅读