返回文章归档

2025-08-06

Self-Consistency:多想几条路,再看答案是否一致

读 Self-Consistency 的一点笔记:它不是换一个更复杂的推理框架,而是承认单条 CoT 路径太脆弱。

AIPromptingPaper Notes

这篇读起来很顺

Self-Consistency 这篇论文的直觉非常好懂:复杂问题可以有多种解法,如果多条不同推理路径最后都得到同一个答案,那么这个答案更可能是对的。

它没有发明很复杂的新框架,也不需要训练模型。它只是把 CoT 里常见的 greedy decoding 换成采样多条推理路径,然后对最终答案做投票或边缘化。简单说,就是不要太相信模型第一次说出来的那条路。

它和普通 CoT 的差别

普通 CoT 往往是生成一条推理链,然后直接取这条链的答案。问题在于,这条链可能刚好走偏。早期一步错,后面就会沿着错误继续写下去。

Self-Consistency 的做法是:

  1. 用 CoT prompt 提示模型;
  2. 通过采样生成多条不同推理路径;
  3. 只看最终答案集合,选择出现最一致的答案。

这里的关键不是“输出更多文字”,而是让模型在推理空间里探索不同路径。它有点像人做题时换几种思路验算:如果三种方法都算出同一个数,信心自然会高一点。

为什么它有效

我觉得它有效的前提是:任务有一个相对明确的最终答案。比如数学题、符号推理、选择题、某些常识题。只要答案能被解析出来,多条路径就可以投票。

这也是它和开放写作类任务的区别。写一篇文章没有唯一答案,你很难简单投票说哪个结论“更一致”。如果要在开放任务里用类似思路,就需要额外的 judge、rubric 或 verifier。

论文里的消融也很有意思。只让模型写方程,帮助不一定大;只增加 token 数,也不是关键;先给答案再给推理也不行。说明真正有用的是“按顺序展开的中间推理路径”,而不是单纯生成得更长。

工程上我会怎么用

Self-Consistency 很适合做“低频高价值”的推理任务,比如后台分析、审核、问题定位、数学计算前的候选判断。它不太适合每个请求都开,因为成本会线性上涨。

如果我在系统里实现,大概会这样做:

  • 先判断任务是否有可解析答案;
  • 控制采样次数,不盲目追求更多路径;
  • 对最终答案做规范化,比如数字、选项、实体名;
  • 如果答案分歧很大,不强行投票,而是返回低置信度或交给工具验证。

这里最危险的误解是:“多数一致就一定正确”。多个错误推理路径也可能一起得出同一个错误答案,尤其是在 prompt 有偏、题目有陷阱、模型知识本身错误的时候。

和 Beam Search、Ensemble 的区别

Self-Consistency 不是 Beam Search。Beam Search 是在生成过程中保留高概率 token 路径,它追的是模型概率高;Self-Consistency 是生成后看最终答案一致性,它追的是推理结果稳定。

它也不是多模型 ensemble。Ensemble 通常是多个模型投票;Self-Consistency 是同一个模型在采样下产生多条路径。成本和可靠性都介于单次 CoT 和完整多模型系统之间。

小结

这篇论文对我最大的价值,是把 CoT 从“单条解释”推进到“多路径验证”。

它承认语言模型的推理是随机且脆弱的,所以不要押注第一条链。多采样、多路径、答案聚合,这些方法后来在 agent planning、代码生成、judge pipeline 里都能看到影子。只是工程上要记住:一致性提高置信度,但不等于真理。

相关产品

评论