两个模型与同一组实验样本

  • 日期:2026-10-13
  • 读者:研究生、科研新人和工程型研究者
  • 范围:同一小模型的两个训练检查点、64条既有开发样本;探索性分析,不是完整基准排名。

摘要:领先一题,究竟说明什么

两份结果分别是58题正确和57题正确。排行榜会把前者放在上面,却不会告诉我们:它们是各有所长,还是只在同一题上分歧?这两种情况可以有相同的平均分差,支持的研究判断却很不同。

本篇复用此前训练得到的两个真实检查点,重新生成同一批SST-2情感分类样本的回答,再用配对区间检查这一个差距。实际结果是:后者0胜、1负、63平,差值为负1.5625个百分点。配对百分位区间为负4.6875到0个百分点;打散对应关系的错误对照则得到负12.5到正9.375个百分点。区间变窄说明保留对应关系很重要,但只有一条分歧,不能据此宣布稳定胜出或两个模型等效。

复现价值:承接评分审计,再问不确定性

前一篇检查答案抽取规则与人工审核的边界;已有总体审核确认,但没有提供逐题标签,所以人工误判率仍然未知。本篇不把那个确认当作可计算的人工金标,也不重新挑评分器。我们返回已有训练项目,冻结严格JSON格式且标签正确的联合指标:只有输出是指定JSON对象、唯一情感标签符合数据标签,才计为正确。

新增问题只有一个:当两模型做的是同一组题,应如何描述平均差值的不确定性? 改变的是统计重采样方式,冻结的是检查点、数据、提示、解码与评分。配对指每题同时保留两个模型的结果;自助重采样又称bootstrap,指从已观测单位中有放回抽样,用这些重复样本观察统计量的变化。

这里的两个模型是同一基础模型经过不同训练顺序得到的检查点,不是两个架构或两个厂商系统。此前结果已经公开,我们按种子编号取前两个重排检查点,没有资格把选择称为事前盲选。这份区间用于理解现有开发结果,不能替代最后的确认评测。

核心思想与公式:先配对,再求差

令第ii题两个模型的联合正确性为xi,yi∈{0,1}x_i,y_i\in\{0,1\},固定以B减A:

di=yi−xi,Δ^=1n∑i=1ndi.d_i=y_i-x_i,\qquad \widehat{\Delta}=\frac{1}{n}\sum_{i=1}^{n}d_i.

其中n=64n=64,did_i只能取负一、零或一,分别表示B输、打平、赢。百分比乘一百后得到百分点差。本次两个正确性数组形状均为[64][64],差值数组也为[64][64];不能把两个数组拼接后声称有128个独立观察。

每次重采样产生一组行索引I1,…,InI_1,\ldots,I_n,两个模型必须共用它们:

Δ^∗=1n∑j=1n(yIj−xIj).\widehat{\Delta}^{*}=\frac{1}{n}\sum_{j=1}^{n}(y_{I_j}-x_{I_j}).

星号表示一次有放回重采样的统计量,IjI_j从原来的nn行均匀抽取。我们固定两万次重复、随机种子9800,取差值分布的2.5%与97.5%线性分位数。这里显式选择百分位法,便于审查每一步,不声称它在小样本下有精确覆盖率。

为何独立抽两个数组不合适?在独立同分布的行假设下:

Var⁡(Δ^)=Var⁡(X)+Var⁡(Y)−2Cov⁡(X,Y)n.\operatorname{Var}(\widehat{\Delta})=\frac{\operatorname{Var}(X)+\operatorname{Var}(Y)-2\operatorname{Cov}(X,Y)}{n}.

X,YX,Y代表同一随机题上的两份正确性,协方差描述两者共同答对或共同答错的程度。打散配对会丢掉这一项。本例两者高度同向,错误抽法因此给出更宽区间;如果协方差为负,方向可能相反,不能把“配对总会更窄”当作定理。

官方代码阅读路线:一个参数背后的协议

共享行索引的配对评测流程

论文层面,Dror等人在ACL2018讨论了任务、度量与实验设置如何影响统计检验选择;它并没有报告本文两个检查点的成绩。[1] 实现层面,我们使用SciPy 1.13.1的官方bootstrap接口。先读参数校验函数:开启配对后,它把数据转换成共享的行索引;再读重采样函数;最后读百分位和标准误的计算。[2]

最容易漏掉的是默认值:官方默认方法为BCa,而本文明确指定百分位法;随机状态也明确传入NumPy的Generator。只抄函数名而不保存参数,复跑就可能改变结果。源码地图给出固定提交、函数和行号,并记录官方文件与安装文件逐字节相同。模型生成继续调用固定Transformers版本的模板、前向与生成接口。[3]

教学脚本另写了一条直接索引路线,逐次对照全部两万份官方差值;独立审计脚本则不导入生产评分代码或SciPy,重新解析输出、统计四格表,并用二项分布复算本例的经验重采样分位数。前者能抓接口理解错误,后者能抓共享实现中的算术错误;两者都不是对总体统计假设的证明。

最小实验:身份先于分数

基础模型是SmolLM2-135M-Instruct,模型和分词器锁定同一修订;两个检查点分别来自种子93与94的类内重排训练。[4] 原训练都使用32条样本、64次更新和1024个监督token。本次不重新训练,而是核对检查点文件哈希,再加载真实权重生成回答。

数据沿用SST-2的固定验证划分中64条开发样本,标签为31负、33正。[5] 训练顺序变化未改变模板、贪心解码、最大32个生成token或输入上限。先做两题乘两模型的资源试跑,再执行完整128次生成;保留128条SST-2与64条新闻确认样本,均未推理。

实际运行在CPU、单精度、四线程完成。新输出的token、提示哈希、题号、标签与原缓存逐项相同,只有测得耗时不同。每模型输入5250个token、输出512个token,包含结束符。首题输入形状为[1,83][1,83],模型输出张量为[1,83,49152][1,83,49152],最后一维是词表大小。正式运行在导入依赖后耗时22.675秒,进程峰值常驻内存为1,677,852,672字节;包含进程启动的总墙钟时间为25.699秒。GPU内存未测,因为没有使用GPU。环境与资源数据均来自真实日志。

第一次试跑卡在旧云盘源码缓存读取,尚未进入推理。我们保留中断记录,把下载核验清单缩减为本次必需的11个模型、分词器与验证集文件,官方源码另行匿名获取核验。没有更换数据或模型,也没有把失败轮次从实验史中抹去。

缓存身份也需要可审计。只写模型名不够:同名模型可能有新修订,分词器模板或解码上限变化也会改变输出。本包把基础权重与分词器修订、检查点哈希、数据文件哈希、提示配置、解码规则以及代码哈希纳入身份记录。真实推理与统计重放各自保存命令、退出码和输入身份;读者能够判断自己重算的是哪一批输出,而不是只看到一个无法追溯的总分。

评测协议与实际结果:把一分差拆开

同一道题的情况 题数 对B减A的贡献
两者都正确 57 0
两者都错误 6 0
A正确、B错误 1 −1
A错误、B正确 0 +1

这张表比两个平均值多提供了一个事实:全部差异来自验证题号481。两个输出都满足JSON格式,区别是情感标签。仅有这个题号和模型差异,不能推导“否定句导致训练顺序不稳定”等语义解释;那需要另行定义错误类别、准备反例,并在新的样本上检验。

本次实际验证: A为90.625%,B为89.0625%;配对区间为[−4.6875,0][-4.6875,0]个百分点,独立错误对照为[−12.5,9.375][-12.5,9.375]个百分点。两万次官方重采样与直接索引完全一致,独立算术复算也通过。区间只描述当前两个固定检查点在这批开发行上的重采样敏感性。

还必须解释上界为何恰好为零。经验样本里没有B独赢的行,重采样无法凭空产生这种行。因此,这个端点不是“B在总体上不可能更好”的证据。仅对不一致题做双侧精确二项检验,当前只有一次失败,得到p=1p=1;它表示在该对称无优势假设下,一次不一致的方向没有提供反对假设的证据,不是零假设为真的概率;它同样不能证明两模型相等。区间估计、显著性检验和等效检验回答的是不同问题。

失败排查:先找丢失的对应关系

复算器首先拒绝重复题号、漏配对、标签不一致和提示哈希错位,再检查评分与原文是否相符。八项检查包括故意破坏这些字段,以及打乱记录顺序后结果仍不变。按行号相减而不按稳定题号对齐,往往会得到看似正常的均值,却失去真正的比较对象。

第二个隐患是观察单位。当前数据接口没有电影或原评论分组标识,我们只能公开说明按行重采样的条件假设。若未来取得一部电影下多个句子的映射,就应整组抽取电影并保留组内句子;不能伪造分组,也不能把同一题的多个模板当作新独立样本。缺少分组证据时,这份区间对新电影分布的外推仍待核验。

第三个隐患是选择过程。开发样本此前参与过分析,bootstrap不会自动消除这种选择偏差。把重复次数从两万加到二十万,只能减少蒙特卡洛近似误差,不能增加新题,也不能补回未观察到的胜负模式。训练种子的波动同样不在本篇区间之内;要研究训练程序,必须重新定义跨运行的估计对象。

从结果提出可检验的研究问题

作者推断是:本例最值得补充的是新独立样本上的分歧结构,而不是更多小数位。可检验假设可以写成:“在冻结评分与提示后,两个检查点的性能差是否仍集中于少数题?”随后预先规定样本来源、分组单位、主要指标和实际关心的差值大小。

如果要宣称等效,应在看新结果之前给出可接受差值范围,再选择适合设计的区间或检验;不能看见区间接触零就改写成“效果一样”。下一步还要记录所有候选提示和评分设置,把改进选择留在开发集,最后只对冻结方案做确认。本文没有提前打开保留集来让故事更完整。

源码与复现入口

本篇源码已公开并逐文件核验:固定提交源码目录、README运行说明、SOURCE_MAP源码地图。54个分发文件与本地归档一致,下载后的独立复算和真实模型试跑通过。

最小命令如下,它只重放已保存的真实预测,不产生新的模型回答:

python run.py --out replay-new

预期得到逐题配对表、汇总、重采样频数和环境记录。README另给真实模型试跑、完整128输出重建及前篇固定源码获取命令;模型权重和原数据通过锁定来源取得,不依赖作者本地路径。独立审计、配置、精确依赖、失败说明与许可证一并交付。

总结

领先一题是一个观测事实,科研报告还应交代这一题属于什么样的配对结构、估计依赖什么抽样假设、哪些不确定性没有覆盖。本次保留对应关系后得到更窄区间,也看到只有一条分歧带来的边界问题。可审查的结论因此是一个有限的开发集观察,而不是新的模型排行榜。

参考资料

检索并实际访问日期:2026-10-13。

  1. Rotem Dror、Gili Baumer、Segev Shlomov、Roi Reichart,2018,The Hitchhiker’s Guide to Testing Statistical Significance in Natural Language Processing,ACL;论文全文。
  2. SciPy开发者,bootstrap 1.13.1官方文档;固定提交实现。
  3. Hugging Face,Transformers 4.49.0固定生成实现。
  4. HuggingFaceTB,SmolLM2-135M-Instruct固定模型卡。
  5. Richard Socher等,2013,Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank;SST-2固定数据卡。