神经网络激活函数详解

神经网络激活函数详解

在神经网络中,激活函数(Activation Function) 扮演着至关重要的角色。如果没有激活函数,无论神经网络有多少层,它的输出永远只是输入的线性组合,这使得网络只能解决简单的线性问题(比如线性回归)。

激活函数的主要作用是引入非线性因素,使得神经网络能够学习和模拟复杂的非线性函数,从而具备处理图像、文本、语音等复杂数据的能力。


1. Sigmoid 函数

Sigmoid 是最古老也是最著名的激活函数之一,它将任意实数映射到 $(0, 1)$ 的区间内。

  • 公式: $$f(x) = \frac{1}{1 + e^{-x}}$$
  • 特点: 曲线呈 S 型,输出可以被解释为概率(常用于二分类问题的输出层)。
  • 优点: 平滑、易于求导。
  • 缺点:
    • 梯度消失(Vanishing Gradient): 当输入 $x$ 非常大或非常小时,梯度几乎为 0,导致深层网络权重无法更新。
    • 非零中心化: 输出值总是正的,可能导致梯度更新出现震荡,降低收敛速度。
    • 计算量: 包含指数运算,计算相对耗时。

2. Tanh (双曲正切函数)

Tanh 函数是 Sigmoid 函数的变体,它将输入映射到 $(-1, 1)$ 的区间内。

  • 公式: $$f(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$$
  • 特点: 形状类似于 Sigmoid,但它是零中心化的(以 0 为中心)。
  • 优点: 解决了 Sigmoid 非零中心化的问题,通常在隐藏层中表现比 Sigmoid 更好。
  • 缺点: 依然存在梯度消失问题(在两侧饱和区梯度接近 0)。

3. ReLU (Rectified Linear Unit,线性整流函数)

ReLU 是目前深度学习中最常用的默认激活函数。

  • 公式: $$f(x) = \max(0, x)$$
  • 优点:
    • 解决正区间梯度消失: 在 $x > 0$ 区域,梯度恒为 1。
    • 计算效率高: 只有阈值判断,没有指数运算。
    • 稀疏性: 部分神经元输出为 0,减少了参数间的相互依赖。
  • 缺点:
    • 神经元死亡(Dying ReLU): 负区间梯度为 0,一旦神经元进入负区可能永远无法被激活更新。

4. Leaky ReLU

为了解决 ReLU 的“神经元死亡”问题而提出的变体。

  • 公式: $$f(x) = \max(\alpha x, x)$$ ($\alpha$ 通常取 0.01)
  • 优点: 在 $x < 0$ 区域保留了一个微小的梯度,避免了神经元完全停止学习。

5. Softmax

Softmax 专用于多分类神经网络的输出层

  • 公式: $$f(x_i) = \frac{e^{x_i}}{\sum_{j=1}^{K} e^{x_j}}$$
  • 特点: 将向量转换为概率分布,所有输出之和为 1。

激活函数对比汇总表

激活函数 公式 输出范围 优点 缺点
Sigmoid $1/(1+e^{-x})$ $(0, 1)$ 平滑、解释性强 梯度消失、非零中心
Tanh $(e^x-e^{-x})/(e^x+e^{-x})$ $(-1, 1)$ 零中心化 梯度消失
ReLU $\max(0, x)$ $[0, \infty)$ 计算快、缓解梯度消失 神经元死亡
Leaky ReLU $\max( lpha x, x)$ $(-\infty, \infty)$ 解决 ReLU 死亡问题 $ lpha$ 参数需额外调节
Softmax $e^{x_i} / \sum e^{x_j}$ $(0, 1)$ 适用于多分类 仅用于输出层