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

Softmax

Softmax 将一组 logits 转换为总和为 1 的概率。内容涵盖其公式、温度、数值稳定性、注意力机制和代码。

Softmax 是一种函数,可将称为 logits 的原始分数向量转换为概率分布:每个输出都在 0 到 1 之间,且所有输出之和恰好为 1。对于向量 z,它计算 softmax(z)ᵢ = e^(zᵢ) / Σⱼ e^(zⱼ),即对每个分数求指数,再除以所有指数值之和。Softmax 是从多个类别中选出一个类别的神经网络的标准输出层;它会在 Transformer 的注意力机制中将相似度分数转换为权重,还会把语言模型对其词表的分数转换为下一个词元的概率。它的名称体现了它是 argmax 的平滑、可微版本;argmax 会将全部概率分配给分数最高的单项。

Softmax 的工作原理#

指数函数会使所有输出都为正数,并放大分数之间的差异,因此最大 logit 会占据不成比例的概率份额。Softmax 会保留 logit 的顺序,所以最高分始终对应最高概率。只有 logit 之间的差值才有影响:给每个 logit 加上相同的常数,输出保持不变。库会利用这一性质来保证数值稳定性:在进行指数运算之前先减去最大 logit,因为 e¹⁰⁰⁰ 会导致 32 位浮点数溢出。

温度 T 控制分布的尖锐程度:softmax(z / T)。T 小于 1 时,分布会变得更尖锐,偏向最高类别;T 大于 1 时,分布会变得更平坦,趋近均匀分布。在统计力学中,同一公式以玻尔兹曼分布的形式出现,其中 T 就是字面意义上的温度。下面的 PyTorch代码片段展示了这两种效果:

import torch

logits = torch.tensor([2.0, 1.0, 0.1])

# Divide logits by a temperature before softmax: low sharpens, high flattens
for temperature in [0.5, 1.0, 2.0]:
    probs = torch.softmax(logits / temperature, dim=0)
    print(f"T={temperature}: {[round(p, 3) for p in probs.tolist()]}")

# Adding a constant leaves softmax unchanged, so libraries subtract the max to avoid overflow
big = logits + 1000
naive = big.exp() / big.exp().sum()
print(f"Naive: {naive.tolist()}, torch.softmax: {[round(p, 3) for p in torch.softmax(big, dim=0).tolist()]}")

当 T = 1 时,logits 2.0、1.0 和 0.1 会变成 [0.659, 0.242, 0.099]。将温度减半后,分布会变得更尖锐,成为 [0.864, 0.117, 0.019];将温度加倍后,分布会变得更平坦,成为 [0.502, 0.304, 0.194]。给每个 logit 加上 1,000 后,朴素公式会溢出并输出 [nan, nan, nan],而 torch.softmax 仍会返回 [0.659, 0.242, 0.099]。

训练中的 Softmax#

分类器通过结合 softmax 和交叉熵损失进行训练。损失为 −log(pᵧ),即分配给正确类别 y 的概率的负对数;相对于 logits 的梯度很简单,就是 p − y,也就是预测概率减去 one-hot 标签。因此,框架会将两者融合:PyTorch 的 CrossEntropyLoss接收原始 logits,并在内部计算 log-softmax;与分别计算概率再取对数相比,这种方式数值更稳定。以这种方式训练的模型会输出 logits,只有在推理时需要概率时才应用 softmax。

Softmax 的应用场景#

  • 图像分类:分类器的最后一层为每个类别生成一个 logit,softmax 会将它们转换为用户看到的置信度分数。
  • 注意力:Transformer会对查询与每个键之间的相似度分数计算 softmax(QKᵀ / √dₖ),因此每个词元的注意力权重之和为 1。除以 √dₖ 可以防止分数随维度增大而增长,导致 softmax 饱和。
  • 文本生成:大语言模型(LLM)在每一步都会对包含数万或数十万个词元的词表应用 softmax,上文的 T 就是采样温度。核采样随后会从概率总和达到某个阈值的最小词元集合中进行采样。
  • 强化学习:对动作价值应用 softmax 会得到一种策略:通常选择最佳动作,同时仍会探索其他动作;温度则用于权衡探索与利用。

YOLO26分类模型会在推理时于分类头中应用 softmax,每个结果的 probs属性包含 1,000 个 ImageNet类别的完整概率分布:

from ultralytics import YOLO

# Load a YOLO26 classification model trained on ImageNet
model = YOLO("yolo26n-cls.pt")
results = model("https://ultralytics.com/images/bus.jpg")

# probs holds the softmax output of the classification head
probs = results[0].probs
for index, conf in zip(probs.top5, probs.top5conf.tolist()):
    print(f"{results[0].names[index]}: {conf:.3f}")
print(f"Sum over all 1,000 classes: {probs.data.sum().item():.3f}")

它会输出概率最高的五个类别及其概率,而 1,000 个类别的概率总和为 1.000,因为分类头返回的是 softmax 分布。

  • Sigmoid:独立地将每个分数压缩到 0 到 1,因此输出之和不一定为 1。Sigmoid 适用于二分类和多标签问题,例如图像中同时包含一个人和一个背包的情况;目标检测器也常用它对每个类别进行评分。对于两个类别,softmax 恰好等价于对两个 logits 之差应用 sigmoid。
  • Argmax:返回最大分数的索引,是一种没有梯度的硬决策。Softmax 保持相同的排序,但仍可微,因此可以用于训练;对 softmax 概率取 argmax,结果与对 logits 取 argmax 相同。
  • Log-softmax:直接计算以保证稳定性的 softmax 对数,供交叉熵损失使用。
  • 温度缩放:一种校准方法,在训练后用验证数据拟合单个温度,使 softmax 概率与模型实际预测正确的频率相符。由于将每个 logit 除以同一个正数 T 会保留它们的顺序,因此预测类别不会改变。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 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 的未来!

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