1.2 激活函数

从函数逼近与梯度传播角度系统分析激活函数的作用、机制与常见形式

一、什么是激活函数

  • 神经网络中每一层的基本计算形式为:

    z=Wx+ba=ϕ(z)z = W x + b\\ a = \phi(z)
    • $z$ 为线性变换结果(logits)

    • $\phi(\cdot)$ 为激活函数

    • $a$ 为该层输出

  • 若网络中所有 $\phi(\cdot)$ 均为线性函数,则多层网络可整体合并为一次线性映射:

    WLW2W1xW_L \cdots W_2 W_1 x
  • 因此,激活函数存在的根本原因在于引入非线性,使模型具备表达复杂函数的能力

  • 从优化角度看,激活函数并不仅决定前向表达能力,还直接控制反向传播中的梯度结构

  • 反向传播的链式法则为:

    LW=LaazzWaz=ϕ(z)\frac{\partial L}{\partial W} = \frac{\partial L}{\partial a} \cdot \frac{\partial a}{\partial z} \cdot \frac{\partial z}{\partial W}\\ \frac{\partial a}{\partial z} = \phi'(z)
  • 由此可见,在链式求解过程中,激活函数的导数会影响梯度

    • 若长期接近 0 → 梯度消失

    • 若数值不受控 → 梯度爆炸

  • 一个“良好”的激活函数通常需要在以下方面取得平衡:

    • 提供足够的非线性表达能力

    • 在常见输入范围内保持梯度可传播

    • 避免输出长期处于饱和区

    • 计算形式足够简单,适合大规模训练

  • 激活函数并非局部技巧,而是对函数逼近能力、梯度传播稳定性、优化可行性的统一设计

  • 不同激活函数的演化,本质是围绕深层可训练性展开的

二、Sigmoid / Tanh

2.1 Sigmoid

σ(x)=11+ex\sigma(x) = \frac{1}{1 + e^{-x}}
  • 输出范围为 $(0, 1)$,可直接解释为概率

  • 其导数为:

σ(x)=σ(x)(1σ(x))\sigma'(x) = \sigma(x)(1 - \sigma(x))
  • 当 $|x|$ 较大时:

σ(x)0\sigma'(x) \approx 0
  • 在深层网络中,梯度在多层相乘后迅速衰减,从而会导致梯度消失问题

2.2 Tanh

tanh(x)=exexex+ex\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}
  • 输出范围为 $(-1,1)$​,相较 Sigmoid 为零中心

  • 其导数为:

    tanh(x)=1tanh2(x)\tanh'(x) = 1 - \tanh^2(x)
  • 在 $|x|$ 较大时同样进入饱和区:

    tanh2(x)1tanh(x)0\tanh^2(x) \approx 1 \Rightarrow \tanh'(x) \approx 0
  • 仍然无法从根本上解决深层网络的梯度传播问题

三、ReLU

3.1 ReLU

  • ReLU(Rectified Linear Unit)系列激活函数用于解决“能不能训”的问题(梯度是否存在)

ReLU(x)=max(0,x)\text{ReLU}(x) = \max(0, x)
  • 其导数为:

ReLU(x)={1,x>00,x0\text{ReLU}'(x) = \begin{cases} 1, & x > 0 \\ 0, & x \le 0 \end{cases}
  • 正区间梯度恒定,使梯度能够在深层网络中传播,从而缓解梯度消失问题

  • 激活稀疏,即部分神经元输出为零,有助于特征选择,有隐式正则化效果

  • 计算简单高效,适合大规模训练

  • 但当神经元长期落在负区间时,梯度会恒为 0,参数无法再更新,这种现象被称为 死亡 ReLU

3.2 Leaky ReLU / PReLU

ϕ(x)={x,x>0αx,x0\phi(x) = \begin{cases} x, & x > 0 \\ \alpha x, & x \le 0 \end{cases}
  • 缓解死亡 ReLU 问题

    • 为负区间保留非零梯度,从机制上缓解死亡 ReLU

    • 同时仍保持 ReLU 的梯度稳定优势

    • $\alpha$ 可为固定小值(如 0.01)或可学习参数(PReLU)

    • 但引入了额外的超参数,需要调优

  • 整体上,Leaky ReLU 在保持 ReLU 优势的同时,提升了负区间的梯度流动性,因此 Leaky ReLU 成为实际应用中的常用选择

四、Softmax

  • 多分类任务要求模型输出各类别的相对置信度,且能够被解释为概率分布,即输出需满足:

    pi0,ipi=1p_i \ge 0,\quad \sum_i p_i = 1
  • Softmax 正是为满足这一建模目标而引入的映射

    Softmax(xi)=exij=1nexj\text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j=1}^n e^{x_j}}
    • 指数函数保证输出为正

    • 归一化保证概率和为 1

    • 本质上,Softmax 将 logits 映射为相对权重

4.1 指数放大效应

  • 由于指数函数的性质(指数放大效应):

    xixj 的差异 exi/exj 的指数级差异x_i - x_j \text{ 的差异 } \Rightarrow e^{x_i} / e^{x_j} \text{ 的指数级差异}
  • 若存在 $x_k \gg x_j$:

Softmax(xk)1,Softmax(xj)0\text{Softmax}(x_k) \to 1,\quad \text{Softmax}(x_j) \to 0
  • 因此,Softmax 天然倾向于产生近似 one-hot 的输出

  • 然而,当 $x_i$ 较大时:

exie^{x_i} \to \infty
  • 工程上必须进行等价变换,以在数值层面修正指数的放大副作用:

Softmax(xi)=eximax(x)jexjmax(x)\text{Softmax}(x_i) = \frac{e^{x_i - \max(x)}}{\sum_j e^{x_j - \max(x)}}

4.2 Jocobian 矩阵

  • 由于 Softmax 公式的分母中包含所有 $x_k$,所以:

    • $p_1$ 依赖 $x_1, x_2, \dots$

    • $p_2$ 依赖 $x_1, x_2, \dots$

    • ……

    • 这说明 Softmax 的归一化导致任一 logit 的变化都会影响全部输出,其输出各分量之间相互耦合

  • 而在链式法则中求解时:

    Lxi\frac{\partial L}{\partial x_i}
  • 其结构为:

    x;Softmax;p;Loss;Lx ;\xrightarrow{\text{Softmax}}; p ;\xrightarrow{\text{Loss}}; L
  • 而 $L$ 是 所有 $p_j$ 的函数,每个 $p_j$ 又是 所有 $x_i$ 的函数,故

    Lxi=jLpjpjxi\frac{\partial L}{\partial x_i} = \sum_j \frac{\partial L}{\partial p_j} \cdot \frac{\partial p_j}{\partial x_i}
  • 其中,$\frac{\partial p_j}{\partial x_i}$ 的具体形式即为 Jocobian 矩阵:

    pixj={pi(1pi),i=jpipj,ij\frac{\partial p_i}{\partial x_j} = \begin{cases} p_i(1 - p_i), & i = j \\ - p_i p_j, & i \ne j \end{cases}

4.3 引入交叉熵

  • 根据 4.2 所述,Softmax 的梯度这么复杂、各类别还彼此耦合,那为什么它还能在深度网络中稳定训练?

  • 这是因为交叉熵刚好“对齐”了 Softmax 的 Jacobian 结构

  • 交叉熵损失:

    L=iyilogpiL = - \sum_i y_i \log p_i
  • 对交叉熵损失求偏导:

    Lxi=jLpjpjxiLpj=yjpj\begin{align} \frac{\partial L}{\partial x_i} &=\sum_j \frac{\partial L}{\partial p_j} \cdot \frac{\partial p_j}{\partial x_i}\\ \frac{\partial L}{\partial p_j}&=-\frac{y_j}{p_j} \end{align}
  • 将其与 Softmax 的 Jacobian 结合:

    • 当 $j = i$ 时:

      yipipi(1pi)=yi(1pi)-\frac{y_i}{p_i} \cdot p_i(1 - p_i) = - y_i (1 - p_i)
    • 当 $j \ne i$ 时:

      yjpj(pipj)=yjpi-\frac{y_j}{p_j} \cdot (- p_i p_j) = y_j p_i
    • 将所有项合并,有:

      Lxi=yi(1pi)+jiyjpi\frac{\partial L}{\partial x_i} = - y_i (1 - p_i) + \sum_{j \ne i} y_j p_i
    • 提取公共因子 $p_i$,并利用 $\displaystyle\sum_j y_j = 1$:

      Lxi=yi+yipi+pi(1yi)=piyi\begin{align} \frac{\partial L}{\partial x_i} &= - y_i + y_i p_i + p_i (1 - y_i) \\ &= p_i - y_i \end{align}
  • 可以看到,Softmax 在前向传播中引入的指数放大与全量耦合,在与交叉熵组合后,于反向传播中被完全抵消

  • 最终梯度只保留为:

    Lxi=piyi\frac{\partial L}{\partial x_i} = p_i - y_i
  • 这一结果不再包含指数、归一化或 Jacobian 矩阵,梯度形式极其简洁稳定

  • 这是 Softmax 能在深度学习中成立的决定性原因

4.4 Softmax 的“梯度消失”

  • 当模型预测过于自信:

ptrue1p_{\text{true}} \approx 1
  • 梯度自然趋于 0:

piyi0p_i - y_i \approx 0
  • 这不是数值问题,而是概率模型已“自认为收敛”,这也说明,不是所有梯度消失都意味着训练失败

五、GELU

5.1 ELU

  • ELU(Exponential Linear Unit) 和 SELU(Scaled ELU)均用于解决“训练过程中分布会不会崩”的问题(保证均值、方差稳定)

  • ELU 的基本形式:

    ELU(x)={x,x>0α(ex1),x0\text{ELU}(x) = \begin{cases} x, & x > 0 \\ \alpha (e^x - 1), & x \le 0 \end{cases}
  • 其核心思想并不只是“给负半轴一点梯度”:

    • 以指数形式组织负区间,使得负区间的输出 有界且平滑

    • 使激活输出的 均值更接近 0,输出方差更稳定

    • 小负输入会被“软压缩”,而不是简单缩放

    • 降低了 ReLU 中“全部非负 → 偏移累积”的问题

5.2 SELU

  • SELU 定义为对 ELU 的线性缩放:

    SELU(x)=λ{x,x>0α(ex1),x0\text{SELU}(x) = \lambda \begin{cases} x, & x > 0 \\ \alpha (e^x - 1), & x \le 0 \end{cases}
    • $\alpha, \lambda$ 并非可调超参数,而是通过固定点分析精确选定

  • 核心思想:

    • 如果输入分布的均值和方差略有偏移

    • 经过 SELU + 随机连接后

    • 输出会被自动拉回到一个稳定区间,从而提高统计稳定性

  • 这意味着激活函数本身承担了“归一化”的角色,在特定条件下(全连接、特定初始化、无 BN),可以不使用 BatchNorm

5.3 GELU

  • GELU(Gaussian Error Linear Unit)的定义:

    GELU(x)=xΦ(x)\text{GELU}(x) = x \cdot \Phi(x)
  • 其中 $\Phi(x)$ 是标准正态分布的累积分布函数:

    Φ(x)=x12πet2/2dt\Phi(x) = \int_{-\infty}^x \frac{1}{\sqrt{2\pi}} e^{-t^2/2} \, dt
  • 常用近似形式(便于计算):

    GELU(x)0.5x(1+tanh ⁣(2π(x+0.044715x3)))\text{GELU}(x) \approx 0.5x \left(1 + \tanh\!\left(\sqrt{\frac{2}{\pi}} (x + 0.044715 x^3)\right)\right)
  • GELU 的核心思想转变——解决“表示是否足够细腻、是否与概率建模假设一致”的问题

    • ReLU 系列的问题设定是:“这个神经元要不要被激活?”

    • GELU 的问题设定是:“这个神经元 以多大概率 被保留下来?”

    • 具体解释:

      • 假设输入 $x$ 是带噪声的(近似高斯)

      • $\Phi(x)$ 表示:$x$ 在噪声扰动下仍为正的概率

      • 激活输出:

        xP(被保留)x \cdot P(\text{被保留})
    • 因此小正值不会被硬性通过,小负值也不会被直接抹零,其激活是 连续、概率化、平滑的

  • 为什么 GELU 特别适合 Transformer?

    • Transformer 的中间表示(尤其是 FFN 层):维度极高,其表示接近连续分布,对“细微差异”高度敏感

    • 而 GELU 的优势正好对应这些特性:

      • 无硬阈值 → 梯度始终连续,使得梯度更为平滑

      • 小信号被“部分保留”而非直接抹除,表示能力更细腻

      • 不会引入明显分布偏移,与 LayerNorm、残差结构天然兼容

    • 因此 GELU 成为 BERT、GPT、ViT 等 Transformer 架构中的默认激活函数

  • 从 ReLU 到 ELU / SELU,再到 GELU,是从几何可导性 → 统计稳定性 → 表示与建模假设的一致性的演变过程

Last updated

Was this helpful?