Temperature Scaling
了解温度缩放(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温度缩放与标签平滑的对比#
虽然这两种技术都旨在防止 过拟合 和过度自信,但它们在模型生命周期的不同阶段发挥作用。标签平滑 在训练过程中应用。它会改变真实标签目标(例如,将硬标签从 1.0 改为 0.9),以防止模型为单个类别分配全部概率。相比之下,温度缩放以及像 焦点温度缩放 这样的较新变体,是训练完成后应用的事后校准方法,这意味着它们在无需重新训练的情况下修改了全训练模型输出的概率。
Link to this section实际应用#
正确的模型校准对于各行业的安全性和可靠性至关重要:
- 医疗诊断: 在脑肿瘤检测等任务中,过度自信的错误分类可能导致严重的临床后果。使用温度缩放可确保 预测建模 系统输出可靠的概率。如果缩放后扫描预测的置信度极低,系统可以自信地将图像标记出来,供放射科医生进行人工复核。最近关于 临床模型校准的研究 不断强调了其在受限的高风险诊断环境中的价值。
- 大语言模型 (LLM): 对于 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 提供了强大的工具来管理 实验追踪、模型微调以及实时监控 推理延迟。此外,关于现代校准技术的基础知识可以追溯到具有影响力的研究 “关于现代神经网络的校准”,该研究将温度缩放推广为行业标准。如需进一步的实际实现,请探索 scikit-learn 的概率校准 框架或 TensorFlow 的不确定性感知模型。






