Ch06 神经网络基础

ReLU 与激活函数 (Activation Functions)

一句话理解

激活函数给神经网络注入非线性——没有它,一万层网络也只等价于一层线性变换。ReLU 凭”简单粗暴”统治了十年,GELU 凭”平滑优雅”成为 Transformer 标配。

零基础理解

想象一个水龙头:ReLU 是普通水龙头——要么全开(正数通过),要么全关(负数截断为0)。GELU 是精密水龙头——根据水压大小概率性地调节流量,水压越大越容易全开,水压越小越容易被关掉但仍有微弱水流。Sigmoid 是老式水龙头——永远介于全开和全关之间,但开到最大也只能到 1。

核心激活函数对比

激活函数公式输出范围计算复杂度梯度特性主要用途提出年份
Sigmoid(0, 1)高(指数)饱和区梯度消失二分类输出层1980s
Tanh(-1, 1)高(指数)饱和区梯度消失RNN 隐藏层1980s
ReLU[0, +)极低正半轴梯度恒为1CNN/MLP2010 (Nair & Hinton)
Leaky ReLU(-, +)极低负半轴有微小梯度解决Dying ReLU2015
PReLU(-, +)低 可学习灵活负半轴2015
GELU(-0.17, +)中处处平滑可导Transformer 标配2016 (Hendrycks & Gimpel)
Swish / SiLU(-0.28, +)中平滑非单调高效架构搜索2017 (Ramachandran et al.)
Mish(-0.31, +)中高更平滑部分视觉任务2019

为什么 ReLU 取代了 Sigmoid

Sigmoid 的三大罪状

  1. 梯度消失 (Vanishing Gradient):当输入绝对值很大时,Sigmoid 的导数趋近于 0。深层网络中,梯度在反向传播中逐层相乘,指数衰减到几乎为零——深层参数几乎不更新。

  2. 非零中心 (Non-Zero-Centered):Sigmoid 输出始终为正(0到1),导致下一层输入的均值偏移,梯度更新时所有参数同向震荡,收敛变慢。

  3. 指数运算昂贵: 在 GPU 上比 慢很多。当网络有数十亿参数时,这个差距被放大。

ReLU 的优势

特性SigmoidReLU
梯度传播深层梯度消失正半轴梯度恒为 1,深层梯度不衰减
计算速度慢(指数运算)极快(比较运算)
稀疏激活所有神经元都激活约 50% 神经元输出 0,稀疏表示
生物学合理性低高(类似神经元”全或无”发放)
收敛速度慢快 6 倍 (Krizhevsky et al., 2012)

ReLU 的缺陷

Dying ReLU 问题:如果某个神经元的所有输入都让它输出负数,ReLU 输出 0,梯度也为 0,这个神经元就”死”了——永远不再更新。学习率过大或不好的初始化容易触发。Leaky ReLU 和 PReLU 通过在负半轴保留微小梯度来解决。

2026 年:GELU 是 Transformer 标配

GELU 的数学直觉

GELU = Gaussian Error Linear Unit。它不像 ReLU 那样一刀切,而是把输入乘以标准正态分布的累积分布函数 :

直观理解:输入 越大, 越接近 1,GELU 越接近 ReLU;输入 越小, 越接近 0,GELU 输出接近 0。但过渡是平滑的——这给优化器提供了连续的梯度信号。

GELU vs ReLU 行为对比

输入 xReLU 输出GELU 输出差异
-3.00-0.004GELU 有微小负输出
-1.00-0.159GELU 允许负值
0.000相同
0.50.50.346GELU 略低
1.01.00.841GELU 略低
3.03.02.996几乎相同

GELU 的近似计算

精确 GELU 需要计算误差函数 erf,较慢。实践中使用近似:

这个近似误差极小,计算更快。PyTorch 和 TensorFlow 的 GELU 实现默认使用此近似。

为什么 Transformer 不用 ReLU

原因说明
梯度平滑Transformer 层数深(32-96层),GELU 的平滑梯度让深层训练更稳定
非零负输出微小的负值输出保留了信息,对注意力机制中的数值精度有益
经验验证BERT、GPT-3、LLaMA 等所有主流 Transformer 都使用 GELU
与 LayerNorm 搭配GELU 的非零均值特性与 LayerNorm 配合更好

激活函数选择指南

场景推荐激活函数原因
Transformer 隐藏层GELU2026 年标配,训练稳定
CNN 隐藏层ReLU / SiLUReLU 简单高效,SiLU 在 EfficientNet 中表现好
二分类输出层Sigmoid输出概率
多分类输出层Softmax输出概率分布
RNN / LSTMTanh + Sigmoid门控机制需要
小模型 / 移动端ReLU计算量最小
对抗攻击防御平滑激活函数(GELU/SiLU)平滑梯度增加攻击难度

2026 年趋势

方向说明
GELU 统治 TransformerBERT/GPT/LLaMA/Qwen/DeepSeek 全部使用 GELU 或其变体
SiLU 在视觉模型中使用ConvNeXt、EfficientNet 使用 Swish/SiLU
激活函数不再是研究热点主流选择已收敛,研究重心转向注意力机制和架构创新
混合精度训练激活函数的数值稳定性在 FP16/BF16 下更受关注

相关笔记

来源

关联14

知识图谱

局部图谱 · 点节点跳转