Sigmoid
Sigmoid 函数会将任意实数映射到 0 到 1 之间,从而把模型输出转化为概率。比较它与其他激活函数。
Sigmoid 函数是一个基础数学组件,在机器学习 (ML)和深度学习 (DL)领域得到广泛应用。它常被称为“压缩函数”,可将任意实数作为输入,并将其映射到 0 和 1 之间的值。这种独特的 S 形曲线非常适合将模型的原始输出转换为易于理解的概率。在神经网络 (NN)中,Sigmoid 函数充当激活函数,引入非线性,使模型能够学习超越简单线性关系的复杂模式。尽管它在深层隐藏层中已基本被其他函数取代,但在二分类任务的输出层中仍是标准选择。
Sigmoid 在 AI 中的工作原理#
从本质上说,Sigmoid 函数会将输入数据(通常称为 logits)转换到一个归一化区间。这种转换对于目标是预测某个事件发生概率的任务至关重要。通过将输出限制在 0 到 1 之间,该函数可提供清晰的概率分数。
- 逻辑回归:在传统统计建模中,Sigmoid 是逻辑回归的核心。它让数据科学家能够估计二元结果的概率,例如客户会流失还是留存。
- 二分类:对于旨在区分两个类别(例如“猫”和“狗”)的神经网络,最后一层通常会使用 Sigmoid 激活函数。如果输出高于某个阈值(通常为 0.5),模型就会预测为正类。
- 多标签分类:与类别互斥的多分类问题不同,多标签任务允许一张图像或一段文本同时属于多个类别。在这种情况下,Sigmoid 会分别应用于每个输出节点,使模型能够在同一场景中检测到“汽车”和“人物”,且彼此不会冲突。
与其他激活函数的主要区别#
Sigmoid 曾经是所有层的默认选择,但研究人员发现了梯度消失等局限性:在深层网络中,梯度会变得过小,无法有效更新权重。因此,研究人员开始在隐藏层中采用其他函数。
- Sigmoid 与 ReLU(修正线性单元):ReLU 的计算速度更快,而且在输入为正时直接输出输入值,否则输出零,从而避免梯度消失。现代架构的隐藏层首选 ReLU 及其平滑变体,例如 SiLU;YOLO26 就使用了 SiLU。而在特定任务中,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 等最先进的模型。该平台会自动处理架构复杂性,让你能够专注于为特定的训练数据和计算机视觉应用收集高质量数据。










