深度学习中常见激活函数总结
以下是一份深度学习激活函数的系统总结,涵盖定义、类型、作用、应用及选择影响,便于你快速掌握核心知识:
一、激活函数的定义
在神经网络中,激活函数(Activation Function)是神经元计算输出的非线性变换函数,作用于加权输入和偏置之和:
输出 = f(加权和 + 偏置)
核心价值:引入非线性,使神经网络能够拟合任意复杂函数(无激活函数的深度网络等价于单层线性模型)。
二、常见激活函数类型
1. 线性函数(Linear)
- 公式:
f(x) = kx
- 缺点:多层网络退化为单层,无法学习非线性模式(极少使用)。
2. Sigmoid(S型函数)
- 公式:
f(x) = 1 / (1 + e⁻ˣ)
- 输出范围:
(0, 1)
- 问题:
- 梯度消失:输入较大时梯度接近0,反向传播困难;
- 非零中心:影响梯度下降效率。
3. Tanh(双曲正切)
- 公式:
f(x) = (eˣ - e⁻ˣ) / (eˣ + e⁻ˣ)
- 输出范围:
(-1, 1)
- 优点:零中心化,梯度比Sigmoid更强;
- 缺点:梯度消失问题仍存在。
4. ReLU(Rectified Linear Unit)
- 公式:
f(x) = max(0, x)
- 优点:
- 计算高效,加速收敛;
- 缓解梯度消失(正区间梯度为1)。
- 缺点:
- 死亡ReLU:负输入梯度为0,神经元永久失效;
- 输出非零中心。
5. 改进型ReLU
变体 | 公式 | 解决的核心问题 |
---|---|---|
Leaky ReLU | f(x) = max(αx, x) (α≈0.01) | 缓解死亡ReLU问题 |
Parametric ReLU (PReLU) | f(x) = max(αx, x) (α可学习) | 自适应学习负斜率 |
ELU | x if x>0; α(eˣ-1) if x≤0 | 输出接近零中心,缓解梯度消失 |
6. Softmax
- 公式:
f(x_i) = eˣⁱ / Σⱼeˣʲ
- 用途:多分类输出层,将输出转化为概率分布。
7. Swish & GELU(前沿函数)
- Swish:
f(x) = x · sigmoid(βx)
(Google提出,平滑优于ReLU) - GELU:
f(x) = x · Φ(x)
(Φ为标准正态CDF,Transformer常用)
三、激活函数的核心作用
- 引入非线性:使网络能够拟合复杂函数(如图像分割、语言模型)。
- 控制输出范围:如Sigmoid压缩至(0,1),适合概率输出。
- 增强梯度传播:ReLU族在正区间保持梯度为1,缓解深层网络梯度消失。
- 稀疏激活:ReLU使部分神经元输出为0,提升模型泛化性。
四、典型应用场景
任务类型 | 常用激活函数 | 实例说明 |
---|---|---|
二分类输出层 | Sigmoid | 情感分析(输出正面/负面概率) |
多分类输出层 | Softmax | MNIST手写数字识别(10类概率) |
隐藏层 | ReLU / Leaky ReLU / GELU | ResNet、BERT的隐藏层 |
循环神经网络 | Tanh / ReLU | LSTM中的门控机制 |
生成对抗网络 | Leaky ReLU(生成器/判别器) | DCGAN中避免梯度稀疏问题 |
五、激活函数选择对模型性能的影响
选择因素 | 影响 |
---|---|
训练速度 | ReLU > Tanh > Sigmoid(ReLU计算快且梯度稳定) |
梯度消失 | ReLU族在正区间无梯度消失;Sigmoid/Tanh在饱和区严重 |
死亡神经元 | ReLU可能导致部分神经元失效;Leaky ReLU/ELU可缓解 |
输出范围需求 | 概率输出需Sigmoid/Softmax;回归任务输出层可线性 |
模型前沿性 | Transformer推荐GELU;轻量模型可选Swish |
实验建议:
- 隐藏层默认选择ReLU(尤其CNN/全连接网络);
- RNN中可尝试Tanh或Leaky ReLU;
- 若遇死亡神经元问题,切换为Leaky ReLU/ELU;
- 输出层按任务需求选择(分类用Softmax,回归可不用激活函数)。
六、总结
- 历史演变:Sigmoid/Tanh → ReLU → Leaky ReLU/ELU → GELU/Swish
- 核心原则:
- 隐藏层:优先ReLU及其变体(平衡速度与性能);
- 输出层:按任务选择(Softmax/Sigmoid/线性);
- 前沿模型:尝试GELU(如BERT、GPT)、Swish(MobileNet)。
通过理解激活函数的特性及场景适配性,可显著提升模型性能和训练效率。