Softmax
探索 AI 中的 Softmax 函数。了解它如何使用 Ultralytics YOLO26 和神经网络,将 logits 转换为多分类任务的概率。
Softmax 是人工智能领域中至关重要的数学函数,具体来说,它是许多分类算法的最后一步。它将一个通常称为 logits 的原始数字向量转换为概率向量。这种转换可确保所有输出值均为正数,且总和恰好为 1,从而有效地构成一个有效的概率分布。正因为这一特性,Softmax 成为用于多类别分类的神经网络输出层中的标准激活函数,这类系统必须从两个以上互斥选项中选择一个类别。
Softmax 的工作机制#
在典型的深度学习 (DL)工作流中,网络的各层会执行复杂的矩阵乘法和加法。最终层在激活之前的输出由称为logits的原始分数组成。这些值的范围可以从负无穷到正无穷,因此很难直接将其解读为置信度。
Softmax 通过执行两个主要操作来解决这一问题:
-
**指数运算:**它计算每个输入数值的指数。此步骤可确保所有值均为非负数(因为 $e^x$ 始终为正数),同时降低显著小于最大值的数值的影响,并突出较大的分数。
-
**归一化:**它将这些指数值相加,然后用每个指数值除以总和。这一归一化过程会缩放这些数值,使其表示整体中的各个部分,从而让开发者能够将它们解读为百分比形式的置信度分数。
实际应用#
输出清晰概率的能力使 Softmax 在各个行业和机器学习 (ML)任务中不可或缺。
- **图像分类:**在计算机视觉中,模型使用 Softmax 对图像进行分类。例如,当Ultralytics YOLO26分类模型分析一张照片时,它可能会为“金毛寻回犬”“德国牧羊犬”和“贵宾犬”等类别生成分数。Softmax 会将这些分数转换为概率(例如 0.85、0.10、0.05),表示图像中包含金毛寻回犬的置信度很高。这对于从自动整理照片到医疗保健中的 AI医学诊断等应用至关重要。
- **自然语言处理 (NLP):**Softmax 是大型语言模型 (LLMs)中文本生成背后的引擎。当模型(例如Transformer)生成句子时,会为其词汇表中的每个词计算分数,以预测下一个词(token)。Softmax 会将这些分数转换为概率,使模型能够选择最有可能出现的下一个词,从而实现流畅的机器翻译和对话式 AI。
- 强化学习:强化学习中的智能体通常使用 Softmax 来选择动作。智能体不必始终选择价值最高的动作,而是可以利用这些概率探索不同策略,在机器人控制或游戏操作等环境中平衡探索与利用。
Python 代码示例#
以下示例演示了如何加载一个预训练的YOLO26分类模型,并访问通过 Softmax 生成的概率分数。
from ultralytics import YOLO
# Load a pre-trained YOLO26 classification model
model = YOLO("yolo26n-cls.pt")
# Run inference on a sample image
results = model("https://ultralytics.com/images/bus.jpg")
# The model applies Softmax internally. Access the top prediction:
# The 'probs' attribute contains the probability distribution.
top_prob = results[0].probs.top1conf.item()
top_class = results[0].names[results[0].probs.top1]
print(f"Predicted Class: {top_class}")
print(f"Confidence (Softmax Output): {top_prob:.4f}")Softmax 与相关概念的区别#
虽然 Softmax 在多类别场景中占据主导地位,但区分它与模型训练和架构设计中使用的其他数学函数非常重要:
- **Sigmoid:**Sigmoid 函数同样会将数值缩放到 0 和 1 之间,但它会独立处理每个输出。这使 Sigmoid 非常适合二分类(是/否)或多标签分类,在这类分类中,类别并非互斥(例如,一张图像可以同时包含“人物”和“背包”)。Softmax 会强制概率总和为 1,使各个类别相互竞争。
- **ReLU(修正线性单元):**ReLU 主要用于网络的隐藏层,以引入非线性。与 Softmax 不同,ReLU 不会将输出限制在特定范围内(它对负输入只输出 0,对正输入则输出输入值本身),也不会生成概率分布。
- **Argmax:**Softmax 为所有类别提供概率,而Argmax 函数通常与其结合使用,以选择概率最高的单个索引。Softmax 提供“软”置信度,而 Argmax 提供“硬”最终决策。
高级集成#
在现代 ML 流水线中,Softmax 通常会在损失函数内部隐式计算。例如,交叉熵损失将 Softmax 和负对数似然结合为一个数学步骤,以提高训练期间的数值稳定性。Ultralytics Platform等平台会自动处理这些复杂性,让用户无需手动实现这些数学运算即可训练出稳健的模型。









