07 · SiLU / Swish — 自门控激活函数
迭代了什么
上一代的问题:ReLU 在 Transformer 中不是最优的。
这代改了什么:Swish = x·σ(βx),β 可学习,在线性函数和 ReLU 之间插值。SiLU = Swish(β=1)。非单调,负半轴有凸起。
效果:LLaMA 系列(1/2/3)使用 SiLU,EfficientNet/MobileNetV3 使用 Swish。越来越多架构用 SiLU 替代 GELU。
一、两篇论文,同一函数
SiLU(Elfwing et al., 2017.02,从 EE-RBM 理论推导)和 Swish(Ramachandran et al., 2017.10,通过自动化搜索发现)在相近时间独立发现了同一函数 x · sigmoid(x)。有趣的是,前者来自理论推导,后者来自大规模架构搜索——两个完全不同的出发点汇聚到了同一个函数上。
二、核心公式
2.1 Swish 的一般形式
Swish(x) = x · σ(βx) = x / (1 + e-βx)
其中 β 为可学习参数或常数,控制门控曲线的陡峭程度。
2.2 SiLU(β=1 的特例)
SiLU(x) = x · σ(x) = x / (1 + e-x)
SiLU 是 Swish 在 β=1 时的退化情况。
2.3 Swish 的参数化插值
β=0 → f(x) = x/2 (线性)
β=1 → SiLU
β→∞ → ReLU(硬门控极限)
通过调节 β,Swish 可以连续地从线性过渡到 ReLU,为不同任务提供灵活的非线性程度选择。
三、关键特征
- 非单调性——负半轴在 x ≈ -1.28 处有全局最小值约 -0.28(俗称"凸起"),这使小部分负梯度得以保留,有助于梯度流动
- 有下界、无上界——避免激活值饱和,同时保留负值的正则化效果
- 光滑——导数处处存在,利于基于梯度的优化
- 自门控——不需要额外的门控网络,输入本身即门控信号
四、实际影响
- Swish/SiLU 被 EfficientNet、MobileNetV3 等视觉架构采用
- LLaMA 系列(LLaMA 1/2/3)的 FFN 全部使用 SiLU 激活函数
- 越来越多现代架构用 SiLU 替代 GELU,因为 SiLU 计算更简单(无需 erf 或近似展开)且在实际任务上性能相当或更优
- 从理论角度看,Swish 证明了自动化架构搜索可以比人工设计更早发现最优激活函数