2.2.11. 激活函数-SiLU¶
SiLU(Sigmoid-weighted Linear Unit)也称为 Swish 激活函数,由 Google 的研究人员在 2017 年提出,是一种平滑、非单调的激活函数。
1. 数学定义¶
其中
2. 特性¶
平滑性:处处可微,导数连续
非单调性:在
时先略微下降,再随 增大而上升下界有界,上界无界:当
时趋近于 0;当 时趋近于线性函数自门控机制:Sigmoid 部分充当“门控”,调节输入
的输出幅度
3. 导数¶
4. 优点¶
改善梯度流:相比 ReLU,负区域也有梯度,缓解神经元“死亡”问题
平滑优化:在损失曲面中提供更平滑的过渡,有助于优化稳定性
性能优异:在多种深度学习任务(尤其是大规模模型)中表现优于 ReLU 和 Leaky ReLU
5. 与其他激活函数对比¶
激活函数 |
公式 |
特点 |
|---|---|---|
ReLU |
简单,但负区域梯度为零 |
|
Leaky ReLU |
缓解死亡神经元问题 |
|
SiLU/Swish |
平滑,自门控,优化友好 |
6. 应用¶
最初在 Transformer 模型和大规模图像分类任务中表现突出
被用于 BERT、EfficientNet 等现代架构
在需要平滑优化的场景(如强化学习、生成模型)中也有应用
7. 代码示例(PyTorch)¶
import torch
import torch.nn as nn
# 内置实现
silu = nn.SiLU()
# 手动实现
def silu(x):
return x * torch.sigmoid(x)
# 在模型中使用
model = nn.Sequential(
nn.Linear(10, 50),
nn.SiLU(), # 替代 ReLU
nn.Linear(50, 1)
)
8. 变体¶
Swish with β:
,通过 β 控制门控强度Hard Swish:在移动端设备上近似实现,计算更高效
SiLU 因其平衡了表达能力和优化稳定性,已成为现代深度学习模型中 ReLU 的有力竞争者。





