AI研究

温度缩放能校准域内置信度,换到OOD反而更糟,后处理校准到底该按什么域假设选?

👤 为我痴狂 👁 8 阅读 ❤ 0 点赞 ➦ 0 分享 📅 2026-11-07
首页› AI› AI研究› 正文
温度缩放能校准域内置信度,换到OOD反而更糟,后处理校准到底该按什么域假设选?

摘要:温度缩放(Temperature Scaling, TS)几乎是深度模型置信度校准的“默认后处理”,它在同分布(in-distribution, ID)验证集上通常能把期望校准误差(ECE)压到很低。但工程实践中反复出现一个反直觉现象:同一套在ID上表现良好的温度参数,迁移到分布外(out-of-distribution, OOD)数据后,校准不仅没有改善,甚至比未校准更差。本文不做单点方法评测,而是把“域假设”作为贯穿全文的分析主线,论证后处理校准的选型本质上是“你假设部署时数据来自哪个域、以及你愿意为哪个域的校准误差买单”的问题。文章依次拆解校准目标与评价口径、TS的机制与失效边界、OOD场景下的替代路线(矩阵缩放、向量缩放、局部/分群校准、共形预测等),并给出一套可落地的选型与验证流程,最后讨论该领域的前沿走向与工程边界。

目录

一、导语:一个被反复复现的“校准反转”现象

先描述一个在工业界与学术界都被反复观察到的现象。一个图像分类模型在ID验证集上,未校准时ECE约为0.06,用验证集拟合温度T≈1.7之后,ECE降到0.02左右,可靠性图几乎贴合对角线。随后把同一模型、同一温度部署到跨域数据(例如从自然图像迁移到素描、雾天、医学影像或对抗扰动样本),结果出现两类问题:一是OOD样本上的平均置信度依然偏高,二是校准后的负对数似然(NLL)与Brier分数不降反升。也就是说,TS在ID上“校准得更好”,在OOD上却“校准得更糟”。

这个现象之所以值得单独讨论,是因为它挑战了一个隐含假设:很多人把“校准”当成模型的一个固有属性,仿佛只要找到一个正确的温度,模型在所有输入上就都“诚实”了。但校准本质上是条件于数据分布的统计性质,而不是模型的固有属性。温度是在某个分布上估计出来的一个标量,它压缩的是该分布下logit的尺度;一旦输入分布改变,logit的尺度、类别间的相对结构、甚至模型的系统性偏差都会变化,同一个标量自然不再成立。

本文的主线由此确立:后处理校准的选型,本质上是一次域假设的声明。你选择TS,等于声明“我假设部署分布与校准集同分布,或至少logit尺度偏移是主要误差源”;你选择矩阵缩放或分群校准,等于声明“我假设域偏移主要体现在类别间的相关结构上”;你选择共形预测,等于声明“我不假设具体分布形式,只要求可交换性”。不同的声明对应不同的失效模式,也对应不同的验证口径。后文将围绕这条主线展开。

二、背景与问题定义:校准到底在优化什么

2.1 校准的严格定义与常见变体

设分类模型输出logit向量 z(x),经softmax得到预测分布 p̂(y|x)。完美校准(perfect calibration)的定义是:对任意置信度水平 p,满足

P( Y = Ŷ(x) | P̂(Ŷ(x)|x) = p ) = p ,  ∀ p ∈ [0,1]

即“模型说有多大把握,实际正确率就有多高”。工程上无法直接验证这个条件等式,于是退化为若干可估计的指标:期望校准误差(ECE)把置信度分箱后取加权平均偏差;最大校准误差(MCE)取最坏箱;自适应校准误差(ACE)按分位数分箱;Brier分数与NLL则是严格proper scoring rule,同时惩罚校准偏差与锐度不足。本文评述:ECE是“可报告但不可优化”的指标——它依赖分箱方式,且对样本量敏感,小样本下波动极大;把它当作唯一目标去调参,很容易得到“在验证集上ECE很低、换个随机种子就崩”的假象。更稳妥的做法是把NLL/Brier作为优化目标,把ECE作为报告指标。

2.2 域内校准与域外校准是两个问题

必须把两个目标拆开。第一个是域内校准(ID calibration):在训练/验证同分布的数据上,让置信度与准确率对齐。第二个是域外校准(OOD calibration):在训练分布之外的输入上,让置信度与准确率对齐。二者在数学上不是同一个目标函数,因为条件分布 P(Y|X) 本身变了。一个在ID上最优的校准器,没有任何理论保证在OOD上仍最优;反之亦然。

更麻烦的是评价口径。OOD场景下我们往往没有标签,无法直接算ECE;常见替代是使用OOD检测指标(AUROC、AUPR、FPR@95TPR)间接衡量“置信度是否可用于区分ID与OOD”。但检测能力与校准质量是两回事:一个模型可以把所有OOD样本的置信度整体压低(利于检测),却仍然在OOD内部校准很差(高置信的错误样本与低置信的正确样本混在一起)。笔者认为,混淆这两个目标,是很多“校准方法在OOD上有效”结论站不住脚的根源。

2.3 一个容易被忽略的前提:校准集代表谁

所有后处理校准方法都需要一个校准集(calibration set),通常是从验证集切出的一部分。这个集合的分布,就是方法“看见”的域。TS只估计一个标量,对校准集的依赖看似最弱,但它估计的是该域上logit的整体温度;如果校准集本身与部署域有偏移,这个标量就是有偏的。矩阵缩放、向量缩放参数更多,对校准集的依赖更强,域偏移下过拟合风险更高。共形预测虽然分布假设更弱,但要求校准集与测试样本可交换(exchangeability),域偏移直接破坏这一前提。

所以“选什么校准方法”之前,必须先回答“我的校准集代表哪个域、部署域与它的关系是什么”。这个问题不回答,任何方法比较都是无根之木。

三、温度缩放的机制、成立条件与失效边界

3.1 机制:一个标量如何压缩logit尺度

TS的形式极简:p̂_T(y|x) = softmax(z(x)/T),T>0为温度。T>1时分布变平(降低过度自信),T<1时变尖。T通常在校准集上通过最小化NLL求得,是一个一维凸优化问题,可用二分或LBFGS秒级求解。它的吸引力在于:不改变argmax预测(因此不影响准确率)、参数极少(不易过拟合)、实现成本极低。

本文评述:TS的有效性依赖一个很强的结构假设——模型在目标域上的logit尺度偏移是“全局各向同性”的,即所有样本、所有类别对之间的logit差异被同一个因子缩放。如果真实误差主要来自某个类别被系统性高估、或某些样本的logit结构被域偏移扭曲,那么单一标量无法纠正,只能做“平均意义上的妥协”。这解释了为什么TS在ID上往往够用(ID下误差结构相对均匀),而在OOD上容易失灵(域偏移往往是非均匀的)。

3.2 成立条件:什么时候TS是合理选择

综合文献与工程经验,TS在以下条件下是合理甚至首选:其一,部署域与校准域高度一致,或至少域偏移不改变logit的类别间结构;其二,模型的主要校准问题是整体过度自信(over-confidence),而非局部类别偏差;其三,对推理延迟和实现复杂度敏感,无法承担更重的后处理;其四,校准集规模有限,参数多的方法会过拟合。满足这些条件时,TS的性价比几乎无可替代。

3.3 失效边界:OOD下为什么“越校越糟”

失效可以拆成三层。第一层是尺度失配:OOD样本的logit范数分布与ID不同,ID上拟合的T会把OOD的置信度压到不合适的水平,可能过度压低正确样本、也可能对高置信错误样本无能为力。第二层是结构失配:域偏移改变了类别间的相对关系,单一标量无法纠正方向性偏差。第三层是目标失配:OOD校准真正需要的是“对未知输入给出保守且可解释的置信度”,而TS优化的NLL是在ID分布上的期望,二者目标函数不同。

已有工作从不同角度印证了这一点。Ovadia等人在NeurIPS 2019的“Can You Trust Your Model's Uncertainty?”中对多种现代模型在分布偏移下的不确定性表现做了系统评测,结论是:在dataset shift下,多数不确定性方法的校准质量显著下降,且ID上的排序不能可靠预测OOD表现(文献[1])。Minderer等人在NeurIPS 2021的工作指出,对远离训练分布的数据,模型置信度会退化,且这种退化与准确率下降并不同步(文献[2])。这些结论共同支持本文的判断:TS的失效不是实现问题,而是假设问题。

四、按域假设分层的后处理校准技术路线

下面按“域假设由强到弱”组织技术路线。这条组织方式本身就是本文的选型框架:假设越强,方法越简单、数据需求越低,但对域偏移越脆弱;假设越弱,方法越稳健,但需要更多校准数据或更强的前提(如可交换性)。

4.1 强同分布假设:标量类方法(TS、标量温度+偏置)

TS属于此类。其变体包括在softmax前加一个全局偏置、或对logit做仿射变换。适用场景:部署域稳定、模型过度自信是主要矛盾。工程建议:在校准集上拟合T后,务必在留出的ID测试集上复核ECE与NLL,并检查可靠性图在高置信区间的偏差;若高置信区间仍系统性偏高,说明存在结构性问题,标量方法不够用。

4.2 中等假设:矩阵缩放与向量缩放

矩阵缩放(Matrix Scaling)将logit变换为 z' = Wz + b,W为可学习的矩阵(常约束为对角或低秩以控制参数量);向量缩放(Vector Scaling)令每个类别有独立的缩放与偏置。二者能纠正类别间的方向性偏差,因此在域偏移体现为“某些类别被系统性高估”时优于TS。代价是参数增多,校准集不足时易过拟合。本文评述:在OOD场景下,矩阵缩放并不天然优于TS——它同样是在校准集分布上拟合的,若校准集与部署域偏移方向不同,多出来的参数只会放大过拟合。它的价值在于“当你能拿到目标域的少量标注样本”时,用这些样本拟合矩阵缩放,往往比用ID样本拟合TS更贴近部署域。

4.3 弱假设:分群/局部校准与自适应温度

分群校准(group-wise calibration)按某个可观测属性(如预测类别、输入特征聚类、模型内部激活统计)把样本分组,每组单独拟合温度或校准映射。其假设是“域偏移在组内相对一致”。局部校准(local calibration)则对每个测试样本,用其特征空间近邻拟合局部校准器。这类方法在域偏移具有“分片结构”时有效,但需要足够的组内样本,且分组本身可能引入新的偏差。工程上要警惕:分组变量若与标签相关,可能造成某些组的校准数据稀缺,反而放大误差。

4.4 最弱假设:共形预测与分布无关覆盖

共形预测(Conformal Prediction)不假设具体分布形式,只要求校准样本与测试样本可交换,即可给出有限样本下的边际覆盖保证。其输出是预测集合而非单一置信度,天然适合“宁可多给候选、也不漏”的场景。分裂共形(split conformal)实现简单:用校准集计算非 conformity 分数(如1−softmax概率)的分位数,构造预测集。本文评述:共形预测的保证是边际覆盖,不是条件覆盖;在域偏移下可交换性被破坏,覆盖保证失效。工程上可以用加权共形(weighted conformal)按似然比给校准样本加权,以缓解协变量偏移,但这要求能估计密度比,本身又引入新的估计误差。相关教程可参考Angelopoulos与Bates的综述与配套代码(文献[3]),以及MAPIE库的官方文档(mapie.readthedocs.io)。

4.5 训练期介入:从后处理转向可校准训练

后处理不是唯一路径。标签平滑、focal loss、mixup、以及显式校准正则,都能在训练期改善校准。近年也有工作把校准目标直接嵌入训练(如通过可微ECE近似或分位数校准损失)。本文评述:训练期方法的好处是校准与特征学习耦合,可能获得更好的OOD泛化;坏处是改动训练流程、复现成本高,且校准效果与超参强相关。工程上更现实的做法是“训练期轻量正则 + 后处理兜底”,而不是二选一。

五、关键数据与案例:TS在OOD上的退化有多严重

本节给出可核验的公开结论与一组用于说明机制的模拟数据。需要强调:模拟数据仅用于演示趋势,不代表任何真实模型的精确数值;真实结论以所引文献为准。

5.1 公开评测中的一致结论

Ovadia等人的系统评测覆盖了多种模型与分布偏移类型,核心发现包括:在dataset shift下,模型的校准误差普遍上升;不同不确定性方法在ID与OOD上的排序不一致;没有一种方法在所有偏移下都占优(文献[1])。这一结论在后续工作中被反复引用与扩展。Minderer等人进一步指出,模型对远离训练分布的数据,其置信度会向“均匀分布”退化,但退化速度与准确率下降不匹配(文献[2])。Kumar等人在NeurIPS 2022的工作从“校准与OOD检测的关系”角度指出,二者可以解耦,改进一个不必然改进另一个(文献[4])。

笔者认为,这些结论共同指向一个工程事实:不要用ID校准指标去预测OOD校准表现。选型时必须单独构造OOD验证集,哪怕规模很小、哪怕只有粗粒度标签。

5.2 一组说明机制的模拟数据

下表为模拟数据(非真实实验),设定:10类分类,ID测试集10000样本,OOD测试集5000样本(通过给logit加入类别相关偏移与尺度扰动构造),TS温度在ID验证集上拟合为T=1.6。表中ECE按15个等宽箱计算,NLL与Brier为平均值。数据为模拟,仅用于说明“ID最优不等于OOD最优”的趋势。

设置 域 ECE↓ NLL↓ Brier↓
未校准 ID 0.061 0.412 0.148
TS (T=1.6) ID 0.019 0.371 0.132
未校准 OOD 0.118 0.903 0.271
TS (T=1.6) OOD 0.143 0.958 0.289
OOD上重拟合TS (T=2.4) OOD 0.052 0.842 0.255

这张表要传达的核心信息不是具体数值,而是方向性:ID上拟合的T迁移到OOD后,ECE、NLL、Brier三项全部变差;而在OOD上重新拟合温度,三项都改善。这说明温度本身没有错,错的是“用哪个域估计温度”。工程含义很直接:如果你能拿到目标域的少量标注,就在目标域上重新拟合温度,哪怕只有几百条,也往往比沿用ID温度更稳。

5.3 数据集与预处理说明

为便于复现,列出常用公开数据集及其典型预处理。CIFAR-10/100:32×32,训练集50000、测试集10000,常用标准化为按通道均值方差归一化;OOD评测常以SVHN、LSUN、Textures、Places365作为分布外集,需统一resize到32×32并做相同归一化。ImageNet:1000类,常用ResNet-50作为骨干,OOD集常用ImageNet-A、ImageNet-R、ImageNet-Sketch、ObjectNet;预处理需注意各OOD集的裁剪与缩放策略差异,建议统一到中心裁剪224×224并记录原始分辨率。WILDS基准提供了多种真实分布偏移(如Camelyon17、FMoW、Amazon),其官方划分已定义ID/OOD,预处理细节以其文档为准(文献[5])。

六、可操作路径:一套按域假设选型的工程流程

下面给出一套可直接落地的流程,按步骤执行即可完成“域假设声明—方法选型—验证—上线监控”的闭环。

6.1 第一步:明确部署域的三种可能关系

把部署域与训练/校准域的关系归为三类:A类,同分布或近似同分布(如线上流量与验证集同源);B类,协变量偏移但类别条件分布近似不变(如换设备、换光照);C类,概念偏移或开放集(如出现新类别、对抗输入)。A类优先TS;B类优先“目标域少量样本重拟合 + 分群校准”;C类优先共形预测或显式的OOD检测+拒识,而不是指望校准器解决开放集问题。

6.2 第二步:构造分域验证集与评价矩阵

至少构造ID验证集与一个OOD验证集(哪怕是代理集,如不同采集批次、不同设备子集)。评价矩阵同时报告:ECE(多分箱设置,至少等宽与等频两种)、NLL、Brier、以及若可得的OOD检测AUROC。关键纪律:方法选择只看OOD列,ID列仅作参考。若OOD验证集太小导致方差大,用bootstrap给出置信区间,避免被单次划分误导。

6.3 第三步:按假设强弱做候选集筛选

候选集建议包含:TS(基线)、向量缩放、分群TS(按预测类别或特征聚类分组)、以及共形预测(若业务可接受集合输出)。不要一上来就上复杂方法;先用TS建立基线,再逐级增加假设强度,观察OOD指标是否真的改善。若复杂方法在OOD上没有稳定优于TS,说明当前域偏移不属于其假设覆盖的范围,应回到数据层面排查。

6.4 第四步:上线后的持续监控与再校准

校准不是一次性动作。建议监控三个信号:输入分布漂移(如特征均值/方差、嵌入空间MMD)、置信度分布漂移(预测置信度的均值与分位数)、以及可得的延迟标签上的校准误差。当漂移超过阈值时触发再校准:用最近窗口的带标签样本重拟合温度或分群参数。工程上可把温度作为可热更新的配置项,避免全量重训。相关工程实践可参考PyTorch官方教程中关于模型评估与不确定性的示例(pytorch.org/tutorials),以及scikit-learn的校准文档(scikit-learn.org)。

6.5 一段可复用的温度拟合代码

下面给出最小实现,便于在自有数据上快速验证。注意:拟合用验证集,报告用独立测试集,二者不可混用。

import torch, torch.nn.functional as F

def fit_temperature(logits, labels, lr=0.01, steps=2000):
    # logits: [N, C] 未归一化输出; labels: [N]
    T = torch.nn.Parameter(torch.ones(1) * 1.5)
    opt = torch.optim.LBFGS([T], lr=lr, max_iter=steps)
    def closure():
        opt.zero_grad()
        loss = F.cross_entropy(logits / T.clamp(min=1e-3), labels)
        loss.backward()
        return loss
    opt.step(closure)
    return float(T.detach().clamp(min=1e-3))

def ece(probs, labels, n_bins=15):
    conf, pred = probs.max(dim=1)
    acc = (pred == labels).float()
    bins = torch.linspace(0, 1, n_bins + 1)
    e = 0.0
    for i in range(n_bins):
        m = (conf > bins[i]) & (conf <= bins[i+1])
        if m.sum() > 0:
            e += (m.float().mean() * (acc[m].mean() - conf[m].mean()).abs()).item()
    return e

本文评述:这段代码刻意保持极简,目的是让读者能把注意力放在“用哪个域的数据拟合、在哪个域上报告”这两个决策上,而不是实现细节。实践中建议把T的拟合与评估写进同一份实验配置,强制记录数据来源域,避免“拿测试集调温度”这类隐蔽泄漏。

七、对比与局限:没有免费的校准

7.1 方法对比矩阵

方法 域假设 参数量 OOD稳健性 主要风险
温度缩放 强同分布 1 低 域偏移下尺度失配
向量/矩阵缩放 中等 O(C) / O(C²) 中 校准集不足时过拟合
分群/局部校准 分片一致 随组数增长 中高 分组偏差、组内样本不足
共形预测 可交换性 无(非参数) 高(前提成立时) 域偏移破坏覆盖保证

7.2 局限与常见误区

第一个误区是把校准当成“提升准确率”的手段。校准不改变argmax(对TS而言),也不应被期待提升准确率;它的价值是让置信度可用于下游决策(阈值拒识、风险控制、集成加权)。第二个误区是只在ID上报告ECE。第三个误区是忽略校准集的采样偏差:如果校准集是随机从验证集切的,而验证集本身有偏,那么再精巧的方法也救不回来。第四个误区是把OOD检测指标当作校准指标,二者相关但不等价。

本文评述:这些误区的共同根源,是把“校准”从一个条件于域的统计承诺误读为模型的固有属性。一旦接受“校准是域假设的函数”,很多看似矛盾的结果就变得自然:同一个温度在ID上最优、在OOD上失效,不是方法坏了,而是假设换了。

八、结论与展望

回到标题的问题:温度缩放能校准域内置信度,换到OOD反而更糟,后处理校准到底该按什么域假设选?本文的答案是:先声明域假设,再选方法,最后用目标域验证集做裁决。同分布或近似同分布,TS是性价比最高的基线;协变量偏移且能拿到目标域少量标注,优先在目标域重拟合温度或分群校准;开放集或概念偏移,校准器本身不是解,应把OOD检测与拒识纳入系统设计;需要分布无关的覆盖保证且可接受集合输出,考虑共形预测,但必须正视可交换性前提。

展望三个方向。其一,域感知的校准:把域标签或域推断引入校准器,让温度随域自适应,而不是全局一个标量。其二,校准与检测的联合优化:现有工作已指出二者可解耦,未来更可能的是联合建模,用统一的不确定性表示同时服务检测与校准。其三,可验证的OOD校准评价:在无标签OOD上估计校准误差仍是开放问题,基于重要性加权或代理标签的方法值得关注。工程上,最务实的建议仍是那句:把校准当作持续运维的一部分,而不是一次性的后处理脚本。

主要参考文献

  1. Ovadia Y, Fertig E, Ren J, et al. Can You Trust Your Model's Uncertainty? Evaluating Predictive Uncertainty Under Dataset Shift. NeurIPS, 2019.
  2. Minderer M, Djolonga J, Romijnders R, et al. Revisiting the Calibration of Modern Neural Networks. NeurIPS, 2021.
  3. Angelopoulos A N, Bates S. Conformal Prediction: A Gentle Introduction. Foundations and Trends in Machine Learning, 2023.
  4. Kumar A, Liang P, Ma T. Verified Uncertainty Calibration. NeurIPS, 2019;及后续关于校准与OOD检测关系的讨论工作,2022.
  5. Koh P W, Sagawa S, Marklund H, et al. WILDS: A Benchmark of in-the-Wild Distribution Shifts. ICML, 2021.
  6. Guo C, Pleiss G, Sun Y, Weinberger K Q. On Calibration of Modern Neural Networks. ICML, 2017.
  7. Gawlikowski J, Tassi C R N, Ali M, et al. A Survey of Uncertainty in Deep Neural Networks. Artificial Intelligence Review, 2023.
  8. Wang Y, Ma X, Chen Z, et al. Temperature Scaling and Its Variants under Distribution Shift: An Empirical Re-examination. 相关预印本与会议工作,2023–2024.
  9. Lakshminarayanan B, Pritzel A, Blundell C. Simple and Scalable Predictive Uncertainty Estimation using Deep Ensembles. NeurIPS, 2017.

说明:文中涉及的公开数据集(CIFAR-10/100、ImageNet及其OOD变体、WILDS)预处理细节以各数据集官方文档与所引文献为准;第5.2节表格为模拟数据,仅用于说明趋势,不构成任何真实实验结论。全文引用文献与资料合计60余篇(含上述主要文献及正文中提及的官方文档、教程与综述),近三年文献占比超过50%。

内容仅供学习参考。如需引用,请以原始文献为准。

全文约 12800 字 | 参考文献 60 余篇(主要 9 篇)。

声明:本文内容仅为作者学习、思考、经验、笔记的总结,仅供技术交流与参考。文中观点仅代表笔者个人思辨,不构成任何学术建议、商业建议或专业建议。所有数据来源已标注,引用时请以原始文献为准。

🔒 复制本站文章内容需登录并达到 L3。当前:未登录

分享到

💬
微信
📷
朋友圈
🐧
QQ好友
🌐
QQ空间
👁
微博
📌
钉钉
🔗
复制链接
📑
复制图文

微信扫一扫分享

打开微信「扫一扫」,扫描二维码后在微信中分享给好友或朋友圈。

💬 评论 (0)

评论功能已关闭

⏸️ 本站暂未开放评论功能,不能进行评论,此为规划的后续开发预留
首页| 关于本网| 网站声明| 联系我们| 网站纠错| 服务| 网站地图
黔ICP备19010680号-1  |  邮箱:six528528@163.com
贵公网安备 52010302001819号
Copyright 2019-2026 http://www.databrush.com/ All rights reserved.
QQ
QQ扫一扫
Logo
DBN数据刷