你有没有过这样的经历:照着同一份蛋糕配方,分三次烤,每次都严格按克称料、按分钟计时,结果三个蛋糕出炉后却不一样——一个塌陷、一个偏干、一个刚刚好。差别出在哪?可能是烤箱温度不准,可能是面糊搅拌手法不同,甚至可能是烤盘在烤箱里放的位置不同。配方给了你“正确的成分”,却没告诉你“稳定的环境”。 评测大语言模型(LLM)也是同一回事。MMLU 是一份让模型答题的“标准考卷”,当我们说一个模型“得了 72 分”,很难保证你在自己机器上重跑一遍还是 72 分。因为影响分数的,不只是模型本身的能力,还有一套看不见的“火候”变量:温度参数、提示词(prompt)格式、选项排列顺序、采样策略等。想让分数稳定、让模型之间的对比公平,我们必须先理解这些变量如何扰动分数,再学会用控制变量的方式来“管理”它们。这篇文章就用“烘焙”贯穿始终,带你掌握评测稳定性的核心思想。

岗位关联

对 AI 从业者来说,掌握评测稳定性意味着你能复现别人的分数、看懂榜单波动、设计出可信的模型对比实验——避免把一个随机抖动当成了技术突破。

目录
  1. 可视化演示
  2. 稳定性内涵
  3. 温度参数
  4. 提示格式
  5. 选项顺序
  6. 采样策略
  7. 控制变量
  8. 稳定建模
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

评测稳定性关注MMLU分数在不同运行条件下的波动程度。温度参数、prompt格式、选项顺序和采样策略等因素都可... 切换模式查看不同维度。

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

评测稳定性的:核心原理 动态展示关键流程与数据流动 交互控件调节参数实时渲染 f(x) = transform(x) 核心概念的可视化呈现

稳定性内涵

设想你是一位烘焙师,接到一份写满了原料比例的蛋糕配方。你严格按照配方操作,却发现三次成品的重量都不同。你会明白:配方描述的是“理想结果”,而现实结果取决于一连串环境条件。MMLU 评测也是这样——同一个模型、同一份题库,只要运行条件不同,分数就会或大或小地漂移。

所谓“评测稳定性”,就是指一个模型在 MMLU 上的得分,在不同环境、不同设置下重复运行时能保持多大程度的一致。如果稍微换一种 prompt 写法,分数就从 68 跳到 74,那么这个分数就不太“稳”。不稳定的分数会误导我们:无法判断一次提升是模型真的变强了,还是只是运气好。

那么 MMLU 的分数到底是怎么算出来的?它并不是一个神秘的黑盒读数,而是一次次对错判断的汇总结果。把所有题目的回答按照“答对算 1、答错算 0”加起来,再除以题目总数,就得到了最终的百分比得分:

回到烘焙的比喻:这个公式就像“好吃的蛋糕块数 ÷ 总块数”。只要烤箱温度(环境条件)一变,你数出来的“好吃块数”就会变,最终比例自然也就不同了。

AccuracyMMLU=1N∑i=1NI(ci)\text{Accuracy}_{\text{MMLU}}=\frac{1}{N}\sum_{i=1}^{N}I(c_i)
这个公式说明:MMLU 得分是“答对比例”,它可以随题目样本和运行噪声而变化,所以我们需要关心它的波动,而不只是单个数字。
  1. 题目总数$N$ 表示这次评测总共使用了多少道题,MMLU 通常包含数万道覆盖多学科的选择题。
    NN
  2. 逐题累加$\sum_{i=1}^{N}$ 表示从第 1 题到第 $N$ 题,把每一题的“是否正确”结果依次加到一起。
    ∑i=1N\sum_{i=1}^{N}
  3. 判断指示$I(c_i)$ 是一个指示函数,当第 $i$ 题回答正确时取值为 1,回答错误时取值为 0。
    I(ci)={1答对0答错I(c_i)=\begin{cases}1 & \text{答对}\\ 0 & \text{答错}\end{cases}
  4. 取平均$\frac{1}{N}$ 将累加结果除以题目总数,最终得到一个 0 到 100 之间的百分数。
    1N\frac{1}{N}

温度参数

烘焙中,烤箱温度是最容易“任性”的变量:温度高了,外焦里生;温度低了,半天不熟。在 LLM 评测中,temperature 参数就是这样一个“火候旋钮”,它直接控制模型回答时有多“随机”。

当温度设为 0 时,模型每次都选择概率最高的那个词来回答,这种策略叫贪心解码,输出几乎是完全确定的——只要输入不变,答案不变。而把温度调高,模型就不再只选最大值,而是按照概率分布“抽签”选择词。温度越高,这个概率分布被抹得越平,低概率的词语也可能被选中,答案也就越来越飘忽。

这个“抽签概率”的数学形式是带温度的 softmax。设模型对某个位置各个候选词的原始得分为 $\text{logit}_i$,温度 $T$ 会先对所有 logit 做一次“缩放”,再变成概率:

所以在评测中,如果两个人用了不同的温度跑同一个模型,分数可能差好几个点。这就像配方明明一样,一个用 170 度、一个用 200 度,烤出来的蛋糕自然不会一样。

pi=e logiti/T∑j=1Ke logitj/Tp_i=\frac{e^{\,\text{logit}_i/T}}{\sum_{j=1}^{K}e^{\,\text{logit}_j/T}}
温度 $T$ 越大,不同候选词之间的概率差异越小,输出越随机;$T$ 越小,概率越集中在最高分候选词上,输出越确定。
  1. 原始得分$\text{logit}_i$ 是模型给第 $i$ 个候选词打的原始分,分越高表示模型越“倾向”选它。
    logiti\text{logit}_i
  2. 温度缩放把每个原始分都除以 $T$。当 $T=1$ 时相当于不做缩放;$T<1$ 会拉大分数差异,让最高分更突出;$T>1$ 会压缩差异,让分布更平坦。
    logiti/T\text{logit}_i/T
  3. 指数化$e^{x}$ 把缩放后的分数变成正数,并且放大分数之间的相对差距,方便后续转成概率。
    e logiti/Te^{\,\text{logit}_i/T}
  4. 归一化分母$\sum_{j=1}^{K}e^{\,\text{logit}_j/T}$ 把所有候选词的指数值加起来,再作为分母,保证所有概率之和为 1。
    ∑j=1Ke logitj/T\sum_{j=1}^{K}e^{\,\text{logit}_j/T}

提示格式

同一份配方,写成“白糖 200 克”和写成“糖约两杯”,烘焙结果可能完全不同——份量固然相同,但理解成本不同、误差也不同。提示词(prompt)就是给模型看的“配方写法”。

在 MMLU 评测中,prompt 的格式包含多个可变的细节:问题表述是用“以下哪个选项正确?”还是“请回答该问题”;指令措辞是中文还是英文;少样本示例给 1 个还是 5 个;示例的呈现方式是用对话格式还是纯文本格式……这些看似“无关紧要”的写法差异,都会改变模型对任务的理解,进而改变答对概率。

一条好的“配方式” prompt 应当清晰、稳定、可复用。评测者通常会把 MMLU 的题目统一套进一个固定的模板中,比如:

如果模板不断变化,就相当于每次烤蛋糕都换一种配方写法,分数自然没法直接比较。这也是为什么正规评测榜单会公开并锁定 prompt 模板——不是为了限制创新,而是为了确保所有参赛模型拿到的是同一份“配方说明书”。

text4 行
The following are multiple choice questions about {subject}.Question: {question}Choices: {choices}Answer:

选项顺序

烘焙里,“先加糖再加油”还是“先加油再加糖”会影响面糊的状态。选择题里,选项的排列顺序对 LLM 也有类似影响——这就是位置偏差。

假设同一道 MMLU 题,正确答案是 B。把选项顺序固定为 A/B/C/D,模型可能因为“更习惯选 A 或 C”而答错;如果把选项顺序打乱成 D/A/C/B,同样的题目,模型也许就答对了。也就是说,模型对一个选项的偏好,不只来自选项内容本身,还来自它所在的位置。

为什么会这样?很多 LLM 在训练语料中见过大量“标准格式”的题目,A、B、C、D 的位置就悄悄和某种概率关联了起来。这就像一只习惯了“盐罐永远放在左手边”的厨师,一旦你把盐罐换到右手边,他做菜时就会犹豫。评测稳定性要求我们尽量减少这种“位置带来的运气成分”。常见的做法是:评测时把选项顺序随机打乱(shuffle),或者用多组不同顺序的结果做平均。这样一来,任何单一位置的“地利”都会被摊平,分数更接近模型真实的知识水平。

采样策略

面糊的搅拌手法也会影响蛋糕的松软度:搅得太狠,气泡过多,成品结构松散;搅得均匀,组织才细腻。LLM 的采样策略就扮演了“搅拌手法”的角色。

temperature 控制的是随机程度,而采样策略决定的是“在多大概率范围内抽签”。比如 核采样(top-p) 会在累计概率达到某个阈值 $p$(如 0.9)的最小候选集合里采样,阈值设置不同,输出同样会变化。除此之外,即便温度相同、策略相同,模型每次生成的随机数不同,答案也可能不同。

这意味着,单次运行 MMLU 就像只烤一个蛋糕来判断配方好坏——太依赖运气了。更可靠的做法是“多烤几次、看平均状态”:同一条件下运行多次,观察分数的均值与方差。如果多次运行分数都挤在一起,说明评测稳定;如果忽高忽低,说明采样策略引入了大量噪声。实际工程中,我们通常用多次运行的平均分作为模型的代表分数,同时记录标准差,用来告诉别人“这个分数究竟有多可信”。

控制变量

要找出蛋糕问题出在哪个环节,聪明的烘焙师会“一次只改一个条件”:这炉只加温度,那炉只换面粉,然后对比结果。这就是控制变量。

在 MMLU 评测中,控制变量的意义同样重大。假设你要对比两个模型谁更强,正确流程是:固定题库不变、固定 prompt 模板不变、固定选项顺序规则不变、固定采样策略不变,只允许“模型本身”这一个变量发生改变。如果同时改了 prompt 和温度,即使模型 B 分数更高,你也不知道优势来自模型还是来自配置。

实践中有几个具体抓手。第一,固定随机种子:通过给随机数生成器设定种子,让多次实验的“随机”在相同路径上重现,减少采样带来的干扰。第二,预设模板:把 prompt 模板写死在评估代码里,任何人不经评审不得改动。第三,统一流程:所有模型用同一套脚本、同一批测试题、同一个硬件配置环境下运行。这样做的目的并不是消除所有随机性——随机性不可能消除——而是让随机性不会“莫名其妙地偏向某一方”。

为了量化剩余随机性的影响,我们引入标准误(Standard Error)。如果同一条件下运行 $n$ 次,得到分数的标准差为 $\sigma$,那么平均值的标准误和对应的 95% 置信区间可以写成:

这就像你用一个不太准的温度计测烤箱,多测几次再取平均,得到的读数才更接近真实温度;同时你还能给出一个“大约在 170 到 180 度之间”的区间,而不是拍脑袋说“就是 175 度”。

SE=σn,CI=xˉ±1.96×SESE=\frac{\sigma}{\sqrt{n}},\qquad CI=\bar{x}\pm 1.96\times SE
标准误告诉我们“多次运行的平均值”离真实水平有多远;置信区间则给出了一个范围,真正的水平大概率落在这个范围内。
  1. 样本标准差$\sigma$ 是多次运行分数的标准差,反映分数围绕平均分的离散程度。
    σ=1n−1∑i=1n(xi−xˉ)2\sigma=\sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})^2}
  2. 样本量开方$\sqrt{n}$ 是运行次数的平方根。运行次数越多,分母越大,标准误越小。
    n\sqrt{n}
  3. 标准误$SE=\frac{\sigma}{\sqrt{n}}$ 表示“用多次运行的平均分去估计真实水平时,平均分本身的波动幅度”。
    SE=σnSE=\frac{\sigma}{\sqrt{n}}
  4. 置信区间$\bar{x}\pm 1.96\times SE$ 给出了一个范围。95% 置信区间意味着在反复抽样中,大约 95% 这样的区间会包含模型的真实水平。
    xˉ±1.96×SE\bar{x}\pm 1.96\times SE

稳定建模

最后一步,是把稳定性思维变成你的工作习惯。一个只写数字的评测结论,就像只说“蛋糕大概不错”而不给任何操作参数——别人无法复现,也无法信任。

可靠的做法是给分数建立“稳定性档案”:报告多次运行的平均分,同时也报告标准差或 95% 置信区间;说明使用的温度、prompt 模板、选项顺序规则、随机种子等关键配置。当你要声称“模型 A 比模型 B 高 2 分”时,先看一眼置信区间——如果两个模型的区间大量重叠,那这 2 分的差异可能只是噪声。

这种方式也解释了为什么真正权威的 LLM 榜单往往要求提交方提供详细的评测配置,甚至用统一的评测框架去复现分数。因为榜单的意义不只是排出一个名次,而是给出一个“可复现、可比较、可追溯”的评测信号。作为一个 AI 从业者,当你拿到一份 MMLU 分数时,应该条件反射地问三个问题:这个分数是跑了几次得到的?用了什么温度?prompt 模板和选项顺序是怎样的?这三个问题的答案,决定了这个分数在你心中有多重。

学会读稳定性,你就不再会被单个漂亮的数字迷惑。你手里的“配方”,终于有了精确到克、到度、到分钟的整套参数。

AI 应用场景

模型发版前稳定性体检

阶段:评测设计与结果验证

解决的问题:传统评测只跑一次模型,拿一个最高分就上报,导致发布后用户复现不出相同结果,引发信任危机。通过稳定性体检,可以在发版前掌握分数波动范围,避免夸大模型能力。

具体案例:某大模型团队在发布新版模型前,在固定 MMLU 题库下用 5 组不同随机种子运行评测,记录平均分与标准差。结果发现新模型比旧版高 1.8 分,但 95% 置信区间重叠超过 80%,团队判断这并非显著提升,于是决定继续调优而不是匆忙发布。

开源基准复现审核

阶段:模型对比与论文审校

解决的问题:开源项目或论文报告的 MMLU 分数经常因评测配置缺失而无法复现。用控制变量思维审查,可以定位分数差异来自模型真实差距还是评测设置不同。

具体案例:一家 AI 公司的技术团队在选型开源模型时,用统一模板、统一温度(temperature=0)、统一选项洗牌规则,对候选模型逐一重测。结果发现某模型原报告 72 分,复现仅 68 分,原因是原作者使用了不同的少样本示例数量。团队据此将评测配置标准化,形成了内部选型基准。

Prompt 提示词方案火候调优

阶段:提示工程调优

解决的问题:同一个模型配不同的 prompt 模板,效果时好时坏,难以判断哪个模板真正更好。利用稳定性方法,比较不同模板的均值与波动,避免被单次运气误导。

具体案例:某知识问答产品团队设计了三种 MMLU 风格测试模板,对每种模板在同一模型上重复运行 10 次。模板 A 平均分 70,波动 ±1.5;模板 B 平均分 69.5,波动 ±0.6。团队最终选择 B,因为它更稳定,在线上真实场景中表现一致。

Python 演示

python31 行
import random def run_mmlu_trial(temperature=0.0, seed=42, option_shuffle=True, prompt_tone="standard"):    random.seed(seed)    n_questions = 40    correct = 0    for q in range(n_questions):        true_logit = 2.0 if prompt_tone == "standard" else 1.2        if not option_shuffle:            true_logit -= 1.5        noise = random.gauss(0, 1.0 + temperature * 3.0)        if true_logit + noise > 0:            correct += 1    return correct / n_questions * 100 def eval_stability(condition, trials=6):    scores = [run_mmlu_trial(**condition, seed=i) for i in range(trials)]    mean = sum(scores) / len(scores)    var = sum((s - mean) ** 2 for s in scores) / (len(scores) - 1)    std = var ** 0.5    se = std / len(scores) ** 0.5    return mean, std, se def show(label, condition):    mean, std, se = eval_stability(condition)    print("%s: 均值 %.2f, 标准差 %.2f, 标准误 %.2f" % (label, mean, std, se)) if __name__ == "__main__":    show("低温(贪婪)", {"temperature": 0.0, "option_shuffle": True})    show("高温(随机)", {"temperature": 1.5, "option_shuffle": True})    show("固定选项顺序", {"temperature": 0.0, "option_shuffle": False})
目的:模拟同一模型在三种不同评测配置下多次运行 MMLU,比较平均分、标准差与标准误,直观展示评测稳定性的差异。
  1. noise = random.gauss(0, 1.0 + temperature * 3.0)温度越高,模拟的“回答噪声”越大,分数越容易波动。
  2. if not option_shuffle: true_logit -= 1.5固定选项顺序会引入位置偏差,压低正确率。
  3. scores = [run_mmlu_trial(**condition, seed=i) for i in range(trials)]同一配置下用不同种子运行多次,收集分数样本。
  4. mean = sum(scores) / len(scores)多次运行的平均分作为该配置的“代表水平”。
  5. var = sum((s - mean) ** 2 for s in scores) / (len(scores) - 1)用样本方差公式计算离散程度,样本数减 1 是为了无偏估计。
  6. se = std / len(scores) ** 0.5标准误由标准差除以样本量开方得到,反映均值估计的精确度。
  7. show("高温(随机)", {"temperature": 1.5, ...})对比实验:只改温度,其他变量不动,体现控制变量思想。

常见误区

误区以为把 temperature 调高,模型更有创造力,所以 MMLU 分数也会更高。“温度就是给模型加智慧的火花。”

正解温度不是智力旋钮,而是随机性旋钮。温度越高,模型越可能在低概率错误答案上“抽签”,MMLU 这类知识题往往答对的概率更高,所以高温通常会加剧分数波动、可能拉低分数。要测真实能力,应该用较低的确定性设置。

为何常见:把“更高的随机性”误解为“更灵活的思维”,忽略了 MMLU 是标准化知识测试,不是开放性创意任务。

误区“我在本地跑了一遍 MMLU 是 71.3,这个模型就是 71.3 分。” 把一次采样当成固定成绩。

正解由于采样策略、随机种子、硬件浮点差异等影响,单次分数只是一个样本。正确做法是多次运行,报告平均分和置信区间,否则无法区分真实差距与随机抖动。

为何常见:人脑习惯把“一个数字”当成“客观事实”,而忽略了背后的随机过程——就像只尝一口蛋糕就评价整炉蛋糕的质量。

误区“模型读得懂内容,不会在意选项是 A 还是 D。” 认为顺序无关紧要。

正解大量实验表明 LLM 存在位置偏差,选项排列变化会导致分数变化。评测时应对选项进行随机洗牌或多样本平均,否则某个固定顺序可能系统性抬高或压低分数。

为何常见:人类做题时选项顺序通常不影响正确率,于是想当然地把这个经验迁移到模型身上,忽略了模型在训练数据中形成的统计偏好。

误区“把温度设为 0,输出完全确定,评测不就绝对稳定了吗?”

正解温度 0 对应贪心解码,词级别的输出确实更确定,但 MMLU 分数仍受 prompt 格式、选项顺序、运行环境浮点运算等因素影响。温度只是其中一个变量,不能一劳永逸地解决所有稳定性问题。

为何常见:只关注了“采样随机性”这一个噪声源,却忽视了其余评测链路中的多种变量。

面试题

Q1. 温度参数设为 0 时,模型解码采用什么策略?

单选题 · easy

  • A.完全随机采样策略
  • B.贪心解码策略← 正确答案
  • C.局部核采样法
  • D.自适应束搜索

答案:B。温度 0 时,概率分布被压得极端尖锐,最高概率的词几乎必然被选中,等价于每一步选最大概率词的贪心解码。选项 A 是高温行为,C 属于有随机性的采样策略,D 与温度无直接关系。

Q2. 标准误 SE 反映的是什么?

单选题 · mid

  • A.单次得分的绝对大小
  • B.均值的抽样波动程度← 正确答案
  • C.模型参数量的大小
  • D.训练数据集的题量

答案:B。标准误 = 标准差 / 样本量开方,衡量的是“多次运行求平均值后,这个平均分与真实水平之间可能的偏差”。A 是标准差描述的,C、D 与标准误无关。

Q3. 想降低随机性对 MMLU 分数的影响,最直接的做法是什么?

单选题 · mid

  • A.增加运行次数并取平均← 正确答案
  • B.提高温度参数值
  • C.减少测试题目数量
  • D.固定使用多轮对话

答案:A。增大样本量能缩小标准误,让平均分更接近真实水平。B 会放大随机性,C 会增大采样误差,D 改变了评测范式,都与降低随机性目标相反。

Q4. 哪些因素会导致同一模型在同一份 MMLU 题目上的分数波动?

多选题 · mid

  • A.温度参数设置← 正确答案
  • B.提示词格式← 正确答案
  • C.选项排列顺序← 正确答案
  • D.GPU 品牌型号

答案:ABC。温度影响采样随机性,提示词格式影响模型对任务的理解,选项排列顺序会产生位置偏差,三者都会改变分数。GPU 型号通常只带来极微小的浮点差异,不是主要波动来源。

Q5. 95% 置信区间为 72.3±0.8%,正确的理解是什么?

单选题 · hard

  • A.约 95% 的区间会包含真实均值← 正确答案
  • B.区间宽度只由题目数量决定
  • C.单次得分必然落入该区间
  • D.分数越界说明模型作弊

答案:A。置信区间描述的是“区间估计覆盖真实值的长期概率”:反复抽样构造区间时,约 95% 的区间包含真实均值。B 忽略了标准差的影响,C、D 都是对置信区间的常见误读。

Q6. 选项顺序偏差指的是什么现象?

单选题 · easy

  • A.模型倾向于选择固定位置的选项← 正确答案
  • B.选项文字长度影响判断
  • C.正确答案总是排在 D
  • D.模型完全无视选项内容

答案:A。位置偏差指模型对某个位置(如 A 或 C)存在统计性偏好,导致选项被打乱后同一题的正确率发生变化。B 属于内容特征而非位置偏差,C 是数据构造问题,D 太绝对。

Q7. 做 MMLU 控制变量实验时,正确的做法有哪些?

多选题 · hard

  • A.同时调温度和提示格式
  • B.只改变一个自变量← 正确答案
  • C.固定随机种子值← 正确答案
  • D.每次换 prompt 模板

答案:BC。控制变量的核心是每次只动一个自变量,同时固定其他条件。固定随机种子可以消除采样随机性干扰。A 和 D 同时改动了多个变量,无法判断分数差异来自哪个因素。

Q8. 当温度 T 趋于无穷大时,采样概率分布会怎样变化?

单选题 · mid

  • A.趋向均匀分布← 正确答案
  • B.集中到最高分项
  • C.所有概率归零
  • D.分布保持不变

答案:A。温度趋近无穷大时,logit/T 趋近于 0,所有候选词的指数都接近 1,概率趋近均匀分布,输出近乎完全随机。B 是温度趋近 0 时的行为。

Q9. 报告 MMLU 结果时,最能体现评测稳定性的做法是?

单选题 · easy

  • A.报告均值与标准差← 正确答案
  • B.只报最高分一次
  • C.四舍五入取整数
  • D.隐藏运行次数

答案:A。均值给出中心水平,标准差给出波动范围,两者结合才能表达稳定性。只报最高分会夸大能力,取整和隐藏运行次数都会丢失关键信息。

Q10. 温度设置过高,可能带来哪些负面后果?

多选题 · hard

  • A.生成答案失去连贯性← 正确答案
  • B.分数波动明显变大← 正确答案
  • C.输出变得完全确定
  • D.模型能力大幅提升

答案:AB。高温让低概率词被频繁选中,答案可能语无伦次、答非所问,同时采样随机性放大导致 MMLU 分数波动加剧。C 是低温特性,D 混淆了随机性与能力提升。