王老师想了解学生小航的数学真实水平。他没有只看一次单元测验——一次考试可能蒙对,也可能发挥失常。他出了一道方程题,让小航先后用配方法、因式分解、公式法独立解三遍。三次思路完全不同,可最后一行都写下同一个答案。王老师这才放心:这题他是真会了。如果三份草稿三个答案,那只能说明概念还没吃透。这种“多解几遍、殊途同归”的检验思路,恰恰是今天大模型数学评测中一项关键指标——推理自洽性的雏形。 大模型像一位“发挥不稳定的学生”:同一个数学题,受采样随机性影响,两次生成的推理过程可能大相径庭。要让模型能力评估可信,就不能只赌一次输出。这篇文章用王老师的抽查办法,带你看懂自洽性如何用多次采样、答案一致性、多数投票来判断“模型到底稳不稳”,以及它在评测中的价值与局限。

岗位关联

对 AI 从业者而言,自洽性是把“模型可不可信”从感性判断变成可量化指标的关键工具,广泛应用于模型评测、答案校验与可靠性分析。

目录
  1. 可视化演示
  2. 自洽性概念:什么算“殊途同归”
  3. 多次采样:给推理一点发挥空间
  4. 一致性度量:把草稿收上来对答案
  5. 多数投票:少数服从多数的智慧
  6. 提升策略:让结论更经得起反复检验
  7. 实验分析:数据里的自洽密码
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示多次采样推理路径、一致性度量评分与稳定性提升策略,切换模式理解大模型推理自洽性评估的全流程方法论。

本节配有交互动效(进入视口后自动加载,约 3KB)。

多次采样推理路径 同一问题用不同随机种子采样多次,生成多条独立推理路径 各路径可能得出不同答案,路径间答案一致率反映推理自洽性 Paths = {Sample(q, seed_i) for i in 1..N} 多次采样是评估推理自洽性的基础方法,揭示模型推理的稳定性边界

自洽性概念:什么算“殊途同归”

王老师的抽查法看似朴素,背后是一条深刻的评测原则:单次表现充满噪声,反复验证才能逼近真实水平。一名学生可能因为刚巧背过套路而蒙对,也可能因为状态不佳而做错;只有让他换着方法多解几遍,你才能把“运气”和“实力”分开。大模型的推理也充满这种“噪声”——解码时的随机采样让每一次生成的推理链都不同,单次输出可能包含幻觉或计算失误。因此,评测模型时不能只看一次回答的对错,更要看它在不同推理路径下能否得出一致结论。

这种“多次推理结论互相印证”的性质,就是数学推理自洽性。它与单次准确率的关键区别在于:准确率回答的是“这次答对没有”,自洽性回答的是“它的结论禁不禁得起反复检验”。一个模型可能单次准确率尚可,却每次都用不同理由碰巧蒙对——这样的推理并不可靠。反过来,如果模型多次采样都指向同一个答案,哪怕答案最终是错的,也说明模型对这条推理路径高度“笃定”,评测者应当警觉。自洽性因此成为衡量推理可靠性的重要指标,也是自洽性评测方法兴起的根本动力。

在数学评测中,自洽性分数(Self-Consistency, SC)的定义非常直观。设对一道题采样 N 次,得到 N 个答案,其中出现次数最多的答案称为主导答案 $\hat{z}$,那么自洽性分数就是 N 份答案中与主导答案一致的占比:

王老师用三份草稿判断小航,评测工程师用几十次采样判断模型,本质是同一件事:结论越是被不同路径反复印证,就越值得信赖。自洽性分数就是这件事的数字化表达。

SC=1N∑i=1N1{ai=z^}\displaystyle SC = \frac{1}{N} \sum_{i=1}^{N} \mathbb{1}\left\{ a_i = \hat{z} \right\}
可以把 $SC$ 理解成“王老师收上来的 N 份草稿里,有多少份最后一行写着同一个答案”。
  1. 采样总数 N对同一道题独立采样 N 次,得到 N 份“草稿”答案 $a_1, a_2, \ldots, a_N$。
    N 次独立采样得到答案集合 {a1,a2,…,aN}\displaystyle N \text{ 次独立采样得到答案集合 } \{a_1, a_2, \ldots, a_N\}
  2. 主导答案 $\hat{z}$在所有答案中挑出出现次数最多的那个候选答案,作为“大家最认可的结论”。
    z^=arg⁡max⁡z∑i=1N1{ai=z}\displaystyle \hat{z} = \arg\max_{z} \sum_{i=1}^{N} \mathbb{1}\{a_i = z\}
  3. 指示函数$\mathbb{1}\{\cdot\}$ 是一个计数器,括号里的条件成立时取 1,不成立时取 0,用来判断每份草稿是否落在主导答案上。
    1{ai=z^}={1,ai=z^0,ai≠z^\displaystyle \mathbb{1}\{a_i = \hat{z}\} = \begin{cases} 1, & a_i = \hat{z} \\ 0, & a_i \ne \hat{z} \end{cases}
  4. 求和取平均把所有“是否与主导答案一致”的计数加起来,再除以 N,得到一致样本所占的比例。
    SC=与主导答案一致的采样数N\displaystyle SC = \frac{\text{与主导答案一致的采样数}}{N}

多次采样:给推理一点发挥空间

王老师让小航“换方法做三遍”,前提是小航每次解题会自然地走不同的路。大模型没有这种天然的自由度——它只是按概率逐词生成,如果不加干预,两次解码可能几乎复读同一遍。要让模型真正“多解几遍”,评测时给模型注入一点随机性,这就是温度采样。

温度 T 是解码时的一个旋钮,控制模型“发挥浮动”的大小。语言模型生成下一个词时,会先算出一组原始得分 logits,再通过 softmax 转成概率。温度缩放就发生在这个转换之前:把每个得分除以 T,再进 softmax。T 小,概率分布变得尖锐,模型几乎总是选最高分的词,输出趋于保守;T 大,分布变得平坦,低分词汇也有机会被选中,输出更加天马行空。自洽性评测通常把 T 设在 0.5~0.7 之间,既让每次采样产生足够多变的推理路径,又不至于让模型胡言乱语。

每次采样时更换随机种子,模型就会沿着不同的概率路径生成不同的推理链;同样的题目,一条链可能用方程,另一条链可能用算术。采样次数 N 决定了“草稿”的多少:太少,统计不稳定;太多,计算成本线性上涨。王老师需要三份草稿就能判断,而模型评测通常采样 5 到 40 次,在成本与可靠性之间取平衡。

pk=ezk/T∑j=1Vezj/T\displaystyle p_k = \frac{e^{z_k / T}}{\sum_{j=1}^{V} e^{z_j / T}}
这个公式描述了“带温度的自由发挥”:$z_k$ 是模型对第 k 个词的原始打分,$T$ 是温度旋钮,$p_k$ 是最终被选中的概率。
  1. logits 得分 $z_k$模型尚未归一化的原始打分,分数越高代表模型越倾向选这个词。
    zk=模型对第 k 个候选词的原始得分\displaystyle z_k = \text{模型对第 } k \text{ 个候选词的原始得分}
  2. 除以温度 T将每个得分都除以 T。T 越大,得分之间的差距被压缩,分布变得更平坦。
    zk/T 是温度缩放后的得分\displaystyle z_k / T \text{ 是温度缩放后的得分}
  3. softmax 归一化对缩放后的得分取指数并求和归一,使所有候选词的概率加起来等于 1。
    pk=ezk/T∑j=1Vezj/T\displaystyle p_k = \frac{e^{z_k / T}}{\sum_{j=1}^{V} e^{z_j / T}}
  4. 温度的作用边界T 趋近于 0 时退化为贪心解码,每次几乎选最高分;T 趋近于无穷大时退化为均匀随机。
    lim⁡T→0pk=最高分词的 one-hot,lim⁡T→∞pk=1V\displaystyle \lim_{T \to 0} p_k = \text{最高分词的 one-hot},\quad \lim_{T \to \infty} p_k = \frac{1}{V}

一致性度量:把草稿收上来对答案

草稿收上来之后,怎么判断“是不是同一个答案”?王老师知道,“42“和”四十二“显然是同一个结论,但”3.14“和”3.1416“就要看题目要求保留几位小数。如果直接把原始字符串拿来比对,会闹出”字面不同但语义相同”的误判。一致性度量的第一步,就是答案归一化。

归一化要做三件事:一是去掉多余的空格、标点和单位,把“42 元”变成“42“;二是把等价表达转成统一形式,比如把”四十二“转成”42“;三是对浮点数设置容差,允许”3.14159“和”3.1416“在误差范围内视为相同。做完归一化,才能统计每个候选答案获得了多少”票”。自洽性的一致性分数,本质上就是最大那个答案簇占全部采样的比例:

王老师对答案时心细,评测工程师对答案时也心细。归一化看似琐碎,却直接决定自洽性分数靠不靠谱:归一化太严,语义等价的答案被拆散,自洽性被低估;归一化太松,不同结论被强行合并,自洽性被高估。一致性度量的质量,决定了整个自洽性评测的可信度。

Consistency=max⁡z∈Z∑i=1N1{ai=z}N\displaystyle Consistency = \frac{\max_{z \in \mathcal{Z}} \sum_{i=1}^{N} \mathbb{1}\{a_i = z\}}{N}
这个公式和自洽性分数 SC 是同一个东西的两种写法:按答案分组后,取票数最多的组,看它占所有“草稿”的比例。
  1. 候选答案集合 $\mathcal{Z}$把所有归一化后的不同答案收集起来,比如 {42, 13, 25}。
    Z={所有不同的候选答案}\displaystyle \mathcal{Z} = \{ \text{所有不同的候选答案} \}
  2. 对每个答案统计得票内层求和数出答案 z 在 N 次采样中出现了多少次。
    ∑i=1N1{ai=z}=答案 z 的得票数\displaystyle \sum_{i=1}^{N} \mathbb{1}\{a_i = z\} = \text{答案 } z \text{ 的得票数}
  3. 取最大得票簇外层 $\max$ 在所有答案中选出票数最多的那一个。
    max⁡z∈Z(答案 z 的得票数)=最大答案簇的大小\displaystyle \max_{z \in \mathcal{Z}} (\text{答案 } z \text{ 的得票数}) = \text{最大答案簇的大小}
  4. 除以 N 归一化用最大簇大小除以总采样数,得到 0 到 1 之间的比例,这就是一致性分数。
    Consistency=最大答案簇大小N\displaystyle Consistency = \frac{\text{最大答案簇大小}}{N}

多数投票:少数服从多数的智慧

草稿对完答案,每个候选答案都有了自己的票数,接下来要做一个决定:这道题最终采用哪个答案?王老师的做法很简单——少数服从多数。哪个答案被最多的独立解法支持,就把它当作小航的最终结论。这个朴素的决策规则,在自洽性评测中被称为多数投票。

多数投票是自洽性方法里聚合多次采样的最终步骤。它等价于从所有采样答案中找出票数最多者:

多数投票还有进阶玩法。有些采样草稿在生成时会附带一个置信度分数,模型对某条推理路径越自信,这个分数越高;投票时按置信度加权,比简单数人头更能反映草稿质量。如果出现平票——两个答案票数一样多——稳妥的处理是拒绝作答,或者将温度调低重新采样一轮。多数投票之所以有效,是因为随机错误通常方向分散,而正确的推理往往殊途同归;当绝大多数路径都指向同一个答案时,这个答案大概率是对的。

z^=arg⁡max⁡z∈Z∑i=1N1{ai=z}\displaystyle \hat{z} = \arg\max_{z \in \mathcal{Z}} \sum_{i=1}^{N} \mathbb{1}\{a_i = z\}
如果说自洽性分数回答的是“这次检验有多一致”,多数投票回答的就是“综合所有草稿,最终结论是什么”。
  1. 票数统计给每个候选答案 z 数出它在 N 次采样中出现的次数。
    votes(z)=∑i=1N1{ai=z}\displaystyle \text{votes}(z) = \sum_{i=1}^{N} \mathbb{1}\{a_i = z\}
  2. argmax 选择在所有候选答案中找出票数最多的那一个,记为 $\hat{z}$。
    z^=arg⁡max⁡zvotes(z)\displaystyle \hat{z} = \arg\max_{z} \text{votes}(z)
  3. 与自洽性的联系投票胜出的答案,正是计算自洽性分数时那个“主导答案”。
    z^ 对应的得票占比 =SC\displaystyle \hat{z} \text{ 对应的得票占比 } = SC

提升策略:让结论更经得起反复检验

王老师发现,有些学生怎么抽查都很稳,有些学生一换方法就露馅。能不能通过训练或引导,让模型本身变得更“稳”?自洽性评测的实践者们摸索出一套提升推理稳定性的策略,核心思路是让每一次采样的推理路径都更规范、更不容易跑偏。

第一条策略是提示引导。在提示词中给出带完整解题步骤的示例,模型会模仿示例把过程写得更细,减少跳步造成的错误。第二条是温度调控,温度太低模型懒得换思路,温度太高则容易飘到无关方向,适中温度(0.5~0.7)能兼顾路径多样性与单次正确率。第三条是步骤自检,让模型生成答案后自己复核一遍每一步的依据,把“粗心的草稿”变成“检查过的草稿”。最后是采样调参,根据具体任务调整采样次数 N——简单题 5 次就够,复杂应用题可能需要 40 次。这些策略的共同目标,是让“多数投票”的群众基础更牢固:每条路径都更靠谱,共识才更有价值。

如何量化“答案分布有多集中”?可以借用信息论里的熵。设 $\mathcal{Z}$ 为候选答案集合,$p(z)$ 为答案 z 的占比,定义归一化熵指数:

王老师对不同的学生用不同的抽查频率:基础好的学生少查几次,基础差的要多查几遍。模型评测也一样,通过策略组合让推理路径更稳、通过熵指数识别“心里没底”的样本,自洽性才能真正服务于可靠性判断。

E=1−H(z)log⁡K,H(z)=−∑z∈Zp(z)log⁡p(z)\displaystyle E = 1 - \frac{H(z)}{\log K}, \qquad H(z) = -\sum_{z \in \mathcal{Z}} p(z)\log p(z)
$E$ 越接近 1,说明答案分布越集中,模型越“笃定”;$E$ 越接近 0,说明答案越分散,模型处于“拿不准”的状态。它和自洽性分数互相印证,也用于筛选那些需要警惕的低置信样本。
  1. 答案分布 $p(z)$用每个答案的得票占比近似它的概率,$p(z)$ 越大代表越多人支持。
    p(z)=答案 z 的票数N\displaystyle p(z) = \frac{\text{答案 } z \text{ 的票数}}{N}
  2. 熵 H(z)度量答案分布的混乱程度。所有答案均匀分布时熵最大,全都指向一个答案时熵为 0。
    H(z)=−∑zp(z)log⁡p(z)\displaystyle H(z) = -\sum_{z} p(z)\log p(z)
  3. 最大熵 $\log K$K 个候选答案均匀分布时熵达到最大值 $\log K$,用它做归一化分母。
    Hmax⁡=log⁡K\displaystyle H_{\max} = \log K
  4. 归一化熵指数 E用 1 减去归一化后的熵,把“混乱度”翻转成“集中度”。
    E=1−H(z)log⁡K∈[0,1]\displaystyle E = 1 - \frac{H(z)}{\log K} \in [0, 1]

实验分析:数据里的自洽密码

策略好不好,光靠推理不行,得拿数据说话。王老师把抽查法用了一学期,期末统计发现:平时多次解题结论一致的学生,考试分数普遍更高。大模型评测的实验也给出了类似的结论——自洽性与准确率之间存在着显著的正相关关系。

典型的评测设置是:选用 GSM8K 数学应用题数据集作为基准,对每个问题采样 N 条思维链(常用 N=40 或 64),温度设为 0.7,答案归一化后做多数投票,并将投票结果与单次采样比较。公开实验显示,在 GSM8K 测试集上,将多数投票应用于思维链提示,可以让 PaLM-540B 的准确率从约 18% 提升到约 56%;在 MATH 数据集上也有数个百分点乃至十几个百分点的提升。这说明“多次采样 + 多数投票”确实能剥掉偶然误差,逼近模型真实能力的上限。准确率高的模型自洽性一般也高——实力强的学生怎么抽查都稳;但反向并不成立:自洽性高的模型准确率未必高。多数投票带来的相对提升幅度可以写成:

实验还揭示了自洽性的阴影面——失败案例。当模型被一个系统性偏见支配时,比如总是忽略“答案必须为正整数”的条件,所有采样会一致地错,自洽性分数依然很高。这提醒评测者:自洽性是必要的可靠性信号,但不是充分条件。王老师也明白这个道理:全班都抄同一份错误笔记时,交上来的答案再一致也是错的。好的评测会同时报告自洽性与准确率,并把两者结合成更全面的能力画像。

Gain=Avote−AsingleAsingle×100%\displaystyle Gain = \frac{A_{vote} - A_{single}}{A_{single}} \times 100\%
这个公式计算“多数投票相比单次采样多答对了多少题”,用于量化自洽性策略带来的增益。
  1. 单次准确率 $A_{single}$只取一次采样作为答案时,模型的答对率。
    Asingle=单次采样答对的题数总题数\displaystyle A_{single} = \frac{\text{单次采样答对的题数}}{\text{总题数}}
  2. 投票准确率 $A_{vote}$对每题多次采样后多数投票,以投票结果作为答案时的答对率。
    Avote=多数投票答对的题数总题数\displaystyle A_{vote} = \frac{\text{多数投票答对的题数}}{\text{总题数}}
  3. 差值投票准确率减去单次准确率,得到多数投票带来的绝对提升。
    Avote−Asingle\displaystyle A_{vote} - A_{single}
  4. 相对增益除以单次准确率再乘 100%,得到相对提升的百分比。
    Gain=绝对提升Asingle×100%\displaystyle Gain = \frac{\text{绝对提升}}{A_{single}} \times 100\%

AI 应用场景

大模型数学能力自动评测

阶段:模型能力评估

解决的问题:传统评测让模型每题作答一次,受解码随机性影响,单次偶然正确会虚高准确率;自洽性评测通过多次采样与多数投票,得到更接近模型真实水平的稳定成绩。

具体案例:评测团队在 GSM8K 数学题集上对候选模型做 40 次采样,归一化答案后计算自洽性分数并多数投票。结果显示,部分单次准确率看似接近的模型,自洽性差异明显——一个 68% 一个 72% 自洽性,后者推理路径更稳定,最终被选为上线版本。

金融场景的答案可靠性校验

阶段:推理结果校验

解决的问题:金融问答中模型给出的利息计算、汇率换算等结论一旦出错代价高昂;自洽性可作为置信信号,识别“模型自己都没想清楚”的边界案例。

具体案例:某理财问答系统对利息类问题采样 20 次,若自洽性低于 60%,系统将该问题标记为“待人工复核”,不再直接展示给用户。上线后高风险问题的人工复核准确率提升了 30%。

教育AI的解题稳定性监测

阶段:效果监控

解决的问题:教育类 AI 助教给学生的解题讲解若每次思路飘忽,会让学生困惑;通过监控典型题型的自洽性,可以及时发现讲解不稳定的问题。

具体案例:数学答疑机器人每个月对 100 道典型例题各采样 10 次,计算自洽性。某次版本更新后,方程题的自洽性从 82% 掉到 64%,监控告警触发,团队回滚了提示词模板,恢复了稳定性。

Python 演示

python74 行
# -*- coding: utf-8 -*-"""模拟多次采样的数学求解器, 计算自洽性分数并做多数投票"""from collections import Counter  class MathSolverSimulator:    """模拟一个带随机性的数学求解器, 每次 sample 做一次独立解答"""     def __init__(self, true_answer, vocab, correct_rate=0.65):        self.true_answer = true_answer        self.vocab = vocab        self.correct_rate = correct_rate     def sample(self, seed):        """以 correct_rate 概率返回正确答案, 否则返回一个随机错误答案"""        rnd = (seed * 9301 + 49297) % 233280 / 233280        if rnd < self.correct_rate:            return self.true_answer        idx = (seed * 7) % len(self.vocab)        wrong = self.vocab[idx]        if wrong == self.true_answer:            wrong = self.vocab[(idx + 1) % len(self.vocab)]        return wrong  class SelfConsistencyEvaluator:    """自洽性评测器: 归一化答案, 统计一致率, 多数投票"""     def __init__(self):        self.answer_counts = Counter()     @staticmethod    def normalize(answer):        """把字符串答案归一化为标准形式, 只保留数字部分"""        s = answer.strip().replace(",", "").replace(" ", "")        digits = "".join(ch for ch in s if ch.isdigit() or ch == ".")        return digits or s     def evaluate(self, samples):        """输入多次采样答案, 返回自洽性分数与多数投票结果"""        normalized = [self.normalize(a) for a in samples]        self.answer_counts = Counter(normalized)        total = len(normalized)        if total == 0:            return 0.0, None        top_answer, top_votes = self.answer_counts.most_common(1)[0]        consistency = top_votes / total        return consistency, top_answer  def run_experiment(n_samples):    """跑一轮模拟: 20 道题的多数投票准确率对比单次采样"""    solver = MathSolverSimulator(true_answer="42",                                 vocab=["13", "25", "99", "7"],                                 correct_rate=0.65)    judge = SelfConsistencyEvaluator()    single_hits = 0    vote_hits = 0    for q in range(1, 21):        samples = [solver.sample(q * 100 + i) for i in range(n_samples)]        consistency, voted_answer = judge.evaluate(samples)        first_answer = judge.normalize(samples[0])        if first_answer == "42":            single_hits += 1        if voted_answer == "42":            vote_hits += 1        print("题 %2d 自洽性=%.2f 投票=%s 单次=%s" %              (q, consistency, voted_answer, first_answer))    print("单次准确率: %d/20" % single_hits)    print("多数投票准确率: %d/20" % vote_hits)  if __name__ == "__main__":    run_experiment(11)
目的:用带随机性的模拟求解器替代真实 LLM,演示“多次采样 → 答案归一化 → 自洽性评分 → 多数投票”的完整评测流程。
  1. rnd = (seed * 9301 + 49297) % 233280 / 233280用线性同余法生成伪随机数,模拟模型每次采样的“随机发挥”。
  2. self.correct_rate = correct_rate设定单次采样的基础正确率,相当于模型的单次准确率。
  3. if rnd < self.correct_rate:以 65% 概率返回正确答案,其余 35% 随机返回错误答案,模拟温度采样带来的波动。
  4. digits = "".join(...)答案归一化:只保留数字和小数点,把“42 元”、“四十二”统一成"42"。
  5. self.answer_counts = Counter(normalized)用计数器统计每个归一化答案的得票数。
  6. top_answer, top_votes = self.answer_counts.most_common(1)[0]找出票数最多的主导答案。
  7. consistency = top_votes / total主导答案票数除以总采样数,得到自洽性分数。
  8. first_answer = judge.normalize(samples[0])取第一次采样作为“单次推理”的对照基准。
  9. if voted_answer == "42": vote_hits += 1多数投票答案正确则计数,用于对比单次准确率。

常见误区

误区模型多次采样都指向同一个答案,说明这个答案肯定是对的,自洽性分数可以当作准确率来用。

正解自洽性衡量的是“多次推理的一致性”,不是“与标准答案的吻合度”。全班都抄同一份错误笔记时,交上来的答案再一致也是错的。现实中模型可能被系统性的推理偏见支配,比如总是忽略某个约束条件,导致所有采样一致地错。正确做法是把自洽性当作可靠性信号而非正确性保证,评测时同时报告准确率。

为何常见:直觉上“大家都这么说”容易给人安全感,人们常常把共识与真相混淆,忽略了共识可能来自同一个源头。

误区既然多次采样能提升稳定性,那就把采样次数设得越大越好,比如每次采 200 次,反正越多越准。

正解采样带来的增益是边际递减的。实验显示 5 次提升明显,40 次之后准确率基本趋于稳定,再增加采样只是线性消耗算力。选择采样次数要在收益与成本之间权衡,简单题 5 到 10 次足够,复杂题 40 次左右即可。无脑增加次数既浪费 GPU 资源,也可能因引入过多低质量路径而稀释投票质量。

为何常见:人们容易把“多”和“好”画等号,忽略了统计上样本量超过一定范围后置信度提升趋缓的客观规律。

误区想要更多样的推理路径,就要把温度调高,温度越高采样越多样化,自洽性结果就越丰富可靠。

正解温度过高会让模型进入“胡言乱语”状态,低概率 token 大量出现,推理链变得支离破碎,答案分散在无关区域,自洽性反而暴跌。温度的作用是“适度扰动”,不是“彻底放飞”。自洽性评测实践中最常用的温度区间是 0.5 到 0.7,在这个范围内路径既有多样性又保持基本正确率。

为何常见:人们把“多样性”理解为“随机性越大越好”,忽略了推理任务需要的是有限范围内的有效变化,而不是无限发散。

误区对答案就是比对字符串,模型输出“42“和”四十二”是不同答案,统计时应该分开计算。

正解不做归一化的字符串匹配会把大量语义等价的答案拆散,严重低估自洽性。“3.14“和”3.1416“可能在容差内等价,”42 元“和”42”是同一个结论。评测前必须做答案归一化:去掉格式符号、抽取数值、统一等价表达、设置浮点容差,然后再统计一致性。

为何常见:字符串比较实现最简单,人们容易先用“能跑就行”的方案,却没意识到评测指标的数值会因此失真。

误区多数投票是自洽性方法的最终答案生成方式,既然实验都显示有提升,那它对任何模型、任何题目都有效。

正解多数投票提升的是稳定性,它依赖一个前提——正确采样之间有共同结论,而错误采样方向分散。如果模型的错误是系统性的,比如总是把减号看成负号,错误采样也会形成“一致的错误共识”,投票只会让错误答案更突出。此外当采样次数很少时,投票结果受随机性支配,未必优于单次。多数投票是锦上添花的聚合策略,不是点石成金的魔法。

为何常见:看到几组正面实验数据就归纳出“一定有效”的结论,忽略了实验结果背后的前提条件。

面试题

Q1. 自洽性评估的核心思想是什么?

单选题 · easy

  • A.要求模型每次输出完全相同的推理链
  • B.多次独立采样后检验结论的一致性← 正确答案
  • C.比较模型推理速度的快慢和资源占用
  • D.检查模型答案是否与训练数据重复

答案:B。自洽性的核心是“殊途同归”:让模型多次独立求解同一道题,检验结论是否互相印证。A 错在要求路径完全一致,自洽性恰恰允许路径不同;C 和 D 都是无关维度。

Q2. 温度参数 T 调大时,采样分布会如何变化?

单选题 · easy

  • A.概率分布变得更加集中尖锐
  • B.概率分布变得更加均匀平坦← 正确答案
  • C.概率分布完全不受温度影响
  • D.概率分布消失且无法采样

答案:B。温度 T 将 logits 除以 T 后再做 softmax,T 越大得分差距被压缩,分布越平坦,低概率词也有机会被选中。温度调低才会让分布更尖锐,对应更保守的贪心解码。

Q3. 某次评测中自洽性分数为 0.8,最准确的理解是?

单选题 · mid

  • A.模型有 80% 的概率答对这道题
  • B.80% 的采样草稿指向主导答案← 正确答案
  • C.模型推理链中有 80% 的步骤是正确的
  • D.模型有 80% 的推理路径完全相同

答案:B。自洽性分数是主导答案得票数占总采样数的比例,描述“结论的共识程度”。它不直接等于正确率,也不度量步骤正确率,更不要求路径完全相同——往往路径不同但终点一致才更有说服力。

Q4. 下列哪些属于一致性度量前的“答案归一化”操作?

多选题 · mid

  • A.移除答案中的多余空格与标点符号← 正确答案
  • B.从字符串中抽取数字部分作为标准形式← 正确答案
  • C.将“四十二”等等价表达转为统一数字← 正确答案
  • D.给模型提示词加上“请重新尝试一次”

答案:ABC。归一化是把不同表达映射到同一标准形式,包括去除格式噪声、抽取数值、统一等价表达。D 是改变采样方式的操作,属于采样策略而不是归一化。

Q5. 多数投票的主要作用是什么?

单选题 · mid

  • A.提高多次采样结论聚合后的稳定性← 正确答案
  • B.显著提升单次推理的生成速度
  • C.减少评测任务的整体计算开销
  • D.让每个候选答案都获得相等的权重

答案:A。多数投票通过让分散的错误互相抵消、让正确的共识凸显,把多次采样的随机性消化掉,提升最终结论的稳定性。它不会加速单次推理,计算开销反而更大,也并非等权——它本来就是按票数决定权重。

Q6. 设 5 次采样答案分别为 A、B、A、A、C,主导答案的自洽性分数是多少?

单选题 · hard

  • A.0.4
  • B.0.6← 正确答案
  • C.0.8
  • D.1.0

答案:B。主导答案是出现 3 次的 A,自洽性分数 = 3 / 5 = 0.6。注意自洽性计算的是主导答案的得票占比,不是最高频答案的次数本身。D 的 1.0 只在所有采样全部一致时出现。

Q7. 下列哪些策略有助于提升模型推理的稳定性?

多选题 · mid

  • A.在提示中给出带完整解题步骤的示例← 正确答案
  • B.将温度调低到让采样几乎完全保守
  • C.让模型对推导出的步骤进行自我检查← 正确答案
  • D.大幅调高温度以制造更多随机性

答案:AC。提示引导和步骤自检都能让推理路径更规范、更少跳步,从而提升稳定性。B 错在温度过低会失去路径多样性,多次采样退化为复读;D 错在温度过高会让推理发散为胡言乱语。

Q8. 实验中发现某模型自洽性很高,但多数投票结果仍是错误的,最可能的原因是?

单选题 · hard

  • A.本次采样的总次数设置得太少
  • B.大多数采样犯了相同的系统性错误← 正确答案
  • C.生成过程使用的温度设定得太高
  • D.答案归一化的规则设置得太严格

答案:B。自洽性高说明采样结论高度集中,但如果所有采样共享同一个错误偏见,就会“一致地错”。A 会导致统计不稳定而非高自洽;C 会导致分散而非聚集;D 会让等价答案被拆散,降低自洽性而非升高。

Q9. 与单次采样准确率相比,自洽性指标能额外提供什么信息?

单选题 · easy

  • A.数值一定高于单次采样的准确率
  • B.体现结论被反复印证后的稳定程度← 正确答案
  • C.评测时不需要任何额外的计算开销
  • D.只适用于小学数学应用题类型的评测

答案:B。自洽性回答的是“结论是否经得起反复检验”,这是单次准确率无法给出的稳定性信息。A 不成立,自洽性与准确率没有大小关系;C 错在多次采样明显增加算力;D 错在自洽性可扩展到推理问答等更广场景。

Q10. 关于自洽性评测,下列说法正确的有?

多选题 · hard

  • A.采样次数超过一定范围后增益会递减← 正确答案
  • B.高自洽性是对答案正确性的充分保证
  • C.温度过高会产生语义漂移降低自洽性← 正确答案
  • D.自洽性可作为模型可靠性的代理指标← 正确答案

答案:ACD。采样增益边际递减,验证了“够用就好”的调参原则;温度过高导致语义漂移,答案分散,自洽性下降;自洽性虽然不等于正确率,但确实是可靠性的有效代理指标。B 错在“充分保证”——一致地错的情况下高自洽与正确无关。