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

SiLU (Sigmoid Linear Unit)

探索 SiLU (Swish) 激活函数如何提升深度学习在目标检测和自然语言处理等人工智能任务中的性能。

西格玛线性单元(Sigmoid Linear Unit)被广泛地称为 SiLU,是一种最先进的 激活函数,在现代神经网络(NN 在现代神经网络(NN)架构中起着至关重要的作用。 最初是在有关 自动搜索激活函数的研究发现的它被称为 Swish-SiLU 已成为高性能模型中深度层的首选。它是线性和非线性行为之间的桥梁 线性和非线性行为之间的桥梁,使 深度学习(DL)系统建立复杂数据模型的能力 模式。通过将输入乘以 Sigmoid变换,SiLU 可以创建一条平滑的自门控 曲线,从而增强训练过程中的信息流。

SiLU 的力学

SiLU 的数学定义很简单:$f(x) = x \cdot \sigma(x)$,其中$\sigma(x)$ 是西格玛函数。 函数。尽管简单,但这种结构提供了独特的属性,有利于 机器学习(ML)模型。

  • 平滑:与 ReLU(整流线性单元)中锯齿状的 "角 "不同 ReLU(整流线性单元)的锯齿状 "角"不同,SiLU 是一个连续、可微分函数。 连续的可微分函数。这种平滑性有助于 优化算法,如 梯度下降等优化算法。 的权重更新,从而在模型训练过程中加快收敛速度。 模型训练
  • 非单调性SiLU 的一个主要特点是非单调性。 非单调性,这意味着即使输入增加,其值也会降低(特别是在负值区域)。 输入增加(特别是在负区域),其值也会降低。这一特性允许网络捕捉复杂的 特征和 "负 "信息,而这些信息可能会被 ReLU 等函数所忽略,从而有助于避免梯度消失问题。 梯度消失问题
  • 自门控:功能作为自己的门,根据输入信号的大小决定有多少输入信号通过 根据输入信号的大小决定有多少信号通过。这模仿了 LSTM 中的门控机制。 LSTM 中门控机制,但这种机制经过了简化、 计算效率的方式,适用于 卷积神经网络(CNN)

与相关概念的比较

要了解何时使用 SiLU,需要将它与 Ultralytics 术语表中的其他常见激活函数区分开来。 Ultralytics 术语表中的其他常见激活函数

  • ReLU vs. SiLUReLU 因其速度快而成为隐藏层的传统默认设置。然而,ReLU 对所有负输入都会输出硬零值,导致 "死神经元 "停止学习。 导致 "死神经元 "停止学习。SiLU 允许小梯度流过负值,使神经元保持活跃。 负值,使神经元保持活跃,提高深度网络的准确性。 深度网络的准确性
  • GELU 与 SiLU 高斯误差线性单元(GELU)在外观和功能上与 SiLU 非常相似。虽然 GELU 主要用于 主要用于 Transformer架构(如 BERT 或 GPT)、 SiLU 通常是计算机视觉任务的标准,包括 Ultralytics YOLO11系列模型。
  • Sigmoid 与 SiLUSiLU 在计算中使用 Sigmoid 函数进行计算,但它们的用途不同。Sigmoid 通常用于输出层 用于二元分类以产生概率,而 SiLU 则用于隐藏层以方便特征提取。 特征提取。

实际应用

SiLU 是许多尖端人工智能解决方案不可或缺的一部分,在这些解决方案中,精度和效率至关重要。

  • 实时物体检测:最先进的探测器,如 YOLO11等先进探测器在其主干和颈部 架构。这使得该模型能够保持较高的推理速度,同时在极具挑战性的条件下精确检测物体,如 具有挑战性的条件下准确检测物体,例如 自动驾驶汽车系统识别 行人。
  • 医疗诊断:医学图像分析中,模型必须 辨别核磁共振成像或 CT 扫描中细微的纹理差异。SiLU 的梯度保护特性有助于这些网络 学习检测早期肿瘤所需的细粒度细节,提高人工智能在医疗保健领域的可靠性。 人工智能在医疗保健领域的应用

用Python实现

现代框架可以轻松实现 SiLU。下面是一个使用 PyTorch来演示 SiLU 如何转换输入数据 与标准线性传递相比是如何转换输入数据的。

import torch
import torch.nn as nn

# Initialize the SiLU activation function
silu = nn.SiLU()

# Create a sample tensor with positive, negative, and zero values
input_tensor = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])

# Apply SiLU: Negative values represent the non-monotonic "dip"
output = silu(input_tensor)

print(f"Input:  {input_tensor}")
print(f"Output: {output}")
# Output demonstrates the smooth transition and retention of negative gradients

有关更多技术细节,开发人员可以查阅 PyTorch SiLU或同等的 TensorFlow SiLU 实现的官方文档。了解 这些激活函数是掌握 模型优化的关键一步。

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入