准确率不变,概率质量也不变吗?

准确率不变,概率质量也不变吗?

系列:可信预测实验室:从模型置信度到可检验的拒答

复现目标:让准确率保持原样

前一篇固定模型预测,只改变分箱方式,发现校准误差会随测量口径变化。这一次把问题再往前推进:如果每条样本的预测类别完全不变,概率质量是否也应该不变?这不是文字游戏。准确率只记录答案是否命中标签,无法区分一次谨慎的错误和一次几乎不给正确答案留余地的错误。科研报告若只保留一个准确率数字,就可能把这部分差异全部丢掉。

本篇新增一个受控对照:固定已有的真实分类分数,对所有样本使用相同的正温度,然后比较负对数似然和布里尔分数。前者通常缩写为 NLL,衡量模型给真实标签分配的概率;后者通常写作 Brier,衡量概率向量距离真实标签向量有多远。两者越低越好。我们不训练模型,不拟合参数,也不从结果中选出一个温度带到后续评测。

本次实际验证的结论很具体:四个条件均为二百五十六条中的二百三十三条正确,但概率损失明显不同。这个反例足以否定"准确率相同就意味着概率质量相同",却不足以证明某个温度在新数据上一定更好。

核心思想:只改变概率的尖锐程度

模型输出的 logits 是尚未归一化的类别分数。对每条输入,分类头产生两个数;最大分数对应预测类别。温度变换先把这两个数同时除以一个正数,再通过 softmax 转成和为一的概率:

p i k ( T ) = exp ⁡ ( z i k / T ) ∑ j = 0 1 exp ⁡ ( z i j / T ) p_{ik}(T)=\frac{\exp(z_{ik}/T)}{\sum_{j=0}^{1}\exp(z_{ij}/T)} pik(T)=∑j=01exp(zij/T)exp(zik/T)

这里 i i i 是样本序号, k k k 和 j j j 是类别索引, z z z 是形状为 256 , 2 256,2 256,2 的固定分数矩阵, T > 0 T>0 T>0 是全局温度。小于一的温度通常让概率更尖锐,大于一则使其趋向均匀。因为除以同一个正数不会颠倒大小关系,精确算术下每行的最大值位置保持不变。原本相等的分数仍然相等,所以平局规则也要固定。

Guo 等人在二〇一七年的论文中研究了温度缩放,并报告了其在所研究任务上的校准表现。这里借用的是变换形式;作者实现还会利用验证集优化温度,本篇没有执行那一步。读者应将"论文报告的拟合方法"和"本次人为指定温度的测量对照"分开理解。

图中的标签仅进入损失计算,不进入温度设置。图标是流程示意,柱形和指针没有数值含义;真实测量结果见后面的日志绘图。

公式与模块:概率错在哪里

负对数似然采用自然对数,定义为:

L N L L = − 1 n ∑ i = 1 n log ⁡ p i , y i L_{\mathrm{NLL}}=-\frac{1}{n}\sum_{i=1}^{n}\log p_{i,y_i} LNLL=−n1i=1∑nlogpi,yi

n n n 为样本总数, y i y_i yi 为官方二分类标签, p i , y i p_{i,y_i} pi,yi 为给真实类别的概率。真实类别概率接近零时,损失会迅速增大。这使得少量自信错误可能对总损失产生很大影响。实际计算采用稳定的对数求和指数形式,从 logits 直接求损失,避免先得到数值零再取对数。

本篇的 Brier 使用两个类别平方误差相加的形式:

L B r i e r = 1 n ∑ i = 1 n ∑ k = 0 1 ( p i k − 1 { y i = k } ) 2 L_{\mathrm{Brier}}=\frac{1}{n}\sum_{i=1}^{n}\sum_{k=0}^{1}(p_{ik}-\mathbf{1}\{y_i=k\})^2 LBrier=n1i=1∑nk=0∑1(pik−1{yi=k})2

指示函数在真实类别处为一,其余为零。该定义范围为零到二;如果只计算正类概率与零一标签的平方差,就会得到本篇数值的一半。定义不同不等于实现错误,但不能在没有换算时直接比较。独立审计正是利用二分类下这个两倍关系,避免主程序与检查程序复制同一段求和逻辑。

准确率、对数损失和平方损失回答不同问题。前者忽略最大值之外的概率变化;后两者关注整个预测分布。本篇并不把概率损失下降等同于每个置信区间都校准,也不把它等同于拒答排序改善。评价对象不同,需要不同的实验支持。

官方代码阅读路线

先读固定提交中的 DistilBERT 分类头,确认首位置隐藏状态经过预分类层、激活与分类器后输出两个分数。再读模型配置中的标签映射:零为负向,一为正向。最后读温度缩放作者仓库中的 temperature_scale,确认被除以温度的是 logits,而不是已经归一化的概率。直接对概率做除法,既不是同一个变换,也可能破坏概率和为一的条件。

接着看 set_temperature 如何收集验证数据、计算交叉熵并更新参数。这个阅读步骤的价值,是明确本实验刻意省略了哪些环节:没有优化器,没有反向传播,没有验证集选优。配套源码地图记录具体提交、函数位置和许可;本地概率计算与审计是独立教学实现,不声称逐行复制作者训练代码。神经网络前向仍调用固定版本的官方框架实现。

最小实验与评测协议

数据沿用基线登记:把 SST-2 validation 的稳定编号按固定哈希排序,前二百五十六条为探索池;后面的校准池与协议审计池没有进入本次预测。SST-2 在历史实验中已经用过,这里始终属于复用公开数据的探索性研究,不能称为全新测试。IMDb 三池尚未参与本篇工作,也没有新建语义标签。

检查点固定为 DistilBERT 的英文 SST-2 分类模型,模型版本和数据版本分别完整记录在锁文件中。分词器、截断、标签、设备精度及输入顺序沿用基线。正式的二百五十六条 logits 从已公开的基线提交按字节复用;今天新增执行四温度计算,并对前八条进行一次真实 CPU 重放,用来确认当前环境能够恢复相同模型输出。

在读取本次温度比较结果前,协议写入四个值:零点五、一、二、四。所有条件都保留,不做连续搜索,不增补看起来可能更优的值。每个条件保存逐样本概率、预测、正确性、NLL 和 Brier,共一千零二十四条派生记录。随机种子登记为一百一十四,但本次变换是确定性计算,没有抽样步骤。

八条真实重放的前向耗时约零点零七六秒,导入完成后的总耗时约零点五四五秒,进程峰值常驻内存约八亿字节。它们是这次试跑的测量值,不是完整数据集耗时,也不包含重新下载资源的成本。下载与预处理复用已核验缓存;正式推理日志保留原始时间,不能把旧运行时间改成今天来制造新实验。

实际结果:同样的答案,不同的代价

温度 正确数/总数 NLL Brier(双类别求和)
0.5 233/256 0.736700 0.179870
1 233/256 0.385259 0.169913
2 233/256 0.248380 0.148634
4 233/256 0.283421 0.153549

四种准确率都为百分之九十一点零二,且逐样本预测相同,不仅仅是正确总数碰巧相同。从温度一到二,两种概率损失均下降;继续升到四,又出现回升。这个负结果值得保留:把分布变平并不保证持续改善概率质量。表中的二只是四个预定条件中观察到的较低值,不是经过独立校准得到的推荐参数。

为了理解原因,我们把 NLL 分成正确样本和错误样本两部分,二者都除以完整的二百五十六。温度一时,两部分贡献约为零点零一六一和零点三六九二;温度二时变成零点零五一三和零点一九七一。错误贡献的下降超过正确贡献的上升,因此总值降低。温度四时,正确贡献升至零点一六二七,错误贡献降至零点一二零七,两者相加反而高于温度二。

这项分解是同一结果的算术解释,不是新发现的样本因果机制。我们没有阅读错误文本来赋予"讽刺""歧义"等语义标签,也没有声称错误来自某类语言现象。后续若需要这种解释,应先建立标注规范和实际审核,而不是从损失大小倒推语言学原因。

独立复算与失败排查

主程序从两个缩放后的分数计算 softmax。检查脚本另从两类分数差计算 sigmoid,再用稳定的 softplus 重建 NLL,并用单正类平方误差的两倍重建 Brier。全部派生行、正确数、均值与分组贡献均已实际核对,最大绝对数值偏差约为一千万亿分之二。输入文件哈希、脚本哈希、执行命令与退出码均保存,自动复算不会被写成语义人工审核。

如果预测类别发生变化,先排查温度是否为正、是否给不同类别使用了不同温度,以及代码是否意外重新推理。若所有概率损失恰好差一倍,优先检查 Brier 定义。若 NLL 出现无穷值,应检查是否先把概率舍入到零,或在低精度下直接指数运算。不要为了消除异常就偷偷裁剪概率;裁剪会改变正在测量的量,必须作为新配置记录。

这次绘图首次建立字体缓存时出现目录不可写警告,日志保留,最后图像正常产出。它没有影响模型输出或损失。把环境提示与科学失败分开登记,可以避免为了修复绘图而重跑全部推理,也能让读者知道哪些阶段确实执行过。

源码与复现入口

本篇完整可浏览源码已公开:固定提交目录、README 与运行说明、SOURCE_MAP 源码地图。归档包含模型获取与推理入口、概率分析、独立审计、固定依赖与验证记录。固定版本已匿名下载,全部文件与本地归档逐一核对一致。

最小分析命令是 python analyze.py && python check_analysis.py,预期生成逐样本温度记录、聚合结果和审计报告。真实模型重放使用 python execute.py smoke --cache .cache112;首次运行先按 README 获取固定资源。当前实际执行范围为复用二百五十六条真实预测、四个温度分析与八条新重放,不包含重新训练、全基准评测或独立确认。

研究问题与总结

本次没有置信区间,因为目标首先是展示固定预测上的确定性反例;图上也不伪造误差线。若要估计新样本上的差异,需要事先确定配对统计方案与独立评估数据。若要选择温度,则必须把拟合和评估分离。现在直接采用表现较好的温度,再在同一批数据上报告收益,会把测量对照变成有选择偏差的方法比较。

下一步可检验的问题是:这些自信错误在预先规定的长度和原始标签分组中是否集中?这个问题可以继续利用现有预测推进,又不会提前消耗确认数据。本篇留下的可靠结论则更基础:答案是否正确与概率分配是否合理是不同维度;固定准确率之后,概率损失仍可以变化,而且变化存在代价交换。只有把这两个维度分别保存、分别检查,后续的校准与拒答实验才有可审查的起点。

参考资料

检索日期:2026-10-30。以下均为一手来源;论文结论、官方实现与本次实验结果分别陈述。

  1. Guo, Pleiss, Sun, Weinberger. 2017. On Calibration of Modern Neural Networks,ICML/PMLR 70,1321--1330。
  2. 作者温度缩放实现,固定提交,温度除法与验证集拟合路线。
  3. DistilBERT SST-2 官方模型卡,固定检查点与标签信息。
  4. Stanford NLP SST-2 固定数据版本,数据许可标记 unknown,源码不分发原始语句。

作者作品

以下是作者自己的开发时间。除了科研写作,我也独立开发了一些日常工具,欢迎按自己的需要了解:日常收支小记 用于记录收支、安排预算和储蓄目标,在 App Store 查看;一事微光 帮助你按时间与精力选择小行动,并记录完成后的感受,在 App Store 查看。作品内容。

相关推荐
诸神缄默不语1 小时前
小春学习日刊 2026年第9期:2026.10.31
人工智能
Raas1001 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
跨境小彭1 小时前
Temu 全托管模式下,SKU 利润核算的实践复盘
大数据·运维·人工智能·自动化·temu
数智园区合作社1 小时前
问数平台怎么把同一个指标锁成一个数
大数据·数据库·人工智能·ai
hhb_6181 小时前
大模型落地三重优化实战
人工智能·算法·机器学习
天远数科2 小时前
零信任架构实战:基于天远企业法人四要素高级版构建自动化供应商资质穿透核验网关
人工智能·架构·自动化
Vaxmzzy2 小时前
告别 “复读机式” AI 直播|易播 AI 直播系统:为中小商家打造全链路带货增长工具
人工智能
云和数据.ChenGuang2 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain
lbb 小魔仙2 小时前
Windows搭建PaddleOCR+飞书Webhook自动打卡通知机器人:识别、推送与远程触发完整教程
数据库·人工智能·prometheus·时序数据库