Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Cross-Entropy Loss

交叉熵损失比较预测的类别概率与目标标签,为分类和分割模型在训练过程中提供指导。

交叉熵损失用于衡量模型预测的类别概率与目标标签的匹配程度。正确类别的概率较高时,它会施加较小的惩罚;该概率较低时,则会施加较大的惩罚。作为一种损失函数,它为监督学习提供了训练期间需要最小化的目标。

克劳德·香农于 1948 年发表的《通信的数学理论》奠定了交叉熵的熵理论基础。D. F. Kerridge 在其 1961 年的论文《不准确性与推断》中将交叉熵度量引入,并称之为“不准确性”。在分类中,对数损失是它的同义词;逻辑回归和神经网络分类器都会使用它。

交叉熵损失的工作原理#

对于一个只有一个正确类别的样本,未加权交叉熵为 loss = -ln(p_correct)。正确类别的概率为 0.9 时,损失约为 0.105;概率为 0.1 时,损失约为 2.303。结果使用自然对数表示,单位称为奈特。训练时通常会对一个批次中的这些惩罚取平均值。

更一般地说,交叉熵会将每个目标概率乘以其预测概率的负对数,并对所有类别求和。独热目标会在正确类别的位置设为 1,在其他位置设为 0,因此只留下正确类别对应的项。对于未加权的独热目标,最小化交叉熵等价于最大化观测标签的似然。反向传播会计算梯度,而梯度下降会更新模型参数。

二元、类别和稀疏交叉熵#

应使用哪种形式取决于标签:

  • 二元交叉熵与 sigmoid:对于取值为 0 或 1 的目标 y,以及类别 1 的预测概率 p,损失为 -[y * ln(p) + (1 - y) * ln(1 - p)]。多标签分类会对可以同时出现的标签分别应用该损失。
  • 类别交叉熵与 softmax:这种方法用于评估概率之和为 1 的互斥类别。Softmax 会将模型的原始分数(称为 logits)转换为这种概率分布。
  • 稀疏类别交叉熵:这种方法使用整数类别索引,而非独热向量。它计算的损失相同;“稀疏”描述的是目标的编码方式。

软目标会在多个类别之间分配概率。它们用于标签平滑和知识蒸馏,在知识蒸馏中,学生模型会学习教师模型的概率分布。

在 PyTorch 中计算交叉熵#

PyTorch在 CrossEntropyLoss中接受原始 logits。对于类别索引目标,其计算方式等价于先进行 log-softmax,再计算负对数似然。若提前应用 softmax,该函数就会把概率当作 logits 处理,从而改变损失和梯度。整数目标使用 torch.long;概率目标使用浮点值,且形状与 logits 相同。

import torch
from torch import nn

# Both predictions select class 0; the second is more confident.
logits = torch.tensor([[2.0, 0.0, 0.0], [4.0, 0.0, 0.0]])
targets = torch.tensor([0, 0], dtype=torch.long)
loss_fn = nn.CrossEntropyLoss(reduction="none")

losses = loss_fn(logits, targets)
print(f"Lower confidence loss: {losses[0].item():.4f}")
print(f"Higher confidence loss: {losses[1].item():.4f}")

损失从 0.2395 降至 0.0360,而两种预测都仍然正确。准确率记录类别判定结果;交叉熵还会根据概率分配情况作出响应。对于二元或多标签 logits,BCEWithLogitsLoss会结合 sigmoid 和二元交叉熵。

计算机视觉中的应用#

单标签图像分类使用交叉熵来学习每张图像对应的一个类别。Ultralytics YOLO26分类训练使用类别 logits 上交叉熵的均值,更新分类器,使其预测趋向标签所指示的类别。

在医疗图像分割中,原始的 U-Net使用像素级 softmax 和加权交叉熵,在生物医学显微图像上进行训练。它的权重图会增加相互接触的细胞边界处的惩罚,从而帮助分开相邻细胞。这种方法在语义分割中对每个像素进行分类。

解读损失值#

对于有效目标分布和非负权重,离散交叉熵非负。对于未加权的硬目标,当正确类别的概率为 1 时,交叉熵为零;随着该概率趋近于零,交叉熵会无限增大。负值表明输入或实现存在错误,例如目标条目或权重为负。

熵衡量单个分布中的不确定性;交叉熵比较目标与预测。交叉熵等于目标熵加上 Kullback–Leibler 散度,即额外的不匹配惩罚。因此,当软目标的熵为正时,其交叉熵最小值也为正。

类别加权会提高所选类别的贡献。焦点损失会降低简单样本的贡献,以解决目标检测中的前景与背景不平衡问题。对于均匀预测,未加权的对数损失等于 ln(number_of_classes):两个类别时约为 0.693,十个类别时约为 2.303。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来