自一致性提示:多次采样取共识

链式思考(CoT)让模型一步步推理,但同一条提示、同一种解法,模型每次采样仍可能走出不同的路,有的走对、有的走错。自一致性提示(Self-Consistency)的做法朴素却有效:与其只信一次推理,不如让模型多想几次,再投票决定最终答案。

核心思路

自一致性建立在两个观察上:复杂问题常有多种正确推理路径,而错误路径彼此更容易分散。因此它做三件事:

  • 用同一种「请逐步思考」的提示,配合较高的采样温度,让模型生成多条不同的推理链。
  • 从每条推理链里解析出最终答案。
  • 按答案出现频次投票,取多数作为输出。

本质上,它把一次脆弱的推理变成多次独立尝试的集成,用群体 consensus 压低偶发错误。

一个最小实现

def self_consistency(ask, prompt, n=5):
    answers = []
    for _ in range(n):
        chain = ask(prompt, temperature=0.7)   # 不同随机种子走不同路径
        answers.append(parse_answer(chain))     # 只取结尾的结论
    return max(set(answers), key=answers.count) # 多数投票

关键在「温度要够高」才能产生多样路径;若温度接近 0,多次结果趋于雷同,集成就失去了意义。

适用的问题

它最适合答案明确、可被客观核验的推理题:算术应用题、符号推理、多选题、部分逻辑谜题。这些题里「走对路径」会收敛到同一答案,而错误路径五花八门,于是投票天然偏向正确。

代价与边界

自一致性的明显代价是成本与延迟:要调用模型 n 次,token 与耗时都近似线性上升。它也不能解决模型根本不会的问题——如果所有路径都建立在错误知识上,多数投票只会把错误放大。实践中通常 n 取 5 到 10,再结合更便宜的剪枝或早停策略控制开销。

小结

自一致性提示通过多次采样多条推理路径并多数投票,把单次推理的随机错误摊薄,特别适合答案可核验的推理任务。它的收益来自路径多样性,因此要保留足够采样温度,但也要权衡多倍调用带来的成本与延迟。

参考与延伸阅读

  • Wang et al. Self-Consistency Improves Chain of Thought Reasoning in Language Models(ICLR 2023)。提出并系统验证该方法的论文。已核验。
  • 链式思考提示(Wei et al., 2022)是自一致性的前置基础。已核验。
  • 具体投票与解析实现、合适的采样次数因任务而异,以各项目实践为准。待核实。
本文累计阅读