SiLU函数

SiLU 函数(Sigmoid Linear Unit,Sigmoid 加权线性单元)是深度学习中一种非常流行的激活函数,也被称为 Swish(当参数 β=1 时)。

它在 2017 年由 Google 研究团队提出(论文《Searching for Activation Functions》),后来在大量现代模型中成为默认或高性能选择之一。

1. 数学公式

SiLU(x) = x × σ(x)

其中 σ(x) 是标准的 logistic sigmoid 函数:

σ(x) = 1 / (1 + e⁻ˣ)

所以完整写法是:

SiLU(x) = x / (1 + e⁻ˣ)

  • 当 β ≠ 1 时,更广义的形式叫 Swish:x × σ(βx)
  • 但在绝大多数框架和论文中,SiLU 特指 β=1 的情况(PyTorch、TensorFlow/Keras、Ultralytics YOLO 等都这样定义)

2. 主要特点(对比 ReLU / GELU)

特性SiLU (Swish β=1)ReLUGELU实际影响
定义域(-∞, +∞) → ≈(-0.278, +∞)(-∞, +∞) → [0, +∞)(-∞, +∞) → ≈(-0.17, +∞)SiLU 允许少量负值输出
是否单调递增非单调(在 x≈-1.278 附近有轻微凹陷)单调递增单调递增非单调性有时带来更好表达能力
平滑性处处可导(C∞ 光滑)x=0 处不可导处处光滑梯度更稳定,避免震荡
计算开销中等(含 exp 和除法)极低(max(0,x))中等偏高(含 erf 或近似)现代 GPU 上几乎无感
负值区行为小负值(最负 ≈ -0.278)恒为 0(dying ReLU)小负值(更接近 0)缓解 dying neuron 问题
正值区行为接近线性(x 很大时 ≈ x)严格线性接近线性但稍有压缩保留梯度信息好
梯度消失风险低(负区梯度不为 0)中(负区梯度=0)很低深层网络更友好

函数图像关键点(文字描述,实际看图更直观):

  • x → +∞:SiLU(x) ≈ x(线性)
  • x = 0:SiLU(0) = 0
  • x → -∞:SiLU(x) → 0(从下方缓慢接近)
  • 最小值 ≈ -0.278 在 x ≈ -1.278 处(轻微“下凹”)
  • 整体比 ReLU 更平滑,比 sigmoid 更“线性”

3. 为什么 SiLU 这么受欢迎?(2025–2026 视角)

  • 比 ReLU 好:没有 dying ReLU 问题,负值区仍有微弱梯度
  • 比 GELU 简单:计算更快(无 erf 函数),在很多实验中性能接近甚至略胜
  • 在 Transformer / CNN / 视觉大模型中表现优秀
  • YOLOv5 → YOLOv8 → YOLOv10/v11/v26 系列大量默认用 SiLU
  • EfficientNet、ConvNeXt、MobileNetV3 等经典 CNN 变体常用
  • Llama 系列、Grok、部分 Mistral 模型也用 Swish/SiLU 变体
  • 强化学习早期提出:2017 年 arXiv 论文就是在 RL 背景下提出的,后来扩散到监督学习

4. 常见框架中的实现(2026 现状)

  • PyTorchtorch.nn.SiLU()F.silu(x)(最常用)
  • TensorFlow / Kerastf.nn.swishtf.keras.activations.swish(等价于 SiLU)
  • JAX / Flaxjax.nn.swish
  • Ultralytics YOLO:默认激活就是 SiLU

代码示例(PyTorch):

import torch
import torch.nn as nn

x = torch.tensor([-3.0, -1.0, 0.0, 1.0, 3.0])
silu = nn.SiLU()

print(silu(x))
# 输出大致:tensor([-0.0474, -0.2689,  0.0000,  0.7311,  2.8577])

5. 什么时候选 SiLU?

  • 优先选:现代 CNN、目标检测(YOLO)、高效模型、深度 Transformer、需要平衡性能和计算量的场景
  • 可以考虑 GELU:BERT、GPT 类纯 Transformer(GELU 理论上更“高斯”)
  • 可以回退 ReLU:极致移动端部署、模型已经很深但梯度爆炸不严重

一句话总结:

SiLU = “平滑版 ReLU + 少量负值泄漏 + 极简计算”
是 2020 年后视觉大模型和很多高效架构的“国民激活函数”之一。

如果你想看 SiLU / Swish / GELU / ReLU 的对比图像,或者想知道在具体模型(如 YOLOv11、Llama)中为什么选它,可以继续问,我可以进一步展开!

文章已创建 4845

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部