ESC
输入关键词搜索文章
目录

激活函数

机器学习基础 · 核心组件
从生物模拟到概率门控——非线性如何决定网络的深度上限
8核心激活函数
3范式转移
3交互式函数图
1经典例题
Part 0 · 学习目标
激活函数在神经网络中的角色

激活函数(Activation Function)是神经网络中引入非线性的核心组件。没有它,无论堆叠多少层线性变换,整个网络仍然等价于一个单层仿射映射——这就是线性坍缩(Linear Collapse)。本节从一道选择题出发,沿着时间线梳理激活函数的设计演化:为什么 Sigmoid 会被 ReLU 取代?Swish 的非单调性有什么用?GELU 为什么成了 Transformer 的标配?

前置知识回顾

  • 链式法则:反向传播的数学基础。不熟悉的回去看 神经网络模型 · L07
  • 梯度消失/爆炸:深层网络中梯度逐层衰减或增长的现象。本节会反复遇到。
  • Sigmoid 函数$\sigma(x) = 1/(1+e^{-x})$,值域 $(0,1)$,二分类输出层的标准选择。
引子
一道关于 Swish 的选择题

例题:Swish 激活函数的特性

题目:Swish 激活函数定义为 $f(x) = x \cdot \sigma(x)$。相比于 ReLU,Swish 的主要特点是?

  1. A. 它是非单调的
  2. B. 它是完全非负的
  3. C. 它的计算成本比 ReLU 低得多
  4. D. 它在负区间有平滑的曲线,可能保留更多信息

答案:D

逐项分析:

  • A(非单调):技术上正确——Swish 确实在 $x \approx -1.278$ 处有一个极小值点,函数先降后升,所以是非单调的。但"非单调"只是一个数学性质,没有揭示它为什么比 ReLU 更好。
  • B(完全非负):错误。Swish 在负半轴的输出小于零(在极小值附近约为 $-0.278$),所以不是完全非负的。
  • C(计算成本更低):错误。Swish 需要计算 Sigmoid,比 ReLU 的简单比较操作慢 3–5 倍。
  • D(负区间平滑保留信息):✅ 这是 Swish 的核心优势。ReLU 对所有负输入直接清零(硬门控),而 Swish 在负区间有一条平滑的曲线,允许小幅负值通过——这使得网络能在负值区域保留梯度流和特征信息,而不是一刀切。
关键辨析:A 和 D 都在描述 Swish 的真实性质,但 D 更准确地概括了 Swish 相比 ReLU 的"主要"优势——它回答的是"为什么用 Swish 而不是 ReLU"这个工程决策问题。

这道题引出了本节的核心问题:激活函数的设计一直在非线性表达能力梯度流动性之间寻找平衡。下面我们从历史脉络中追踪这个平衡点的移动。

Part 1 · 根本问题
为什么需要激活函数?

线性坍缩问题

没有激活函数的多层线性网络,无论多少层,等价于单层线性变换:

$$\mathbf{h}^{(L)} = \mathbf{W}^{(L)} \cdots \mathbf{W}^{(2)} \mathbf{W}^{(1)} \mathbf{x} = \mathbf{W}^{(\text{equiv})} \mathbf{x}$$

多层复合被"坍缩"为一个矩阵乘法,表达能力与单层感知机无异。

激活函数的本质是向网络注入逐元素的非线性,使得多层复合不再可约化。从几何角度看,非线性对输入空间实施"扭曲"——将原本线性不可分的数据弯曲到新的特征空间中,使线性分类器(下一层的加权求和)能够分离。

直觉类比:想象你有一张揉皱的纸,上面画着两类无法用一条直线分开的点。你把纸展平(非线性变换)后,直线就能把两类点分开了。激活函数就是那个"展平"的操作。
Part 2 · 早期方案
Sigmoid 与 Tanh:梯度消失的困境

Sigmoid 函数

$$\sigma(x) = \frac{1}{1 + e^{-x}}, \quad \sigma'(x) = \sigma(x)(1 - \sigma(x))$$
  • 值域$(0, 1)$
  • 导数最大值$\sigma'(0) = 0.25$
  • 饱和区$|x|$ 较大时,导数趋近于 0

Tanh 函数(双曲正切)

$$\tanh(x) = 2\sigma(2x) - 1, \quad \tanh'(x) = 1 - \tanh^2(x)$$
  • 值域$(-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$ 成立,导致梯度更新方向总保持同一符号,走"之字形"路径,收敛慢。

Sigmoid vs Tanh 函数图像JSXGraph
Sigmoid vs Tanh 函数图像
历史注记:Sigmoid 是 1986 年 Rumelhart 等人 BP 算法的默认选择,受生物神经元阈值效应启发。Tanh 曾长期作为 RNN/LSTM 门控机制的标配。两者在 2012 年 AlexNet 之后迅速被 ReLU 取代。
Part 3 · ReLU 革命
简单分段线性为什么就够了?

ReLU(Rectified Linear Unit)

$$\text{ReLU}(x) = \max(0, x) = \begin{cases} x & x > 0 \\ 0 & x \leq 0 \end{cases}$$
$$\text{ReLU}'(x) = \begin{cases} 1 & x > 0 \\ 0 & x < 0 \end{cases}$$
  • 值域$[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 函数图像JSXGraph
ReLU 函数图像
历史里程碑:2012 年 AlexNet(Krizhevsky et al.)使用 ReLU 在 ImageNet 上大幅领先,引发深度学习革命。至今 ReLU 仍是大多数视觉 CNN 和简单 MLP 的默认选择。
Part 4 · ReLU 变体群像
从 Dead ReLU 到自归一化

ReLU 的成功催生了一系列变体,各自针对特定缺陷进行改进:

Leaky ReLU

$$\text{LeakyReLU}(x) = \begin{cases} x & x > 0 \\ \alpha x & x \leq 0 \end{cases}, \quad \alpha \in (0,1) \text{(通常 } 0.01 \text{)}$$

允许负轴有小幅非零梯度,消除 Dead ReLU。$\alpha$ 为超参数,需手动调。

PReLU(Parametric ReLU)

$$\text{PReLU}_a(x) = \begin{cases} x & x > 0 \\ a \cdot x & x \leq 0 \end{cases}$$

将 Leaky ReLU 的 $\alpha$ 设为可学习参数,让网络自动适应最优负轴斜率。He et al. (2015) 在 ResNet 中使用 PReLU 获得小幅提升。

ELU(Exponential Linear Unit)

$$\text{ELU}(x) = \begin{cases} x & x > 0 \\ \alpha(e^x - 1) & x \leq 0 \end{cases}$$

负半轴输出在 $[-\alpha, 0)$ 区间,使输出均值接近零(零中心),收敛更快。代价是包含 $e^x$,计算成本高于 ReLU。

SELU(Scaled ELU)

$$\text{SELU}(x) = \lambda \cdot \begin{cases} x & x > 0 \\ \alpha(e^x - 1) & x \leq 0 \end{cases}$$

其中 $\lambda \approx 1.0507$$\alpha \approx 1.6733$(由 Banach 不动点定理推导)。通过激活函数本身实现自归一化——每层输出自动趋向均值 0、方差 1,无需 BatchNorm。但需要 LeCun 初始化 + Alpha Dropout,约束较多。

激活函数正半轴导数负半轴行为输出中心Dead Neuron计算成本
ReLU1硬清零非零中心极低
Leaky ReLU1小斜率 $\alpha x$非零中心极低
PReLU1可学习斜率非零中心极低
ELU1软饱和 $[-\alpha,0)$接近零中等
SELU$\lambda$缩放软饱和零均值中等
Part 5 · 搜索发现的突破
Swish:非单调性与自门控

2017 年,Google Brain 的 Ramachandran, Zoph & Le 使用强化学习自动搜索激活函数——搜索空间是基本数学运算的组合。最佳发现被命名为 Swish

Swish($\beta=1$ 时即 SiLU)

$$\text{Swish}(x) = x \cdot \sigma(\beta x) = \frac{x}{1 + e^{-\beta x}}$$
$$\text{Swish}'(x) = \sigma(\beta x)\bigl(1 + \beta x(1 - \sigma(\beta x))\bigr)$$
  • $\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$ 自身,不需要额外参数:

$$\text{Swish}(x) = \underbrace{x}_{\text{主信号}} \cdot \underbrace{\sigma(\beta x)}_{\text{自门控}}$$
ReLU vs Swish 函数图像(交互式 β 滑块)JSXGraph
ReLU vs Swish 函数图像(交互式 β 滑块)

拖动滑块观察 $\beta$ 的效果:$\beta$ 越大,Swish 越接近 ReLU;$\beta = 1$ 时可以看到明显的非单调凹陷。

实验数据:Mobile NASNet-A 从 ReLU 换成 Swish,ImageNet top-1 准确率提升 0.9%;Inception-ResNet-v2 提升 0.6%。提升在更深的网络上更显著。
Part 6 · 概率统一视角
GELU:当激活函数遇到 Dropout

GELU(Gaussian Error Linear Unit)

$$\text{GELU}(x) = x \cdot \Phi(x)$$

其中 $\Phi(x)$ 是标准正态分布的累积分布函数(CDF):

$$\Phi(x) = \int_{-\infty}^{x} \frac{1}{\sqrt{2\pi}} e^{-t^2/2} \, dt$$

快速近似(Hendrycks & Gimpel 2016,误差 $< 0.02\%$):

$$\text{GELU}(x) \approx 0.5x\left(1 + \tanh\left(\sqrt{\frac{2}{\pi}}\left(x + 0.044715x^3\right)\right)\right)$$

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 中的统治地位。

与 Swish 的关系:Swish 使用 $\sigma(x)$ 做门控,GELU 使用 $\Phi(x)$ 做门控。$\sigma(x)$$\Phi(x)$ 的形状非常接近(两者都是 S 形曲线),但 $\Phi(x)$ 的概率含义更丰富。实践中 GELU 通常略优于 Swish,但计算上 Swish 更简单。
Part 7 · 自正则化
Mish:平滑近似 ReLU 的另一条路

Mish

$$\text{Mish}(x) = x \cdot \tanh(\text{softplus}(x)) = x \cdot \tanh\bigl(\ln(1 + e^x)\bigr)$$

其中 $\text{softplus}(x) = \ln(1 + e^x)$ 是 ReLU 的平滑近似。

Mish 借鉴了 Swish 的自门控思路,但用 $\tanh$ 替代 $\sigma$。关键优势是自正则化$\tanh$ 的压缩效应在 $|x|$ 过大时自动抑制输出值,防止梯度爆炸,减少对 BatchNorm/LayerNorm 的依赖。

性质ReLUSwishGELUMish
单调性单调非单调非单调非单调
平滑性$x=0$ 不连续$C^\infty$$C^\infty$$C^\infty$
门控机制$\sigma(x)$$\Phi(x)$$\tanh(\text{softplus})$
自正则化
负值处理硬清零软保留软保留软保留+压缩
计算成本极低中等中高中等
Part 8 · 三次范式转移
激活函数设计哲学的演化

从 Sigmoid 到 GELU,激活函数的设计经历了三次根本性的范式转移:

三次范式转移

  • 生物模拟 → 数学优化
  • (Sigmoid/Tanh → ReLU):从模拟神经元阈值行为,转向追求梯度流动性和计算效率。核心矛盾从"像不像生物"变成"梯度能不能流过去"。
  • 硬阈值 → 软门控
  • (ReLU → Swish/GELU):从简单的 $0/1$ 分段线性,转向概率加权的连续门控。负值从"一刀切"变成"按需保留"。
  • 单一目标 → 多目标协同
  • :ReLU 的"简单即正义" vs. GELU 的"概率一致性" vs. Mish 的"自正则化"。工程实践中的成熟体现。

贯穿始终的底层矛盾是非线性梯度流动性的张力——非线性越强(表达能力越强),梯度越容易在某个区域衰减或爆炸。每一种新激活函数都是在重新校准这个平衡点。

Part 9 · 实践选择指南
不同场景下该选哪个?
任务类型推荐理由
图像分类(CNN)ReLU / GELUGELU 在 ViT 中占优;ReLU 仍是经典 CNN 性价比之选
NLP / TransformerGELUBERT/GPT 示范效应,与 Attention 概率本质契合
语音识别Leaky ReLU / ELU需要处理连续音频中的负振幅
自编码器 / VAELeaky ReLU / ELU重建任务需要保留负值信息
GAN 生成器ReLU / Leaky ReLU稀疏激活保持多样性
GAN 判别器Leaky ReLU需处理全范围输出
深度强化学习ReLU计算效率优先
搜索到的新架构Swish / Mish算力充足时即插即用替代 ReLU
经验法则:不确定就用 ReLU——它仍然是 80% 场景下最安全的选择。如果你的网络足够深(Transformer 级别),试试 GELU。如果你在做 NAS 或有充足算力做消融实验,Swish/Mish 值得尝试。

复习速查

  • 为什么需要激活函数:没有非线性,多层网络坍缩为单层线性变换。
  • 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