Sigmoid
探索 Sigmoid 函数在机器学习中的作用。了解这种激活函数如何在 Ultralytics YOLO26 等模型中实现二分类。
Sigmoid 函数是机器学习(ML)和深度学习(DL)领域广泛使用的基础数学组件。它通常被称为“压缩函数”,以任意实数作为输入,并将其映射为 0 到 1 之间的值。这种“S”形曲线非常适合将模型的原始输出转换为易于解释的概率。在神经网络(NN)中,Sigmoid 函数充当激活函数,引入非线性,使模型能够学习超越简单线性关系的复杂模式。虽然在深层隐藏层中,它已基本被其他函数取代,但在二元分类任务的输出层中,它仍是标准选择。
Sigmoid 在 AI 中的工作机制#
Sigmoid 函数的核心作用是将输入数据(通常称为 logits)转换到归一化范围内。对于目标是预测某个事件发生可能性的任务,这种转换至关重要。通过将输出限制在 0 到 1 之间,该函数提供了清晰的概率分数。
- 逻辑回归: 在传统统计建模中,Sigmoid 是逻辑回归的核心。它使数据科学家能够估计二元结果的概率,例如客户是否会流失。
- 二元分类: 对于旨在区分两个类别(例如“猫”和“狗”)的神经网络,最后一层通常会使用 Sigmoid 激活函数。如果输出大于某个阈值(通常为 0.5),模型就会预测为正类。
- 多标签分类: 与类别互斥的多类问题不同,多标签任务允许一张图像或一段文本同时属于多个类别。在这种情况下,Sigmoid 会独立应用于每个输出节点,使模型能够在同一场景中同时检测到“汽车”和“人”,而不会产生冲突。
与其他激活函数的主要区别#
Sigmoid 曾一度是所有层的默认选择,但研究人员发现了其局限性,例如梯度消失问题:在深度网络中,梯度会变得过小,无法有效更新权重。因此,隐藏层开始采用替代函数。
- Sigmoid 与 ReLU(整流线性单元)的比较: ReLU 的计算速度更快;当输入为正时,它直接输出输入值,否则输出零,从而避免梯度消失。它是现代架构(如 YOLO26)隐藏层的首选,而 Sigmoid 则保留用于特定任务的最终输出层。
- Sigmoid 与 Softmax的比较: 两者都会将输出映射到 0 到 1 的范围,但用途不同。Sigmoid 独立处理每个输出,因此非常适合二元或多标签任务。Softmax 会强制所有输出之和为 1,生成概率分布,用于多类分类,其中只有一个类别是正确的。
实际应用#
Sigmoid 函数的实用性遍及各个需要进行概率估计的行业。
-
医疗诊断: 用于医学图像分析的 AI 模型通常会使用 Sigmoid 输出,预测 X 射线或 MRI 扫描中存在某种疾病的概率。例如,模型可能输出 0.85,表示存在肿瘤的可能性为 85%,从而帮助医生及早发现。
-
垃圾邮件检测: 电子邮件过滤系统会使用带有 Sigmoid 分类器的自然语言处理(NLP)模型,判断收到的邮件是否为“垃圾邮件”。模型会分析关键词和元数据,并输出一个分数,以决定邮件进入收件箱还是垃圾邮件文件夹。
实际实现#
你可以使用 PyTorch(一个用于构建深度学习模型的热门库)观察 Sigmoid 如何转换数据。这个简单示例展示了它对一系列输入值产生的“压缩”效果。
import torch
import torch.nn as nn
# Create a Sigmoid layer
sigmoid = nn.Sigmoid()
# Define input data (logits) ranging from negative to positive
input_data = torch.tensor([-5.0, -1.0, 0.0, 1.0, 5.0])
# Apply Sigmoid to squash values between 0 and 1
output = sigmoid(input_data)
print(f"Input: {input_data}")
print(f"Output: {output}")
# Output values near 0 for negative inputs, 0.5 for 0, and near 1 for positive inputs如果你希望训练使用这些概念的模型,但又不想编写底层代码,Ultralytics Platform 提供了直观的界面,用于管理数据集和训练 YOLO26 等先进模型。它会自动处理架构方面的复杂性,让你能够专注于为特定的计算机视觉应用收集高质量的训练数据。









