一、激活函数的核心作用
在深度学习中,激活函数(Activation Function)是神经网络的核心组件之一。如果没有激活函数,无论网络堆叠多少层,都只是线性变换的叠加,最终输出仍是输入的线性组合。 这种线性模型连最简单的'异或(XOR)'问题都无法解决,更别说学习图像、语音、文本等复杂数据中的非线性模式。
激活函数的主要价值在于为神经网络引入非线性,但它的作用远不止于此:
- 打破线性局限:让网络能拟合任意复杂的函数(通用逼近定理)。
- 控制梯度流动:缓解梯度消失或爆炸,加速模型收敛。
- 输出归一化:将输出映射到特定范围(如 [0,1] 或 [-1,1]),便于概率解释或后续处理。
二、经典激活函数深度解析
| 激活函数 | 函数表达式 | 值域 |
|---|---|---|
| Sigmoid | $f(x) = \frac{1}{1 + e^{-x}}$ | (0, 1) |
| Tanh | $f(x) = \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$ | (-1, 1) |
| ReLU | $f(x) = \max(0, x)$ | [0, +∞) |
| Leaky ReLU | $f(x) = \begin{cases} x & \text{if } x > 0 \ \alpha x & \text{if } x \leq 0 \end{cases}$ | (-∞, +∞) |
| ELU | $f(x) = \begin{cases} x & \text{if } x > 0 \ \alpha (e^x - 1) & \text{if } x \leq 0 \end{cases}$ | (-α, +∞) |
| SELU | $f(x) = \lambda \begin{cases} x & \text{if } x > 0 \ \alpha (e^x - 1) & \text{if } x \leq 0 \end{cases}$ | (-λα, +∞) |
| Softmax | $f(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}}$ | (0, 1) |
| Swish | $f(x) = x \cdot \text{sigmoid}(x) = \frac{x}{1 + e^{-x}}$ | (-∞, +∞) |
| GELU | $f(x) = x \cdot \Phi(x) \approx 0.5x(1 + \tanh(\sqrt{2/\pi}(x + 0.044715x^3)))$ | (-∞, +∞) |
| Mish | $f(x) = x \cdot \tanh(\ln(1 + e^x))$ | (-∞, +∞) |


