Temperature Scaling
发现温度缩放如何校准 AI 模型置信度。学习优化输出概率以获得高度可靠的 Ultralytics YOLO 预测。
温度缩放是一种广泛使用的后处理技术,旨在校准 人工智能 (AI) 和 机器学习 (ML) 模型的预测概率。在现代深度学习中,模型通常表现出过度自信,这意味着它们的预测概率并不能准确反映真正的 统计校准 或正确可能性。温度缩放通过在应用 softmax 函数之前将网络的原始输出分数(logits)除以一个单一的、学习到的标量参数(称为“温度” (T))来解决此问题。这种调整可以柔化概率,同时不改变最终的 图像分类 决策,确保模型的 置信度 与其实际准确性紧密一致。
Link to this section温度缩放的工作原理#
在标准分类网络中,最后一层输出原始 logits,然后通过 softmax 激活函数生成总和为 1 的概率。现代 深度学习 架构,特别是那些经过交叉熵等 损失函数 深度优化的架构,往往倾向于将这些 logits 推向极端值以最小化损失,导致模型变得校准失调且过度自信。
温度缩放将温度参数 (T) 引入到 softmax 方程中。
- 当 T = 1 时,softmax 函数表现正常。
- 当 T > 1 时,logits 被缩小,这会柔化输出分布,有效地降低峰值置信度,并将概率质量更均匀地分布在所有类别上。
- 当 T < 1 时,分布变得更尖锐,促使模型对前置预测更加自信。
通过在指定的验证集上优化 T,工程师可以最小化预期校准误差。这种简单的单参数调整非常受欢迎,因为它所需的计算开销极小,且保留了 模型权重 的原始准确性。
Link to this section温度缩放与标签平滑 (Label Smoothing) 的对比#
虽然这两种技术都旨在防止 过拟合 和过度自信,但它们在模型生命周期的不同阶段发挥作用。标签平滑 是在训练期间应用的。它会改变真实标签(例如,将硬标签从 1.0 更改为 0.9),以防止模型为单个类别分配全部概率。相比之下,温度缩放以及像 Focal Temperature Scaling 这样的较新变体属于事后校准方法,在训练完成后应用,这意味着它们在无需重新训练的情况下修改了已训练模型的输出概率。
Link to this section实际应用#
正确的模型校准对于各行各业的安全性和可靠性至关重要:
- 医疗诊断: 在脑肿瘤检测等任务中,过度自信的错误分类可能会导致严重的临床后果。使用 temperature scaling 可以确保 predictive modeling 系统输出可靠的概率。如果缩放后的扫描预测结果高度不确定,系统可以将该图像标记出来,供放射科医生进行人工复核。最近关于 临床模型校准的研究 不断强调了它在受限的高风险诊断环境中的价值。
- 大语言模型 (LLMs): 对于 LLM,温度缩放被大量用于控制输出的随机性和生成的多样性,正如 OpenAI 的温度参数 所展示的那样。高温度会产生更具创造性、更多变的文本,而低温度则产生确定性、集中的响应。随着研究的深入,像 自适应温度缩放 (ATS) 这样的技术正在被开发,以修正从人类反馈强化学习后经常出现的校准退化问题。
- 自动驾驶车辆: 在自动驾驶中,目标检测 系统必须瞬间判断障碍物是行人还是阴影。校准这些视觉模型可确保当模型的真实置信度低于关键安全阈值时,紧急制动等后备机制能够可靠地触发。
Link to this section代码示例:实现温度缩放#
The following snippet demonstrates how you might apply a temperature scalar to the raw logits of an Ultralytics YOLO26 classification model using PyTorch.
import torch
import torch.nn.functional as F
from ultralytics import YOLO
# Load a pre-trained Ultralytics YOLO26 classification model
model = YOLO("yolo26n-cls.pt")
# Assume 'logits' are the raw outputs from the model prior to activation
# (e.g., obtained via a custom forward pass or feature extraction)
logits = torch.tensor([[5.0, 2.0, 0.5]])
# Define an optimized temperature scalar (T > 1 softens the probabilities)
temperature = 1.5
# Apply temperature scaling before passing logits to the softmax function
scaled_logits = logits / temperature
calibrated_probabilities = F.softmax(scaled_logits, dim=1)
print(f"Original Softmax: {F.softmax(logits, dim=1)}")
print(f"Calibrated Probabilities: {calibrated_probabilities}")对于希望无缝部署校准计算机视觉系统的团队,Ultralytics Platform 提供了强大的工具来管理 experiment tracking、微调模型以及监控实时 inference latency。此外,关于现代校准技术的基础知识可以追溯到诸如 "On Calibration of Modern Neural Networks" 等具有影响力的研究,这些研究使 temperature scaling 普及为行业标准。如需进一步的实际实现,请探索 scikit-learn 的概率校准 框架或 TensorFlow 的不确定性感知模型。






