1 概述与背景
温度缩放(Temperature Scaling)是一种对分类模型输出概率进行校准的后处理技术。模型通常会输出各类别的 logits(对数几率),再通过 softmax 转换为概率。然而,深度模型的概率往往并不严格反映真实的频率:在某些置信度水平上,模型“看起来很自信”的样本中,真实正确率可能并未对应。温度缩放通过对 logits 乘以一个标量温度参数的倒数(或等价的缩放方式),在不改变类别相对大小关系的前提下,调整概率分布的“锋利程度”,从而降低置信度与准确性之间的偏差。
1.1 概率校准与置信度偏差
概率校准关心的是:当模型输出某个概率值 p 时,真实结果为正的比例是否也接近 p。若存在系统性偏差,例如模型在输出高置信度时实际准确率偏低,就可称为“过度自信”(overconfidence);相反若高概率对应的真实正确率偏高但模型却输出偏小的置信度,则表现为“过度保守”(underconfidence)。
温度缩放主要针对这种“概率数值层面的偏差”。它不直接提升分类错误率,而是改善概率所携带的不确定性表达,使得概率更可用于阈值决策、风险评估、拒识策略等下游用途。
1.2 从 logits 到概率:为何需要缩放
softmax 的输出受 logits 的幅度影响。对于给定类别 i,其未归一化得分可写为 exp(z_i),其中 z_i 是 logits。若将所有 logits 同时按比例缩放,会改变 softmax 的“尖锐程度”:
- 缩放使得 logits 绝对值变大时,softmax 输出更接近 0/1,概率更“极端”;
- 缩放使得 logits 绝对值变小时,softmax 输出更“平坦”,减少极端置信度。
温度缩放通过学习一个全局温度 T,让这种尖锐程度恰好与数据的真实频率相匹配,从而使概率更校准。
2 方法定义
2.1 基本数学形式
设分类模型对输入 x 输出 logits 向量 z = (z_1, …, z_K)。温度缩放引入标量温度 T > 0,定义缩放后的概率:
p_i = softmax(z_i / T) = exp(z_i / T) / Σ_j exp(z_j / T)
其中 T 是在验证集上学习得到的后处理参数,T 越大,softmax 越平滑;T 越小,softmax 越尖锐。
2.2 温度参数 T 的含义
温度 T 可以理解为“控制置信度强弱的旋钮”:
- 当 T > 1:将 logits 除以更大的数,使得各类别得分差异在 softmax 中被弱化,概率更保守(置信度降低)。
- 当 T < 1:放大 logits 的差异,使得模型更倾向于输出接近 0/1 的概率(置信度升高)。
在实际校准中,T 的最优值通常由验证集上的目标函数决定。
2.3 归一化与 softmax 后处理
由于 softmax 通过指数函数与求和保证输出满足 Σ_i p_i = 1,因此温度缩放属于对 logits 的可微变换,并能在优化过程中稳定工作。该方法通常以“先计算 logits,再进行一行缩放和 softmax”为工程实现核心,易于集成到现有分类器后处理流程。
2.4 与模型预测排序的关系
温度缩放对所有类别施加相同的缩放系数,因此对 argmax 的判定通常保持一致:对于两类别 i 和 j,比较 z_i / T 与 z_j / T 的大小等价于比较 z_i 与 z_j 的大小(当 T > 0 时)。因此,在常见设置下,预测类别排序(至少是最终取最大概率类别)不会改变。
需要注意的是:虽然 argmax 多数情况下不变,但概率本身会发生变化,进而影响依赖概率阈值的决策、排序后的置信度表达、以及基于概率的评估指标。
3 学习与估计温度
3.1 训练/验证集的划分原则
温度参数 T 不应在训练集上与模型权重一起联合学习,因为它只是一种校准后处理。常见做法是在独立的验证集上寻找最优 T:
- 训练集用于训练主分类模型;
- 验证集用于学习 T;
- 测试集用于报告最终校准效果,避免信息泄露。
如果数据量较小,可能采用交叉验证估计稳定的 T,但基本思想仍是“用未用于训练主模型的标注数据进行校准”。
3.2 目标函数:负对数似然(NLL)
学习 T 的经典目标通常是最小化负对数似然(Negative Log Likelihood, NLL)。对验证集样本 {(x_n, y_n)},其中 y_n 是真实类别索引,其对数似然为:
| log p(y_n | x_n, T) = log softmax(z_n / T)[y_n] |
|---|
总 NLL 为:
| L(T) = - Σ_n log p(y_n | x_n, T) |
|---|
选择使 L(T) 最小的 T。直观上,NLL 衡量模型概率对真实类别的“打分”是否足够匹配;通过调节温度,可在概率锋利程度与数据统计之间找到折中点。
3.3 其他等价准则与变体
除了直接以 NLL 学习温度,还存在一些等价或相近的变体,例如使用与交叉熵一致的实现方式。若在工程中已经有交叉熵损失(cross-entropy),则可直接将“logits 除以 T 后再计算交叉熵”作为优化目标。
在更复杂的扩展中,可能考虑类别加权、分组温度(按子集或类别分段学习温度),但这些已超出最简的标量温度缩放范畴,且需要更谨慎的验证以防过拟合。
3.4 数值优化与稳定性
学习标量 T 通常是低维优化问题,常见数值策略包括:
- 使用网格搜索(例如在给定区间上尝试多个 T 值);
- 使用一维数值优化器(如牛顿法的变体或基于梯度的方法);
- 为避免数值问题,可在 softmax 前进行稳定化处理(例如减去 logits 的最大值),以防指数爆炸。
由于 T 必须为正,优化时常用对数参数化(例如令 T = exp(s))以保证约束条件自然满足,并提升数值稳定性。
4 评估指标与实验分析
4.1 校准误差指标(如 ECE/MCE)
校准误差衡量“预测概率与真实频率”的差距。常见的分箱方法包括:
- ECE(Expected Calibration Error):将预测置信度按区间分桶,比较每桶平均预测置信度与实际准确率的差异,按样本数加权求和;
- MCE(Maximum Calibration Error):取这些桶差异的最大值作为上界视角。
温度缩放的目标通常能降低这类误差,但效果依赖于验证集与测试分布的匹配程度。
4.2 可靠性图(Reliability Diagram)
可靠性图将置信度分桶后绘制“预测置信度”和“观测准确率”的关系。理想情况下,点应沿对角线分布。温度缩放常用于实验对比:调整 T 前后,曲线偏离程度如何变化,从而更直观地展示校准改善是否发生。
4.3 负对数似然与对数得分
除校准误差外,NLL 或对数得分(log score)用于衡量概率分布质量。NLL 的下降意味着模型给真实类别更高的概率(并与对数惩罚机制相符)。在温度缩放中,若使用 NLL 学习 T,则验证集上的 NLL 往往会下降或达到最优点;在测试集上,是否改善取决于分布一致性。
4.4 温度变化对置信度分布的影响
改变 T 会系统性改变概率分布的形态:
- 较小的 T 使得高置信度样本增多,概率更集中,可能降低校准但也可能改善(取决于原模型是过度自信还是保守);
- 较大的 T 使得概率更集中于中间区域,减少极端置信度。
实验中常观察到:校准指标随 T 呈现非单调变化,因此需要在验证集上寻优而非凭经验直接设定。
4.5 常见对比基线
为了判断温度缩放的有效性,常见对比包括:
- 不做校准的原始 softmax 输出;
- 使用 Platt scaling 或其他后处理方法;
- 更强的校准策略(例如针对特定分布变化的策略或多参数校准)。
对比时通常同时报告准确率(通常不变或轻微变化)、ECE/MCE、可靠性图形态与 NLL 等指标,以全面呈现影响。
5 应用场景
5.1 分类模型的概率输出校准
在许多分类任务中,模型输出概率需要用于阈值判定或风险控制。例如:
- 拒识/回退:当最高概率未达到阈值时触发人工审核;
- 概率驱动的排序与资源分配:例如将“更可能正确”的样本优先交付后续流程。
温度缩放可在不重新训练模型的情况下对这些概率进行重标定,使得阈值策略更可靠。
5.2 集成模型与不确定性管理
集成方法(如平均多个模型或多次采样)得到的概率也可能存在过度自信问题。对集成输出再做温度缩放,能够改善其整体置信度表达,使得不确定性更符合观测统计。
5.3 领域适配中的后处理
当模型从源域部署到目标域时,概率校准可能随分布变化而劣化。温度缩放可作为轻量后处理进行补偿:在目标域可获取少量标注或准标注数据时,学习 T 并进行校准。
需要强调的是:若目标域与源域差异过大,单一标量温度可能不足以全面纠正偏差。
5.4 轻量部署与工程集成
温度缩放计算成本极低:只需对 logits 做除法并经过一次 softmax。适合在推理链路中作为“校准插件”接入,例如:
- 训练好的模型保持不变,只更新一个标量参数;
- 在服务端或边缘端快速应用;
- 与现有监控系统结合,定期用新验证数据更新 T。
这种“可复用、低成本”的特点使其成为工程校准基线之一。
6 局限性与注意事项
6.1 仅对置信度重标定的边界
温度缩放主要改变概率数值与置信度强弱,通常不会修正模型在类别层面的判别错误。若模型本身的特征表达不充分或训练数据存在显著偏差,温度缩放无法替代模型改进。
因此,它更适合当“分类准确率相对可接受,但概率不校准”时使用。
6.2 数据分布偏移与失效风险
温度参数是依据验证集统计学习的。当部署数据分布发生变化,校准误差可能回升,甚至产生新的偏差模式。工程上常见做法包括:
- 监控校准指标(如 ECE);
- 定期重新学习 T;
- 在目标域采样少量数据用于校准更新。
若数据漂移频繁或标注成本高,需要权衡更新频率与资源消耗。
6.3 类别不平衡与校准可靠性
当类别高度不平衡时,整体校准指标可能被主导类别影响。温度缩放使用全局标量 T,难以分别修正不同类别的概率偏差。虽说它能改善总体趋势,但在少数类上可能仍存在较大误差。
在这种情况下,可能需要更细粒度的策略(例如分组校准),但也更容易过拟合并增加验证需求。
6.4 多任务/多标签情形的适配问题
温度缩放最常用于单标签多类别分类(softmax 场景)。若是多标签分类(多个二元标签),常见做法不再使用 softmax,而是对每个标签使用 sigmoid;此时可能需要对 logits 做不同形式的缩放或采用其他校准方法。直接套用单一 T 到多标签任务,可能不符合其概率结构,需要根据具体输出头结构进行适配与验证。
7 相关概念与扩展
7.1 Platt Scaling 与温度缩放的区别
Platt scaling 最初用于二分类的概率校准,其形式通常为对 logit 线性变换并再通过 sigmoid 输出概率。它一般学习一个缩放与偏置(例如 a·z + b)的参数,而温度缩放在多分类 softmax 下通常只学习标量温度 T,且以 z/T 的形式统一缩放 logits。
两者都属于“后处理校准”,思想相近,但参数化方式与适用场景不同:温度缩放更直接对应 softmax 多类别结构;Platt scaling 更自然地映射二分类 logit 的概率校准。
7.2 各向同性与非各向同性校准
温度缩放是各向同性校准:对所有类别 logits 使用同一个标量缩放因子。非各向同性校准则允许不同类别或不同子结构使用不同参数,从而更灵活地纠正偏差。
非各向同性方法往往需要更多数据以避免过拟合,并且更复杂的参数可能带来稳定性与泛化方面的挑战。
7.3 校准与鲁棒性、不确定性估计的关系
校准与鲁棒性并非同一概念。一个模型可能在错误率方面表现不错,但概率仍可能失准;反之亦然。温度缩放改善的是“概率是否可信”,而不是“模型是否在噪声下更少出错”。
在不确定性估计中,校准可视作把模型的不确定性表达对齐到真实频率,从而让后续决策更依赖可靠的概率信号。它常与其他不确定性方法(如基于采样或显式建模的方案)形成组合使用。
7.4 混合精度、日志it 量化下的实现要点
在实际部署中可能使用混合精度(FP16/BF16)或量化(如 int8)以提升效率。温度缩放属于对 logits 的变换,需关注数值精度:
- 若 logits 范围较大,使用低精度可能导致指数项的舍入误差增强;
- softmax 前的稳定化(减最大值)对数值安全尤为重要;
- 温度 T 的表示精度(是否用 FP32 存储)会影响校准效果的微小差异。
工程实现通常保持 T 和关键中间量使用较高精度,以获得更稳定的概率输出。
8 实现要点(工程视角)
8.1 伪代码与常见流程
典型流程如下:
- 训练分类模型得到 logits。
- 在验证集上收集每个样本的 logits 与真实标签。
- 选取候选 T(网格或优化器),对每个 T 计算:
- logits_scaled = logits / T
- probs = softmax(logits_scaled)
- loss = NLL(probs, labels)
- 选择使 loss 最小的 T。
- 在推理时,对新输入 logits 执行同样的 logits / T 再 softmax,输出校准概率。
8.2 框架实现注意事项(以 softmax/logits 为核心)
- 确保使用与训练一致的 logits 生成方式(例如是否包含任何归一化层或额外头)。
- 注意 softmax 的稳定化实现,避免溢出。
- 若模型输出已是概率而非 logits,则需要回到 logits 或采用与概率等价的变换方式;直接对概率做“温度”通常不再等价于标准温度缩放定义。
- 在批量处理时,T 是标量,可广播到 batch 维度使用。
8.3 超参数与早停策略
温度学习的超参数主要体现在搜索区间与优化方式上,例如:
- 网格搜索步长(决定计算量与精度);
- 一维优化器的初始值与收敛容差;
- 早停通常发生在验证集损失不再显著下降(虽然是一维问题,通常不需要复杂调参)。
对于稳定性,建议先使用较宽区间粗搜索,再在最优附近细化。
8.4 计算开销与可复用性
计算开销几乎来自 softmax 本身。温度缩放增加的除法与乘法成本可以忽略。由于只需要保存一个标量 T,校准结果便于复用:
- 同一模型可对不同数据集/域保存不同的 T;
- 可在服务端按版本管理,便于回滚与对比实验。
9 梗与直观比喻
9.1 “温度越高越不确定”的直觉
把模型输出想象成“越热越平静”的概率炉子:T 越大,softmax 的差距被压得更小,输出就更不容易贴着 0 或 1,从而看上去更“没那么确定”。反过来,T 越小,概率会更尖锐,更像是“直接拍板”。
9.2 为什么不会改答案排序(通常情况下)
由于温度缩放对所有类别同样做缩放,谁的 logits 更大仍然保持同样的相对关系。于是 argmax 往往不变:模型“选的类别”多数情况下还是原来的那个,只是它对这个选择的“口气强不强”变了。
9.3 校准像给概率“调味”的轻度类比
原模型的概率像菜刚出锅时的味道:味觉判断可能接近,但要让“你觉得是咸的程度”与“真实吃起来的咸度频率”更一致,调一下就会舒服。温度缩放就是这种“轻度调味”:不会重做菜谱,但能让味道更贴合统计规律。