这篇读起来很顺
Self-Consistency 这篇论文的直觉非常好懂:复杂问题可以有多种解法,如果多条不同推理路径最后都得到同一个答案,那么这个答案更可能是对的。
它没有发明很复杂的新框架,也不需要训练模型。它只是把 CoT 里常见的 greedy decoding 换成采样多条推理路径,然后对最终答案做投票或边缘化。简单说,就是不要太相信模型第一次说出来的那条路。
它和普通 CoT 的差别
普通 CoT 往往是生成一条推理链,然后直接取这条链的答案。问题在于,这条链可能刚好走偏。早期一步错,后面就会沿着错误继续写下去。
Self-Consistency 的做法是:
- 用 CoT prompt 提示模型;
- 通过采样生成多条不同推理路径;
- 只看最终答案集合,选择出现最一致的答案。
这里的关键不是“输出更多文字”,而是让模型在推理空间里探索不同路径。它有点像人做题时换几种思路验算:如果三种方法都算出同一个数,信心自然会高一点。
为什么它有效
我觉得它有效的前提是:任务有一个相对明确的最终答案。比如数学题、符号推理、选择题、某些常识题。只要答案能被解析出来,多条路径就可以投票。
这也是它和开放写作类任务的区别。写一篇文章没有唯一答案,你很难简单投票说哪个结论“更一致”。如果要在开放任务里用类似思路,就需要额外的 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 里都能看到影子。只是工程上要记住:一致性提高置信度,但不等于真理。