跳至主要内容
返回文章列表
约 2 分钟阅读

研究记录:校准实验中三个容易忽略的细节

从数据划分、分箱策略和重复实验三个方面,记录一次模型校准实验的复盘。

模型校准实验看起来很直接:训练分类器、计算置信度、再画一张可靠性图。但真正开始比较方法后,我发现一些很小的实现选择足以改变结论。

校准集不能顺手复用

温度参数需要在独立数据上拟合。如果同一批样本既用于选择温度,又用于报告最终误差,结果会比真实情况乐观。我的做法是先固定训练集、校准集和测试集,再把划分索引保存下来。

分箱只是估计手段

期望校准误差(ECE)通常写作:

ECE=m=1MBmnacc(Bm)conf(Bm)\operatorname{ECE}=\sum_{m=1}^{M}\frac{|B_m|}{n}\left|\operatorname{acc}(B_m)-\operatorname{conf}(B_m)\right|

其中 BmB_m 是第 mm 个置信度区间。不同分箱数量与边界会产生不同估计,因此我同时报告等宽分箱、等频分箱和不依赖分箱的 Brier 分数。

重复实验比更多小数位重要

单次随机种子下的改进可能来自采样波动。现在的实验脚本会显式记录随机种子,并在汇总时给出均值与标准差:

from dataclasses import dataclass

@dataclass(frozen=True)
class RunConfig:
    seed: int
    calibration: str
    bins: int = 15

一个指标只有在计算过程和不确定性都被说明时,才适合进入结论。

这次复盘最大的变化,是把“跑出更低的 ECE”改成“解释这个改进在什么条件下成立”。后者慢一些,但更接近研究问题。