深圳Yolo 视觉
深圳
立即加入
词汇表

Sigmoid 函数

探索Sigmoid函数在机器学习中的作用。了解这个激活函数如何使Ultralytics YOLO26等模型实现二元分类。

Sigmoid 函数是 机器学习 (ML)深度学习 (DL) 领域广泛使用的基本数学组件。它常被称为“挤压函数”,接收任何实数值作为输入,并将其映射到 0 到 1 之间的值。这种独特的“S”形曲线使其在将原始模型输出转换为可解释的概率方面非常有用。在 神经网络 (NN) 的上下文中,Sigmoid 函数充当 激活函数,引入非线性,使模型能够学习超越简单线性关系的复杂模式。尽管它在深度隐藏层中已 largely 被其他函数取代,但在二分类任务的输出层中,它仍然是标准选择。

Sigmoid 在 AI 中的机制

Sigmoid 函数的核心作用是将输入数据(通常称为 logits)转换为标准化范围。这种转换对于目标是预测事件发生可能性的任务至关重要。通过将输出限制在 0 到 1 之间,该函数提供了清晰的概率分数。

  • 逻辑回归在传统统计建模中,Sigmoid 是逻辑回归背后的核心。它允许数据科学家估计二元结果的概率,例如客户是否会流失或留存。
  • 二分类对于旨在区分两个类别(例如,“猫”与“狗”)的神经网络,最后一层通常采用 Sigmoid 激活。如果输出大于某个阈值(通常为 0.5),模型则预测为正类别。
  • 多标签分类与类别互斥的多类别问题不同,多标签任务允许图像或文本同时属于多个类别。在这种情况下,Sigmoid 独立应用于每个输出节点,使模型能够在同一场景中 detect “汽车”和“人”而不会产生冲突。

与其他激活函数的主要区别

尽管Sigmoid曾是所有层的默认选择,但研究人员发现了其局限性,例如梯度消失问题,即在深度网络中,梯度变得过小以致无法有效更新权重。这导致了隐藏层采用替代方案。

  • Sigmoid 对比 ReLU(修正线性单元)ReLU计算速度更快,通过在输入为正时直接输出输入值,否则输出零来避免梯度消失。它是YOLO26等现代架构中隐藏层的首选,而Sigmoid则保留用于特定任务的最终输出层。
  • Sigmoid 对比 Softmax两者都将输出映射到0-1范围,但用途不同。Sigmoid独立处理每个输出,使其非常适合二元或多标签任务。Softmax强制所有输出之和为1,创建用于多类别分类的概率分布,其中只有一个类别是正确的。

实际应用

Sigmoid 函数的实用性延伸到需要进行概率估计的各个行业。

  1. 医疗诊断:用于 医学图像分析的 AI 模型通常使用 Sigmoid 输出,以预测 X 射线或 MRI 扫描中存在疾病的概率。例如,模型可能输出 0.85,表示肿瘤存在的可能性为 85%,从而帮助医生进行早期 detect。
  2. 垃圾邮件检测:电子邮件过滤系统利用带有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 等最先进的模型。通过自动处理架构复杂性,它使用户能够专注于为其特定的 计算机视觉 应用收集高质量的 训练数据

让我们一起共建AI的未来!

开启您的机器学习未来之旅