SiLU 激活函数
深度学习的平滑之门:结合 Sigmoid 的平滑性与 ReLU 的线性特性,开启神经网络表达的新维度
深度学习
性能提升
神经网络
数学特性
SiLU(x) = x · σ(x),结合线性单元与Sigmoid门控机制,实现自适应信息调节
性能优势
在YOLO系列模型中提升mAP 0.3-0.5%,在保持速度的同时显著提升检测精度
稳定训练
有效缓解梯度消失问题,避免神经元死亡,提升深层网络训练稳定性
数学定义与计算方式
SiLU(Sigmoid Linear Unit)激活函数,也被称为 Swish 激活函数(当 Swish 函数中的参数 β = 1 时) [37] [41], 是一种结合了 Sigmoid 函数平滑性和 ReLU 函数线性特性的非线性激活函数。
SiLU 的数学公式
SiLU(x) = x · σ(x) = x · 1/(1 + e-x)
函数特性
- 值域:(-∞, +∞)
- 连续可导,处处平滑
- 非单调性:负区间有全局最小值
- 自门控机制:输入自我调节
输入输出关系
- x → +∞: SiLU(x) ≈ x
- x → -∞: SiLU(x) ≈ 0
- x = 0: SiLU(0) = 0
- 最小值: x ≈ -1.278 时取得
SiLU 的导函数
SiLU'(x) = σ(x) + x · σ(x) · (1 - σ(x))
梯度特性分析
x ≫ 0 (正区间)
σ(x) ≈ 1, SiLU'(x) ≈ 1
类似 ReLU,梯度稳定
x ≈ 0 (零点附近)
σ(0) = 0.5, SiLU'(0) ≈ 0.5
平滑过渡,训练稳定
x ≪ 0 (负区间)
σ(x) ≈ 0,但梯度非零
避免神经元死亡
主要特点与优势
平滑性与非单调性
梯度特性与避免梯度消失
梯度保持机制
- 正区间梯度接近 1,有效传递梯度
- 负区间保留微弱梯度,避免神经元死亡
- 平滑过渡区域,训练过程更稳定
问题解决能力
- ReLU:神经元死亡问题
- Sigmoid:梯度消失问题
- SiLU:综合解决上述问题
与 ReLU 和 Sigmoid 的比较
特性 | SiLU (Swish) | ReLU | Sigmoid |
---|---|---|---|
数学公式 | x · σ(x) | max(0, x) | 1/(1 + e-x) |
平滑性 | 连续可导,处处平滑 | 在 x=0 处不可导 | 连续可导,处处平滑 |
非单调性 | 是 (负区间有全局最小值) | 否 (单调递增) | 否 (单调递增) |
负值处理 | 非零输出,非零梯度 | 输出为 0,梯度为 0 | 输出接近 0,梯度接近 0 |
梯度消失 | 有效缓解 | 正区间缓解,负区间导致神经元死亡 | 严重问题 |
计算成本 | 较高 (涉及 Sigmoid 和乘法) | 非常低 | 较高 (涉及指数运算) |
应用场景
在卷积神经网络 (CNN) 中的应用
在目标检测任务中的应用 (YOLO 系列)
YOLO 系列应用情况
YOLOv5
Conv 模块默认采用 SiLU
YOLOv7
除 tiny 版本外均使用 SiLU
YOLOX
标准配置采用 SiLU
在大型语言模型中的相关应用
实际效果与性能表现
在 YOLO 系列模型中的应用效果
YOLOv7 模型对比
YOLOv7-Tiny-SiLU vs YOLOv5-N
速度快 127 FPS,AP 准确率高 10.7%
YOLOv7-X vs YOLOv5-X
推理速度快 31 FPS,参数减少 22%,AP 提高 2.2%
在 LLaMA 等大型语言模型中的间接应用效果
性能总结
主要优势
- 平滑的梯度特性,训练更稳定
- 有效缓解梯度消失问题
- 避免神经元死亡,提高参数利用率
- 非单调性增强模型表达能力
权衡考虑
- 计算成本略高于 ReLU
- 在特定硬件上可能不如 ReLU 高效
- 性能提升通常能弥补计算开销