版权与内容来源声明
本文为原创整理。文中涉及官方文档、开源仓库、论文与公开报道的内容,均在附表 A 中标注来源;引用官方原文保持原样,不作改写。文中命令、版本号与界面截图以本文成文时的实测/核验结果为准,标注「待验证」的部分请以你本地环境实际输出为判断依据。本文不推荐任何不合规的软件获取方式,也不对任何收益结果作承诺。转载请注明出处。

算法工程师转到大模型,最想带过去的东西不是某个模型结构,而是对照实验的手感:改一个变量、看指标、判断有没有用。这套手感在推荐、CV、风控里救过很多人,到了生成任务上却经常给出假结论。不是实验没做,是对照的形式做对了,量到的东西还是假的。

读完你能判断三件事:手上那份消融结论值不值得信;模型给你的对照脚本具体错在哪几行;下一次跑对照要补哪几个数字才算数。

一、三条假设:算法岗的默认世界观,在生成任务上一条条塌

1.1 你信的不是某个框架,是三条假设

先说清两个词。消融实验:把系统里的一个部件拿掉或者换掉,其余不动,看指标掉多少,掉得多就说明这个部件有用。验证集切分:把数据分成两份,一份用来调参、一份只在最后验收时看一次,防止你把答案背下来。这两个动作撑起了算法岗大部分的判断力。

它们能成立,靠的是三条隐含假设:

假设在监督学习里为什么成立在生成任务里为什么塌塌了之后你看到的现象
变量可枚举超参是配置项,写在一个 yaml 里,能列全prompt 是自然语言,改一个标点就是新变量复现时「同一个 prompt」其实不是同一个
指标单调标签固定,accuracy 随能力单调变化输出是自由文本,要先映射回标签才能算分换个问法指标就掉,模型却没变
测试集固定样本不变,模型确定性输出解码带采样,同一个输入两次两个输出同一配置两次跑出两个准确率

三条假设平时不写进文档,因为太基础;一旦不成立,每个对照都在「看起来严谨」和「其实没测到」之间摇摆。

补一条外部证据:Sclar 等人在 ICLR 2024 那篇里,只改提示词的格式(大小写、空格、换行、分隔符),在 LLaMA-2-13B 上测出最高 76 个准确率点的差异,而且加大模型、加示例数、做指令微调都没有消掉这个敏感度。他们给出的建议不是「把 prompt 写好」,而是报告一组合理格式下的性能区间,而不是单一格式下的一个数。

1.2 本机这次跑的是什么,以及它不是什么

先把边界摆正,免得后文的数字被误读。

  • 不是真实模型输出。 本机装不上第三方包(pip 不可用),也没有厂商 API 额度。我用的是一个多项分布采样器:给定每个类别的 logit(模型给该类别的原始打分,还没归一化),除以温度,做 softmax(把打分压成概率),按 top_p 截断,再按概率抽一个类别(温度与 top_p 的定义详见 4.1 节)。它模拟的只有「解码这一步会带来多大波动」。
  • 样本是合成的。 160 条、4 个类别(投诉 / 咨询 / 办理 / 其他),每类 40 条,随机种子 20261103,Python 3.13.14,纯标准库。每条样本有一个「信号强度」,在 0.55 到 2.35 之间均匀取值,正确类别的 logit 等于信号强度,其余为 0,再叠一层建库时抽一次就不再变的样本级噪声。
  • 它测不了模型能力。 一个真模型跑五次,你只能看到「这个模型的波动」;采样器能把「波动」和「能力」拆开看,这是它唯一的价值。

这么设计还有个副作用:模拟器里天然有一批样本落在决策边界上,所以后文会出现「准确率七成、但两次运行有近一半样本判定不同」这种看起来矛盾的数字。这不是脚本写坏了,是四分类采样的数学后果,4.1 节会验算。

1.3 一条判据:效应量要大于噪声带

后面所有对比都只用两个量:

  • 效应量 = 两组五次准确率的均值之差;
  • 噪声带 = 两组重测极差里更大的那个(极差 = 五次里最高减最低)。

判据一句话:效应量小于噪声带,这个消融结论不成立。理由是噪声带量的就是「你什么都不改时,指标自己能摆多大」,比它还小的差,等同于没测到。

这不是置信区间,也不是显著性检验,是一个现场能算、能贴进周报的保守门槛。它不需要假设分布,代价是只会偏严:样本越少、温度越高,门槛越宽,越容易把真效应判成噪声。

二、第一条塌了:变量根本列不全

2.1 你以为在消融 A,实际动了 A+B+C

最典型的一份对照长这样:基线不加示例,实验组加三条 few-shot 示例(放进提示词里的几条示范样本),其他不变,准确率涨了,结论是「示例有用」。

问题在于「其他不变」这句话没法兑现。加示例这个动作,同时改了四样东西:模板字符串(示例插在指令前面还是后面)、示例的排列顺序、上下文总长度(可能触发截断)、以及示例里出现的标签词(会影响模型输出的措辞)。你声明只改了一样,实际动了四样。

Lu 等人在 ACL 2022 那篇里把顺序这一项单独拎出来测:同样四条示例,只换排列,性能就在「接近当时最好水平」和「接近随机猜」之间摆动;他们还发现,对某个模型好用的顺序,换一个模型就不灵了。所以「示例有用」这句话,如果不带顺序,本身就是不完整的结论。

Sclar 那篇的 76 个点同理:格式是语义等价的,人看着一样,模型看着不一样。两篇合起来说明一件事——在这条流水线上,「语义等价」不等于「配置等价」。

2.2 模型给的那份脚本,错在这六处

这是本文最想指名道姓的部分。你把「写个对照实验脚本」丢给模型,它给你的代码通常能跑、能出数、看起来专业,然后在这六个地方默认了不该默认的东西。

模型给的写法为什么错一行改法
random.seed(42) 或 torch.manual_seed(42)固定的是采样种子,模板和参数一个都没锁模板存成独立文件,算 hash 打进日志首行
不写 temperature / top_p,用 SDK 默认值默认值随版本与厂商变,等于你没记录实验条件显式传参,并把实际值打进日志
用「测试集准确率」当可比指标生成任务要先解析输出,解析规则一变指标就变先锁解析器,再比模型
只跑一次,报一个点估计没有极差,两个点估计的差无法判断真伪每个配置至少 5 次,报均值与极差
两组在不同样本上算准确率分母不同,两个比例不可配对同一批样本逐条对齐,做配对表
few-shot 示例从测试集里抽数据泄漏——测试信息进了提示,指标虚高示例只从训练段抽,按 id 去重

第六条要单独说一句。数据泄漏指的是:模型在「答题」时看到了本该保密的答案信息,于是分数很高,上线就崩。scikit-learn 的交叉验证文档把这件事写得很直白:调参时反复看测试集,「关于测试集的知识会泄漏进模型,评测指标不再反映泛化性能」。翻译成 prompt 场景就是:你从测试集里挑了三条「典型样本」放进提示词,那不是示例,那是把答案抄进了考场。

模型还有第七个毛病,不在代码里:它会把「我优化了 prompt」写成结论,而 prompt 在脚本里是内联的 f-string,你 diff 不出来改了哪几个字。改没改、改了几处,全靠回忆。

2.3 一份能跑的对照骨架

下面这段是本机跑通的骨架,toy_predict 是占位模型(八成按标签出、两成乱出),只用来验证框架,不代表任何真实模型。

import random
from statistics import mean


def run_repeats(predict, items, prompt, params, repeats=5, seed=0):
    accs = []
    for r in range(repeats):
        rng = random.Random(seed + r)
        hit = sum(1 for x in items if predict(prompt, params, x, rng) == x["gold"])
        accs.append(hit / len(items))
        print("第 {} 次 {:.4f}".format(r + 1, accs[-1]))
    print("均值 {:.4f} 极差 {:.4f}".format(mean(accs), max(accs) - min(accs)))
    return accs


def toy_predict(prompt, params, item, rng):
    if rng.random() < params["skill"]:
        return item["gold"]
    return rng.choice(["A", "B", "C", "D"])


items = [{"gold": "ABCD"[i % 4]} for i in range(40)]
run_repeats(toy_predict, items, "判断下面这条属于哪类", {"skill": 0.8}, repeats=5, seed=7)

输出五行准确率加一行汇总,均值 0.9100、极差 0.0250。骨架值钱的地方不在 predict,在于它把「重复几次、种子怎么派生、汇总报哪两个数」写死在函数签名里,换模型、换数据集都不用重写。

三、第二条塌了:指标不单调,换个问法就变

3.1 改写一句话,掉了 41.6 个点,其中 40.1 个点是一个「类」字

我在同一批 160 条样本、同一组 logits、同样的温度和 top_p 下,只把提示词从 T1「判断下面这条属于哪类」改成 T2「下面这条应该归到哪一类」。两者语义等价,区别只在措辞。

结果是这样:

口径T1 五次均值T2 五次均值差(T2 − T1)
原始 exact match(逐字比对)0.67130.2550−0.4163
标签归一化后(去掉「类」后缀)0.70250.6875−0.0150

41.6 个点的差距,归一化之后只剩 1.5 个点,缩掉 40.1 个点。

原因不复杂:T2 的问法里带了「哪一类」,输出更常带「类」后缀(模拟器里 T2 的后缀率是 0.62,T1 是 0.04)。原来的评分器逐字比对,「投诉类」和「投诉」算两个东西,于是判错。归一化把后缀 strip 掉,误差基本消失——顺带 T1 也涨了 3.1 个点,因为它自己也有 4% 的后缀。

必须说清楚:这个机制是我在模拟器里设定的,不是真模型实测。 但它对应一个真实现象——很多「换 prompt 效果掉了」的案例,掉的不是模型能力,是解析器没跟上输出形态。你比的不是两个 prompt,你比的是两个正则。

3.2 指标口径:三个数各自在回答什么问题

指标口径指的是:这个数怎么算、分子分母各是谁、哪些样本被算进去了。同一个模型,口径不同可以得出相反结论。

指标回答什么问题什么时候会骗你本文用在哪
accuracy判对的比例类别不平衡时被多数类吃掉主指标,4 个类别各 40 条,均衡
宏平均的F1分数每一类各算一个再取平均小类样本极少时抖动极大本文不用,因为没有不平衡
Cohen’s kappa扣掉「碰巧一致」后还剩多少一致性类别分布偏斜时会失真4.1 节量自一致

Hugging Face 的评测文档开头就写:选指标没有一种放之四海而皆准的办法,通用指标、任务特定指标、数据集特定指标要分开看。落到工程上是一句硬要求:报指标时必须同时报口径,否则这个数不可比。

kappa 值得多说一句。它是 Cohen 在 1960 年提出的,定义是 K =(实际一致率 − 碰巧一致率)/(1 − 碰巧一致率),原文的意思是「扣掉碰巧一致之后,联合判断里真正一致的比例」。四分类下,就算模型完全随机,两次运行也会有约 25% 的样本碰巧同标签——所以看两次运行像不像,不能看一致率,要看 kappa。

3.3 把口径写进脚本

def normalize(label):
    s = label.strip().replace(" ", "")
    return s[:-1] if s.endswith("类") else s


def kappa(a, b):
    n = len(a)
    labels = sorted(set(a) | set(b))
    po = sum(1 for x, y in zip(a, b) if x == y) / n
    pe = sum((a.count(k) / n) * (b.count(k) / n) for k in labels)
    return (po - pe) / (1 - pe) if pe < 1 else 1.0


print(normalize("投诉类"), normalize(" 咨询 "))
x = ["投诉", "咨询", "办理", "其他"] * 5
y = ["投诉", "办理", "办理", "其他"] * 5
print("一致率 {:.2%} kappa {:.4f}".format(
    sum(1 for i, j in zip(x, y) if i == j) / len(x), kappa(x, y)))

本机输出「投诉 咨询」和「一致率 75.00% kappa 0.6667」。一致率 75% 看着不错,kappa 只有 0.67——因为有 25% 是碰巧撞上的。这两个数一起看,才知道这份一致性到底值多少。

四、第三条塌了:测试集固定,答案不固定

4.1 同一配置跑五次,极差 12.5 个点

配置 A:模板 T1、温度 0.7、top_p 1.0,其他全部不变,只换采样种子跑五次。这里的两个解码参数是控制采样随机程度的两颗旋钮:温度(temperature)把 logits 除以它再做 softmax,越小分布越尖、输出越稳;top_p 只保留累计概率刚过 p 的那一小撮候选,再在其中抽样。日志原样摘录(列间距压缩过,数字逐位未改):

A 基线     T1 temp=0.7 top_p=1.0   0.7000 0.6000 0.6625 0.7250 0.6687
极差 0.1250  均值 0.6713  标准差 0.0421
配置五次准确率极差均值
A 基线(温度 0.7 / top_p 1.0)0.7000 / 0.6000 / 0.6625 / 0.7250 / 0.66870.12500.6713
C 降温度(0.2 / 1.0)0.9500 / 0.8812 / 0.9125 / 0.9000 / 0.89380.06870.9075
D 只改 top_p(0.7 / 0.5)0.9125 / 0.9000 / 0.8812 / 0.8812 / 0.91870.03750.8987
E 升温度(1.2 / 1.0)0.4813 / 0.4938 / 0.5000 / 0.5312 / 0.61880.13750.5250

160 条样本,1 条 = 0.625 个百分点,12.5 个点就是 20 条样本。也就是说,你什么都没改,只是重跑,结果就能差 20 条题。任何小于 20 条的「提升」,在这套配置下都是噪声。

为什么用极差而不是标准差:五次的标准差是 0.0421,看着温和,但它默认了一个分布形状;极差是 0.1250,直接回答「最坏能差多少」。报给业务方时,后者更难被误读。

再看一个更刺眼的数:配置 A 的第 1 次和第 2 次,160 条里有 73 条判定不同(45.62%),两次的自一致 kappa 只有 0.3897。

这个数很多人第一反应是「脚本坏了」。验算一下:四分类、单条样本判对概率约 0.7(近似取 0.75 便于心算)时,两次独立采样给出同一标签的概率约 0.583(0.75² + 3 × 0.0833²),翻转率约 41.7%。实测 45.6%,同量级。所以这不是 bug,是多分类采样的数学必然——准确率七成和「近一半样本会翻」可以同时成立。

4.2 二十五组单次对照,七组会得出反号结论

3.1 节那两组(T1 与 T2)各有五次运行,两两配对就是 25 组「单次对照」。每组都能得出一个方向:谁更高。

口径T2 更好T1 更好持平
原始 exact match0 组25 组0 组
归一化后7 组17 组1 组

看第二行:25 组单次对照里,有 7 组会得出「改写措辞更好」,占 28%。归一化后的单次差最小 −0.0812、最大 +0.0687——同一个对比,单次实验能给你 −8.1 到 +6.9 之间的任何答案。

这才是「对照做对了、结论还是假的」的准确含义:流程一步没错,跑一次、比两个数、看谁大,但你比的是这一次的采样噪声。

第一行给了对照组:原始口径下 25 组全部同向。系统性偏差会稳定复现,随机波动不会。 所以你判断一个结论可不可信,先问它是「每次都这样」还是「这次这样」——前者查口径,后者加重复。

4.3 配对显著性:两个准确率不能直接相减

配对显著性指的是:因为两组结果跑在同一批样本上,每条样本之间是有关联的,所以不能把它们当两组独立数据来比。

McNemar 在 1947 年给出的做法是只看「不一致对」:A 对 B 错的条数、A 错 B 对的条数,一致的那些样本不提供方向信息。实务上还有一条经验:不一致对少于 25 对时,渐近近似不可靠,通常改用精确检验。

def paired(hit_a, hit_b):
    b = sum(1 for x, y in zip(hit_a, hit_b) if y and not x)   # A 错 B 对
    c = sum(1 for x, y in zip(hit_a, hit_b) if x and not y)   # A 对 B 错
    return {"只在B对": b, "只在A对": c, "不一致对": b + c}


hit_a = [1, 1, 0, 1, 0, 0, 1, 1, 0, 0]
hit_b = [1, 0, 0, 1, 1, 0, 0, 1, 0, 1]
print(paired(hit_a, hit_b))

输出 {'只在B对': 2, '只在A对': 2, '不一致对': 4}。四条不一致对,两个方向各两条——这就是「没有差别」的样子。反过来,如果你的「提升 2.5 个点」在 160 条上只对应 4 条样本翻转,那它连一次像样的检验都撑不住。

五、反直觉:消融不是「一次只改一个变量」,是「变量列不全」

5.1 大家以为「一次只改一个」,实际是「清单列不全」

大家以为:消融的方法论核心是「控制变量」,只要我一次只改一个,其他都不动,测出来的差就是这个变量的贡献。

实际是:在 prompt 流水线上,「其他」你根本列不全,所以「只改一个」这个动作做不到——你能控制的只是「你意识到的那几个」。你以为在消融 A,实际改了 A+B+C,而 B 和 C 没进你的记录。

三个数字放在一起看:

  • Sclar 等人:只改格式,最高 76 个准确率点;
  • Lu 等人:只换示例顺序,从接近最好水平摆到接近随机猜;
  • 本文 3.1 节:只改一个后缀的解析规则,40.1 个点(本文为模拟器设定值,非真实模型实测)。

三个量级都远大于多数团队汇报的「模块提升 2 到 3 个点」。也就是说,你以为在测一个 2 点的效应,而没被记录的变量随手就能造出 40 到 76 点的位移。这不是「实验不够严谨」,是变量的清单本身不完整。

招聘侧的原话更直接:长亭科技 2026-09-13 发布的岗位职责第 2 条写着「通过对照与消融实验持续改进效果」,镁伽科技 2026-09-01 的任职要求里写着「精通算法实验设计、变量消融、指标评估」。写进 JD 的东西,不会有人替你补方法论。

所以正确的动作不是「更努力地只改一个」,而是两步:先把所有会动的落成可 diff 的版本(模板文件、示例列表、参数、模型版本),再测一次「什么都不改」的噪声带,用它当尺子。

5.2 四个最常被漏掉的变量

变量为什么会动怎么锁
prompt 模板内联 f-string,改字不留痕独立文件 + 内容 hash 打进日志
few-shot 顺序从集合里抽、或用 set 去重后顺序不稳固定列表写死,不用集合
解码参数吃 SDK 默认值,默认值随版本变显式传 temperature 与 top_p
tokenizer 版本换模型或升版本,同一句话切出的 token 不同记录模型与版本号,不跨版本比

前两个属于「代码里看不见」,后两个属于「配置里没写」。四样有一个没锁,你的消融就退化成了一次性的对比实验——能出数,但不能复用,也不能被别人复核。

5.3 锁变量的顺序

顺序不能反,反了会白跑:先锁解析器(口径),再锁模板与示例,再锁解码参数,最后才动你要测的那个变量。理由是从上往下,每一层对指标的影响量级都比下一层大;先锁大的,小的才有意义。

这份对照实验检查清单:把本文的六处脚本错法、四个漏掉的变量、以及「极差 + 配对表」的报告模板整理成了一页纸,可以直接贴进实验记录。放在资料包里,扫码即可获取:

配套资料获取

六、边界:贪心解码且 prompt 完全固定时,这套判据不成立

6.1 什么时候重测极差接近零

必须把不适用的场景写清楚,否则前面五章就成了万能药。

如果解码是贪心的(每一步直接取概率最高的 token,不做采样)、temperature 为 0、prompt 与解析器完全固定,那么同一个输入重复跑,输出逐字相同,重测极差接近 0。这时候传统消融完全成立,你不需要本文这套判据,老老实实一次改一个变量就行。

本文的判据只在「有采样随机性」时需要。判断方法是跑三次同一配置:三次结果一模一样,说明你处在确定性解码下;三次有差,就按第四章的流程走。

还有三种情况会让判据失真:

  • 样本量太小。 160 条时 1 条就是 0.625 个点,极差很容易被单条样本放大;样本越少,噪声带越宽。
  • 类别极不平衡。 accuracy 会被多数类吃掉,kappa 会因分布偏斜失真,两个指标会背离。这时候要换成每类单独报。
  • 模拟器与真模型的差距。 本文的 logits 是构造的,边界样本偏多,所以翻转率高达 45.6%;真实模型的输出分布通常更尖,翻转会少,极差会跟着变小。门槛必须按你自己的实测重算,不能抄本文的数字。

6.2 解码参数本身也在变:截至 2026-11-03 的两次核对

「把参数锁死」的前提是参数存在且含义稳定。截至 2026-11-03,两个厂商的状态不同:

厂商temperaturetop_p对本文的影响
OpenAI Chat Completions取值 0 到 2,仍在参数表里取值 0 到 1,仍在参数表里可以锁,但必须显式传
Anthropic Messages API2026-10-21 版移除2026-10-21 版移除锁不了,只能记录「未生效」

OpenAI 的接口参考里对这两个参数的原话是:温度越高输出越随机,越低越聚焦;并明确建议「改这个或 top_p,但不要两个一起改」。Anthropic 那边,2026-10-21 这个 API 版本把 temperature、top_p、top_k 一起移除,请求里带上就返回 400,即使传的是旧默认值(这一条属于待验证:官方版本页在本机被地区拦截,引文经两处独立转述交叉核对,未能直连原文)。

含义很实际:解码参数不是常量,是一个会随版本消失的开关。 你的对照脚本里如果不记录「这个参数到底有没有生效」,半年后你自己都解释不了这份结果。

6.3 六个术语,落到明天要改的地方

术语模型常错在哪
验证集切分把测试集当调参集,反复看、反复改
消融实验只固定 seed,模板与解码参数没锁
指标口径拿 exact match 去比两种不同措辞
数据泄漏few-shot 示例直接从测试集里抽
解码参数不显式传,吃 SDK 默认值还不记录
配对显著性两组不同样本的准确率直接相减

这张表可以直接当 review 清单用:一份对照实验的报告递上来,六行里有两行答不上来,这个结论就先别进周会。

七、把结论压成一张决策表

7.1 if-则-what

如果就先做判据 / 停手条件
效应量小于噪声带别下结论先加重复次数或降温度,把噪声带压下来
效应量是噪声带的 1 到 2 倍只写「疑似」重复到 10 次再判,报告里带极差
效应量大于噪声带 2 倍可以下结论但先做口径检查:这个差是不是解析器造成的
换措辞后指标方向反了结论只在那套措辞上成立写进限制,不外推到「模型变强/变弱」
两组跑在不同样本上重跑成同一批做配对表,数不一致对,少于 25 对别谈显著性
同一配置三次结果完全一样传统消融可用先确认是贪心 + 参数固定,不是碰巧没波动

这张表里最容易被跳过的是第三行。本文 3.1 节那个 3.33 倍的「大效应」,其实就是口径造成的——倍数够大,结论照样是假的。倍数只解决「是不是噪声」,不解决「是不是你要测的那个变量」。

7.2 明天就能改的三件事

def verdict(effect, band):
    ratio = abs(effect) / band
    if ratio < 1:
        return "{:.2f} 倍:效应量小于噪声带,先别下结论".format(ratio)
    if ratio < 2:
        return "{:.2f} 倍:只够写疑似,重复次数加到 10 次再判".format(ratio)
    return "{:.2f} 倍:可下结论,但必须同时把极差写进报告".format(ratio)


for name, eff, band in [("改措辞(归一化后)", 0.0150, 0.1125),
                        ("升温度", 0.1462, 0.1375),
                        ("降温度", 0.2362, 0.1250),
                        ("改措辞(原始口径)", 0.4163, 0.1250)]:
    print(name, verdict(eff, band))

跑出来四行,前三行是「别下结论」「只够写疑似」「只够写疑似」,最后一行是「可下结论」——而它恰恰是口径造出来的假效应。这四行本身就是提醒:判据能挡住噪声,挡不住你自己选错指标。

落到明天的动作只有三条:把 prompt 存成文件、日志首行打 hash;显式传 temperature 与 top_p 并打印实际值;每个配置跑 5 次,报告里写「均值 ± 极差」,不写单点。

这份评测复盘模板:本文的极差表、25 组单次对照表、配对表格式,以及六个术语的 review 清单,整理成了一份可直接填的模板。放在资料包里,扫码即可获取:

配套资料获取

附表 A:本文引用事实与出处对照表

序号本文用到的事实文件全名与作者/机构编号或文号 + 日期链接本文位置
1只改格式最高 76 个准确率点;建议报区间Quantifying Language Models’ Sensitivity to Spurious Features in Prompt Design or: How I Learned to Start Worrying About Prompt Formatting,Melanie Sclar、Yejin Choi、Yulia Tsvetkov、Alane Suhr,ICLR 2024arXiv:2310.11324;2024-03https://arxiv.org/abs/2310.113241.1、2.1、5.1
2只换示例顺序即可从近最好摆到近随机猜Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity,Yao Lu、Max Bartolo、Alastair Moore、Sebastian Riedel、Pontus Stenetorp,ACL 2022arXiv:2104.08786;2022https://arxiv.org/abs/2104.087862.1、5.1
3反复看测试集会让其知识泄漏;结果依赖切分3.1. Cross-validation: evaluating estimator performance,scikit-learn 文档 1.9.1无文号;截至 2026-11-03https://scikit-learn.org/stable/modules/cross_validation.html2.2
4选指标无通用解,三类指标要分开Choosing a metric for your task,Hugging Face Evaluate 文档无文号;截至 2026-11-03https://huggingface.co/docs/evaluate/choosing_a_metric3.2
5kappa 定义与扣碰巧一致的思路A Coefficient of Agreement for Nominal Scales,Jacob Cohen,Educational and Psychological Measurement 20(1)DOI:10.1177/001316446002000104;1960-04https://doi.org/10.1177/0013164460020001043.2
6配对二分数据只看不一致对Note on the Sampling Error of the Difference Between Correlated Proportions or Percentages,Quinn McNemar,Psychometrika 12(2)DOI:10.1007/BF02295996;1947-06https://doi.org/10.1007/BF022959964.3
7温度取值 0–2、top_p 取值 0–1;建议两者只改一个Create chat completion,OpenAI API Reference无文号;截至 2026-11-03https://developers.openai.com/api/reference/resources/chat/subresources/completions/methods/create6.2
82026-10-21 版移除三个采样参数,带上即 400(待验证:官方页在本机被拦截,经两处独立转述交叉核对)API versions,Anthropic Claude Platform DocsAPI 版本 2026-10-21https://platform.claude.com/docs/en/api/versioning6.2
9JD 原文「通过对照与消融实验持续改进效果」AI大模型算法工程师-北京/杭州,北京长亭未来科技有限公司,中北大学就业创业网转载页面 id 3243999;2026-09-13https://zbjy.nuc.edu.cn/detail/job?id=3243999&online_id=36143195.1
10JD 原文「变量消融、指标评估」算法工程师-半导体,苏州镁伽科技有限公司,应届生求职网转前程无忧编号 job-008-046-426;2026-09-01https://m.yingjiesheng.com/job-008-046-426.html5.1
11160 条样本、5 次重复与全部准确率/极差/kappa 数字本地脚本 2026-11-03-01_消融方差实测.py 与日志 2026-11-03-01_消融方差实测.log(Python 3.13.14,纯标准库)无文号;2026-11-03 运行本地文件1.2、3.1、4.1、4.2、7.2

附表 B:术语速查表

术语一句话解释在本文哪里用到
消融实验拿掉一个部件、其余不动,看指标掉多少第 1、2、5 章
验证集切分调参一份、验收一份,后者只看一次1.1、6.3
数据泄漏答题时看到本该保密的答案,分数虚高2.2
指标口径这个数怎么算、分母是谁3.2
解码参数温度与 top_p,控制采样随机程度4.1、6.2
temperature把 logits 除以它再 softmax,越小越稳4.1、6.2
top_p只留累计概率刚过 p 的候选再采样4.1、6.2
贪心解码每步取概率最高的 token,不采样6.1
Cohen’s kappa扣掉碰巧一致后的一致性3.2、4.1
配对显著性同批样本逐条比,只看一个对一个错4.3

写在最后:这篇用到的资料

写这篇文章时,把相关的官方文档和源码又翻了一遍,顺手也整理了几份配套的东西:

  • 大模型学习路线图:从零基础到能自己动手做 Agent,按阶段说明每一步该学什么、哪些可以先跳过
  • 《LangChain + LangGraph + MCP 智能体开发实战》视频课:7 个模块,从私有化部署、Embedding+RAG 到 MCP+Agent 全流程
  • AI 大模型知识库(在线可查):Agent Skills 从入门到落地、Claude Skills 完全指南等专题,按目录浏览即可
  • 640 套 AI 大模型行业报告 + 经典 PDF 书籍:看行业落地案例和别人怎么做的时候用得上
  • 大模型零基础到精通教学视频:跟着敲一遍,比只读文档快得多

资料是我自己整理的,放在下面这个码上,扫码即可获取:

配套资料获取
课程目录:私有化部署与 LangChain
课程总目录:7 个模块
在线知识库:Agent Skills 创建全流程
课程目录:LangGraph 开发智能体
在线知识库:Claude Skills 完全指南

添加时备注「AI」,优先通过。

资料按「先路线、再动手、最后查漏」的顺序整理好了,建议先看学习路线那一份,照着它挑一条适合自己当前基础的路径再往下看。

Logo

更多推荐