核心要点

  • Sigmoid 输出 0~1、非零中心,两端梯度饱和易致梯度消失,现多用于二分类输出或门控

  • Tanh 输出 -1~1、零中心收敛更好,但仍存在两端饱和问题

  • ReLU 计算快、稀疏激活、缓解梯度消失,但负区间恒零会产生 dead neuron(可用 LeakyReLU/PReLU 缓解)

  • GELU/SiLU 平滑且处处可导,是 Transformer 类模型的默认选择;输出层分类用 Softmax

标准回答

为什么需要激活函数

激活函数为网络引入非线性,否则多层线性变换等价于单层,无法拟合复杂函数。

逐一对比

  • Sigmoid:σ(x)=1/(1+e⁻ˣ),输出 (0,1),非零中心使梯度更新呈锯齿形;|x| 较大时梯度趋零,深层堆叠引发梯度消失。
  • Tanh:输出 (-1,1) 且零中心,收敛通常优于 Sigmoid,但同样两端饱和。
  • ReLU:max(0,x),正区间梯度恒为 1,计算高效、产生稀疏激活,是 CNN 的主流;缺点是负区间梯度为零,可能出现永不激活的 dead neuron。
  • GELU/SiLU:GELU≈x·Φ(x),平滑可导、在零点附近非单调,BERT、GPT 等 Transformer 普遍采用。

选择原则

隐藏层 CNN 优先 ReLU 及其变体,Transformer 用 GELU/SiLU;输出层按任务选 Sigmoid(二分类)或 Softmax(多分类)。

常见误区

⚠️ 常见踩坑

把 ReLU 当作万能默认而忽视 dead neuron;混淆 Sigmoid(二分类,逐元素)与 Softmax(多分类,跨类归一化)的适用场景。

追问

追问 1ReLU 的 dead neuron 是怎么产生的?如何缓解?

当某神经元权重更新后对所有输入都输出负值,其梯度恒为零、参数不再更新,即「死亡」。常因学习率过大或初始化不当导致。缓解手段包括降低学习率、合理初始化、改用 LeakyReLU/PReLU/ELU 让负区间保留小梯度。

追问 2为什么 Transformer 偏好 GELU 而非 ReLU?

GELU 处处平滑可导、在零点附近过渡更柔和,等价于按输入大小概率性地保留激活,实践中能带来更稳定的训练与略优的精度;ReLU 的硬截断在大模型的精细优化中表现稍逊。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。