神经网络激活函数详解
2026-03-01
神经网络激活函数详解
在神经网络中,激活函数(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)$ | 适用于多分类 | 仅用于输出层 |