激活函数
激活函数(Activation Function)是神经网络中引入非线性的核心组件。没有它,无论堆叠多少层线性变换,整个网络仍然等价于一个单层仿射映射——这就是线性坍缩(Linear Collapse)。本节从一道选择题出发,沿着时间线梳理激活函数的设计演化:为什么 Sigmoid 会被 ReLU 取代?Swish 的非单调性有什么用?GELU 为什么成了 Transformer 的标配?
前置知识回顾
- 链式法则:反向传播的数学基础。不熟悉的回去看 神经网络模型 · L07。
- 梯度消失/爆炸:深层网络中梯度逐层衰减或增长的现象。本节会反复遇到。
- Sigmoid 函数:$\sigma(x) = 1/(1+e^{-x})$,值域 $(0,1)$,二分类输出层的标准选择。
例题:Swish 激活函数的特性
题目:Swish 激活函数定义为 $f(x) = x \cdot \sigma(x)$。相比于 ReLU,Swish 的主要特点是?
- A. 它是非单调的
- B. 它是完全非负的
- C. 它的计算成本比 ReLU 低得多
- D. 它在负区间有平滑的曲线,可能保留更多信息
答案:D
逐项分析:
- A(非单调):技术上正确——Swish 确实在 $x \approx -1.278$ 处有一个极小值点,函数先降后升,所以是非单调的。但"非单调"只是一个数学性质,没有揭示它为什么比 ReLU 更好。
- B(完全非负):错误。Swish 在负半轴的输出小于零(在极小值附近约为 $-0.278$),所以不是完全非负的。
- C(计算成本更低):错误。Swish 需要计算 Sigmoid,比 ReLU 的简单比较操作慢 3–5 倍。
- D(负区间平滑保留信息):✅ 这是 Swish 的核心优势。ReLU 对所有负输入直接清零(硬门控),而 Swish 在负区间有一条平滑的曲线,允许小幅负值通过——这使得网络能在负值区域保留梯度流和特征信息,而不是一刀切。
这道题引出了本节的核心问题:激活函数的设计一直在非线性表达能力和梯度流动性之间寻找平衡。下面我们从历史脉络中追踪这个平衡点的移动。
线性坍缩问题
没有激活函数的多层线性网络,无论多少层,等价于单层线性变换:
多层复合被"坍缩"为一个矩阵乘法,表达能力与单层感知机无异。
激活函数的本质是向网络注入逐元素的非线性,使得多层复合不再可约化。从几何角度看,非线性对输入空间实施"扭曲"——将原本线性不可分的数据弯曲到新的特征空间中,使线性分类器(下一层的加权求和)能够分离。
Sigmoid 函数
- 值域:$(0, 1)$
- 导数最大值:$\sigma'(0) = 0.25$
- 饱和区:$|x|$ 较大时,导数趋近于 0
Tanh 函数(双曲正切)
- 值域:$(-1, 1)$,零中心
- 导数最大值:$\tanh'(0) = 1$(比 Sigmoid 的 0.25 好得多)
- 改进:零中心输出缓解了 Sigmoid 的 zigzag 梯度更新问题
两者的共同致命缺陷是梯度消失。在饱和区($|x|$ 较大时),导数趋近于零。链式法则下,梯度逐层乘以一个 $\leq 0.25$(Sigmoid)或 $< 1$(Tanh)的因子,指数衰减。10 层 Sigmoid 网络的底层梯度约为 $0.25^9 \approx 10^{-5}$,底层权重几乎无法更新。
Sigmoid 还有一个额外问题:输出非零中心。$\sigma(x) > 0$ 对所有 $x$ 成立,导致梯度更新方向总保持同一符号,走"之字形"路径,收敛慢。
ReLU(Rectified Linear Unit)
- 值域:$[0, +\infty)$
- 正半轴导数恒为 1:梯度不衰减!
- 计算成本:仅需一次比较操作,GPU 高效向量化
ReLU 的革命性在于它从根本上解决了梯度消失。正半轴导数恒为 1,梯度可以无衰减地穿过任意深的网络。Glorot et al. (2011) 的实验表明,使用 ReLU 的网络比 Sigmoid/Tanh 快 6 倍以上收敛。
另一个优势是稀疏表征:约 50% 的神经元输出为零(假设输入分布对称),降低了过拟合风险和计算开销。这被解释为一种隐式的结构正则化。
Dead ReLU 问题
ReLU 的核心缺陷:一旦某个神经元的输入在训练过程中始终为负(权重偏移过大或学习率过高),该神经元将永远输出 0,梯度永远为 0——它"死了"。实践中约 20%–40% 的神经元可能处于死亡状态。
为什么仍被接受:稀疏子网络通常仍有足够的表达能力(lottery ticket hypothesis),且简单性带来的工程便利远大于损失。
ReLU 的成功催生了一系列变体,各自针对特定缺陷进行改进:
Leaky ReLU
允许负轴有小幅非零梯度,消除 Dead ReLU。$\alpha$ 为超参数,需手动调。
PReLU(Parametric ReLU)
将 Leaky ReLU 的 $\alpha$ 设为可学习参数,让网络自动适应最优负轴斜率。He et al. (2015) 在 ResNet 中使用 PReLU 获得小幅提升。
ELU(Exponential Linear Unit)
负半轴输出在 $[-\alpha, 0)$ 区间,使输出均值接近零(零中心),收敛更快。代价是包含 $e^x$,计算成本高于 ReLU。
SELU(Scaled ELU)
其中 $\lambda \approx 1.0507$,$\alpha \approx 1.6733$(由 Banach 不动点定理推导)。通过激活函数本身实现自归一化——每层输出自动趋向均值 0、方差 1,无需 BatchNorm。但需要 LeCun 初始化 + Alpha Dropout,约束较多。
| 激活函数 | 正半轴导数 | 负半轴行为 | 输出中心 | Dead Neuron | 计算成本 |
|---|---|---|---|---|---|
| ReLU | 1 | 硬清零 | 非零中心 | 有 | 极低 |
| Leaky ReLU | 1 | 小斜率 $\alpha x$ | 非零中心 | 无 | 极低 |
| PReLU | 1 | 可学习斜率 | 非零中心 | 无 | 极低 |
| ELU | 1 | 软饱和 $[-\alpha,0)$ | 接近零 | 无 | 中等 |
| SELU | $\lambda$ | 缩放软饱和 | 零均值 | 无 | 中等 |
2017 年,Google Brain 的 Ramachandran, Zoph & Le 使用强化学习自动搜索激活函数——搜索空间是基本数学运算的组合。最佳发现被命名为 Swish:
Swish($\beta=1$ 时即 SiLU)
- $\beta \to 0$:退化为 $f(x) = x/2$(线性)
- $\beta \to +\infty$:退化为 $\text{ReLU}(x)$(硬阈值)
- $\beta = 1$ 时:有唯一极小值点 $x \approx -1.278$,函数值约为 $-0.278$
Swish 有三大核心特征:
1. 非单调性。几乎所有主流激活函数都是单调递增的,但 Swish 在负区间先降后升,存在一个极小值"凹陷"。这使得网络能够对负输入产生抑制效应而非简单清零——在拟合峰值型分布等复杂目标时具有本质优势。这也正是例题选项 D 所描述的核心特性。
2. 平滑性。Swish 处处 $C^\infty$ 可微,无 ReLU 在 $x=0$ 处的不可导"突变点"。光滑的损失面使梯度下降更稳定。
3. 自门控(Self-Gated)。门控思想借鉴自 LSTM:用 Sigmoid 作为"软开关"调制主信号。但 Swish 的门控信号是 $x$ 自身,不需要额外参数:
拖动滑块观察 $\beta$ 的效果:$\beta$ 越大,Swish 越接近 ReLU;$\beta = 1$ 时可以看到明显的非单调凹陷。
GELU(Gaussian Error Linear Unit)
其中 $\Phi(x)$ 是标准正态分布的累积分布函数(CDF):
快速近似(Hendrycks & Gimpel 2016,误差 $< 0.02\%$):
GELU 最深刻的设计洞察在于它统一了 Dropout 和非线性变换:
Dropout → GELU:从硬门控到软门控
Dropout 的本质:以概率 $p$ 将输入随机置零,等价于 $x \cdot \xi$,其中 $\xi \sim \text{Bernoulli}(p)$。
GELU 的本质:将 Bernoulli 随机变量替换为正态 CDF 的软概率加权——以输入值为阈值,从标准正态中采样,当采样值小于输入时"部分保留"。
两者都实现了"输入依赖的随机抑制",只是一个用 $0/1$ 硬门控,一个用 $\Phi(x) \in (0,1)$ 软门控。
这个概率视角解释了为什么 GELU 和 Transformer 天然契合:Attention 本质上是概率加权(Query-Key 归一化),GELU 的概率加权形式与之一致。BERT/GPT 的示范效应进一步巩固了 GELU 在 NLP 中的统治地位。
Mish
其中 $\text{softplus}(x) = \ln(1 + e^x)$ 是 ReLU 的平滑近似。
Mish 借鉴了 Swish 的自门控思路,但用 $\tanh$ 替代 $\sigma$。关键优势是自正则化:$\tanh$ 的压缩效应在 $|x|$ 过大时自动抑制输出值,防止梯度爆炸,减少对 BatchNorm/LayerNorm 的依赖。
| 性质 | ReLU | Swish | GELU | Mish |
|---|---|---|---|---|
| 单调性 | 单调 | 非单调 | 非单调 | 非单调 |
| 平滑性 | $x=0$ 不连续 | $C^\infty$ | $C^\infty$ | $C^\infty$ |
| 门控机制 | 无 | $\sigma(x)$ | $\Phi(x)$ | $\tanh(\text{softplus})$ |
| 自正则化 | 无 | 无 | 无 | 有 |
| 负值处理 | 硬清零 | 软保留 | 软保留 | 软保留+压缩 |
| 计算成本 | 极低 | 中等 | 中高 | 中等 |
从 Sigmoid 到 GELU,激活函数的设计经历了三次根本性的范式转移:
三次范式转移
- 生物模拟 → 数学优化
(Sigmoid/Tanh → ReLU):从模拟神经元阈值行为,转向追求梯度流动性和计算效率。核心矛盾从"像不像生物"变成"梯度能不能流过去"。- 硬阈值 → 软门控
(ReLU → Swish/GELU):从简单的 $0/1$ 分段线性,转向概率加权的连续门控。负值从"一刀切"变成"按需保留"。- 单一目标 → 多目标协同
:ReLU 的"简单即正义" vs. GELU 的"概率一致性" vs. Mish 的"自正则化"。工程实践中的成熟体现。
贯穿始终的底层矛盾是非线性与梯度流动性的张力——非线性越强(表达能力越强),梯度越容易在某个区域衰减或爆炸。每一种新激活函数都是在重新校准这个平衡点。
| 任务类型 | 推荐 | 理由 |
|---|---|---|
| 图像分类(CNN) | ReLU / GELU | GELU 在 ViT 中占优;ReLU 仍是经典 CNN 性价比之选 |
| NLP / Transformer | GELU | BERT/GPT 示范效应,与 Attention 概率本质契合 |
| 语音识别 | Leaky ReLU / ELU | 需要处理连续音频中的负振幅 |
| 自编码器 / VAE | Leaky ReLU / ELU | 重建任务需要保留负值信息 |
| GAN 生成器 | ReLU / Leaky ReLU | 稀疏激活保持多样性 |
| GAN 判别器 | Leaky ReLU | 需处理全范围输出 |
| 深度强化学习 | ReLU | 计算效率优先 |
| 搜索到的新架构 | Swish / Mish | 算力充足时即插即用替代 ReLU |
复习速查
- 为什么需要激活函数:没有非线性,多层网络坍缩为单层线性变换。
- Sigmoid/Tanh 的问题:梯度消失(饱和区导数趋零)+ Sigmoid 输出非零中心。
- ReLU 的突破:正半轴导数恒为 1,梯度不衰减。缺陷:Dead ReLU。
- ReLU 变体:Leaky ReLU(小负斜率)→ PReLU(可学习斜率)→ ELU(零中心)→ SELU(自归一化)。
- Swish 三大特征:非单调性(负区间凹陷)、平滑性($C^\infty$)、自门控($x \cdot \sigma(x)$)。
- GELU 核心洞察:$x \cdot \Phi(x)$ = Dropout 的软门控版本。Transformer 标配。
- Mish:$x \cdot \tanh(\text{softplus}(x))$,额外具有自正则化能力。
- 三次范式转移:生物模拟→数学优化,硬阈值→软门控,单目标→多目标协同。
参考来源
- Rumelhart et al. (1986) — Learning representations by back-propagating errors. Nature.
- Glorot & Bengio (2011) — Understanding the difficulty of training deep feedforward neural networks.
- Krizhevsky et al. (2012) — ImageNet Classification with Deep Convolutional Neural Networks (AlexNet).
- Clevert et al. (2016) — Fast and Accurate Deep Network Learning by Exponential Linear Units (ELU).
- Hendrycks & Gimpel (2016) — Gaussian Error Linear Units (GELUs). arXiv:1606.08415.
- Ramachandran, Zoph & Le (2017) — Searching for Activation Functions (Swish). Google Brain.
- Klambauer et al. (2017) — Self-Normalizing Neural Networks (SELU).
- Devlin et al. (2018) — BERT: Pre-training of Deep Bidirectional Transformers.
- Misra (2019) — Mish: A Self Regularized Non-Monotonic Activation Function. BMVC 2020.
- 课程课件:25C07 第 5–13 页(神经元、激活函数、输出单元)— 神经网络模型 · L07