ReLU、GELU 与 SiLU:今天真正弄懂
先记住:一句话定义 + 一句记忆口诀
一句话定义:激活函数是神经网络的“弯道开关”,把输入的直线计算变成弯曲曲线,让网络能学会复杂的现实规律。
记忆口诀: “负全砍掉是 ReLU,平滑乘权看 SiLU;概率门控是 GELU,现代大模最爱录。”
生活类比: 想象你在听一段嘈杂的会议录音,要做说话人切分。 - ReLU 像一个“粗暴门卫”:音量只要低于 0 分贝,直接静音切死(变成 0);只要高于 0,原样放行。速度极快,但容易误杀微弱声音。 - SiLU 像一个“智能滑块”:声音越大,放行比例越接近 100%;声音低于 0 时,不会一刀切,而是留一点点微弱气息,越低才越趋近于静音。 - GELU 像一个“概率安检员”:它不看绝对数值,而是看你的输入在整体正态分布里处于什么水平。越大概率合格的特征越完整通过,边缘特征被柔和抑制。
公式与符号: 1. ReLU: $$f(x) = \max(0, x)$$ - $x$:输入特征值。如果 $x \le 0$,输出 0;$x > 0$,输出 $x$。导数在正半轴恒为 1。
2. SiLU (又叫 Swish-1): $$f(x) = x \cdot \sigma(x) = \frac{x}{1 + e^{-x}}$$ - $\sigma(x)$ 是 Sigmoid 函数。当 $x$ 很大时,$\sigma(x) \approx 1$,$f(x) \approx x$;当 $x$ 很负时,$\sigma(x) \approx 0$,$f(x) \approx 0$。
3. GELU (高斯误差线性单元): $$f(x) = x \cdot \Phi(x) = x \cdot P(X \le x), \quad X \sim \mathcal{N}(0, 1)$$ - $\Phi(x)$ 是标准正态分布的累积分布函数(CDF)。它表示“输入 $x$ 落在标准正态分布左侧的概率”。输入越大,被保留的概率越高。
它解决什么问题? 神经网络本质是矩阵乘法(线性变换)。线性运算套线性运算,层数叠得再厚,数学上等价于单层矩阵乘法。激活函数给网络注入“非线性”,让它能拟合复杂的声学频谱和视频动态。 没有它会怎样? 模型彻底退化成线性回归。不管你的网络有 100 层还是 1000 层,它连简单的异或(XOR)问题都解不了,更别提识别是谁在说话、视频里在做什么动作。
在音视频与说话人日志中的实际位置: - ECAPA-TDNN(说话人识别/日志经典主干):卷积层和残差块后,通常使用 ReLU 或 LeakyReLU 进行声学特征下采样提取。 - Conformer / Whisper(语音识别与说话人日志前沿编码器):前馈网络(Feed-Forward Module)中普遍采用 GELU 或 SiLU(Swish),平滑梯度能让长语音特征更稳定收敛。 - Video Swin Transformer / TimeSformer(视频时空理解):Transformer 的 MLP 模块标准配置就是 GELU。
ReLU 在 $x < 0$ 时的导数是多少?
SiLU 公式里的 $\sigma(x)$ 指的是什么函数?
Whisper 和 Conformer 的 Feed-Forward 模块常用什么激活函数?
- 发展流程:
- 远古时期(Sigmoid / Tanh):两头饱和,输入稍微过大或过小,导数就接近 0,造成严重的“梯度消失”,导致深层网络根本训不动。
- 突破时期(ReLU):2012 年 AlexNet 普及。导数在正半轴永远是 1,计算快(只需判断正负),彻底解决了深层正向梯度消失。但带来“神经元坏死(Dying ReLU)”:一旦输入长期小于 0,神经元参数永远得不到更新。
- 现代主导(GELU 与 SiLU):Transformer 爆发后(BERT、GPT、Whisper、Conformer),研究者发现平滑且非单调(在负半轴有极小值负谷)的激活函数收敛更稳、泛化更好。GELU 成为 NLP/语音 Transformer 标配,SiLU 成为 EfficientNet/YOLO/部分语音大模型的首选。
- 与相近概念的区别:
- ReLU vs LeakyReLU:LeakyReLU 在负半轴给了一个固定斜率(如 $0.01x$),生硬解决死区;而 SiLU 和 GELU 是光滑平曲线,自带下凸极小值点(约在 -0.75 到 -0.28 之间)。
- SiLU vs GELU:形状极度相似。SiLU 算力消耗略低于未近似化的 GELU,但在现代深度学习框架中两者都已算子融合,性能与速度差异通常在伯仲之间。
- 局限与未来:
- 事实局限:相比 ReLU 的 `max(0, x)` 仅需单条 CPU/GPU 比较指令,GELU 和 SiLU 包含指数、除法或正态误差近似,计算开销略大,对超低功耗边缘端芯片不友好。
- 未来推测:激活函数可能进一步向“可学习门控”(如 SwiGLU、GEGLU)收敛,通过引入参数化动态路由,提升声学混叠和重叠语音切分时的表征能力。
学习建议: 想吃透原理与公式推导,推荐去学《Dive into Deep Learning》对应章节,先看直觉和公式,再运行章节中的代码;动手写层时,打开《PyTorch Tutorials》,对照官方示例掌握张量与训练写法。
- 为什么 ReLU 会导致神经元坏死(Dying ReLU),而 GELU/SiLU 不容易坏死?
- 在音视频模型中,为什么近年很多模型从 ReLU 换成了 GELU 或 SiLU?换了之后梯度回传有什么具体变化?
- SwiGLU 和 GEGLU 是现代大模型中常见的变体,它们和 SiLU、GELU 是什么层级关系?