跳到正文
AI 图鉴
03 深度学习入门本域第 3 篇

激活函数

没有它,再深的网络也只是一次线性变换

定义

激活函数是接在神经元加权和之后的非线性函数,决定这个神经元被“点燃”到什么程度。常见的有 Sigmoid、Tanh、ReLU 及其变体。它正是多层网络强于单层网络的关键:如果去掉非线性,多层线性变换叠加起来仍等价于一次线性变换,深度将失去意义。

直观理解

想象一排带阈值的开关。线性部分决定“电压有多大”,激活函数决定这个电压到底推不推得动灯——太低则完全不亮(ReLU 在负半轴恒为 0),太高则逐渐饱和(Sigmoid 两端几乎不再变化)。正是这种“要么彻底关掉、要么按斜率线性通过”的弯折,让一层层简单的加权求和能拼出任意复杂的形状。

图 1

四种激活函数的形状对比:阶跃函数(原始感知机)、Sigmoid 与 Tanh 两端饱和、ReLU 在正半轴保持线性

  • 阶跃 Step
  • Sigmoid
  • Tanh
  • ReLU
图 2

同一卷积网络、同一训练设置下,仅替换激活函数在 CIFAR-10 上的 top-1 准确率:现代非线性(ReLU/GELU)明显优于饱和型(数量级取自典型公开结果)

工作原理

  1. 01

    Sigmoid 与饱和问题

    σ(z) = 1/(1+e⁻ᶻ) 把任意实数压到 (0,1),形状平滑、可直接输出概率;但两端导数趋近 0,深层叠加会让梯度指数级衰减。

  2. 02

    Tanh 与零中心

    tanh 输出 (−1,1),以 0 为中心,比 Sigmoid 更利于优化;然而饱和问题依旧存在,深层网络仍然难以训练。

  3. 03

    ReLU 的突破

    ReLU(z) = max(0, z) 在正区间导数为 1,梯度可以畅通地穿过很多层,训练快、计算省。代价是负区间完全“死掉”,可能出现神经元长期不更新的“死亡 ReLU”。

  4. 04

    变体与平滑门控

    LeakyReLU 给负区间一个很小的斜率,以救活死神经元;GELU 用高斯累积分布做平滑门控,平滑可导、经验上更优,已成为 Transformer 的默认选择。

应用场景

  • 隐藏层引入非线性,ReLU 与 GELU 最为常见
  • 输出层匹配任务:二分类用 Sigmoid,多分类用 Softmax
  • 门控机制内部:LSTM/GRU 用 Sigmoid 充当“开关”
  • 生成模型与注意力的平滑门控(GELU/SiLU)

常见误区

  • 常见误解是“层数本身就带来非线性”。事实相反:没有激活函数的多层网络在数学上等价于单层线性模型。
  • Sigmoid 的输出不是零中心,会让优化轨迹出现锯齿;这不仅是饱和问题,也是它在深层网络中被淘汰的原因之一。
  • ReLU 的“死亡神经元”与负区间零梯度是真实存在的问题,LeakyReLU、GELU 等正是为缓解它而设计,而非纯粹的性能装饰。

关键术语

饱和
函数在两端导数趋近 0,梯度难以通过
死亡 ReLU
神经元长期处于负区间、梯度恒为零而不再更新
零中心
输出关于 0 对称,利于优化
梯度消失
梯度沿层连乘后指数级缩小

延伸阅读