人工智能之深度学习基础——常见的激活函数
1. Sigmoid(S 型函数)
公式:σ(x) = 1 + 1 / (e−x)
特点:
输出范围:(0,1)。
常用于二分类问题的概率输出。
优点:
平滑、连续,易于求导。
将输出限制在 0 到 1 之间,便于概率建模。
缺点:
梯度消失问题:在输入值较大或较小时,梯度接近 0。
输出不为零均值:导致较早层权重更新速度变慢。
应用场景:
输出层(特别是二分类问题)。
Sigmoid在逻辑回归里也有用到(LogicRegression)
2. Tanh 激活函数
公式:f(x) = tanh(x) = (ex−e−x) / (ex+e-x)
特点:
输出范围:(−1,1)。
相比 Sigmoid,输出值居中在 0 附近。
优点:
零均值:加快权重更新速度。
相对 Sigmoid 梯度较大。
缺点:
梯度消失问题:对于极大或极小的输入,梯度趋近 0。
比较慢的计算速度。
应用场景:
隐藏层激活函数(已逐渐被 ReLU 替代)。
3. ReLU(Rectified Linear Unit)
公式:f(x)=max(0,x)
特点:
输出范围:[0,+∞)。
非线性,但计算简单。
优点:
计算效率高:直接截断负值。
减少梯度消失问题:正区间的梯度为常数 1。
缺点:
Dying ReLU 问题:输入为负时,梯度为 0,可能导致神经元“死亡”。
输出不平衡:仅有正值输出。
应用场景:
大多数隐藏层的默认激活函数。
4. Leaky ReLU
公式:
其中,α是一个小的正数(如 0.01)。
特点:
输出范围:(−∞,+∞)。
优点:
缓解 Dying ReLU 问题:为负值提供非零梯度。
保留了 ReLU 的优点。
缺点:
超参数 α\alphaα 需要手动设置。
应用场景:
高层网络中,替代 ReLU 使用。
5. Parametric ReLU(PReLU)
公式:
其中 α 是一个可学习参数。
特点:
是 Leaky ReLU 的扩展。
优点:
自动调整负值的斜率 α。
提升模型的表现能力。
缺点:
增加了模型的参数量。
应用场景:
深层神经网络。
6. Exponential Linear Unit(ELU)
公式:
其中 α>0。
特点:
输出范围:(−α,+∞)。
优点:
负值区域平滑,解决 Dying ReLU 问题。
输出均值接近 0,加速收敛。
缺点:
计算复杂度比 ReLU 高。
应用场景:
对负值敏感的任务。
7. Softmax 激活函数
公式:
特点:
输出范围:[0,1]。
将输入转换为概率分布(所有输出的和为 1)。
优点:
多分类问题中适用。
缺点:
输出概率受所有输入值的影响。
应用场景:
输出层(多分类问题)。
8. Swish 激活函数
公式:
f(x) = x⋅σ(x) = x ⋅ 1/(1+e−x)
特点:
自然平滑,比 ReLU 更高效。
优点:
非单调:允许负值通过。
在深层网络中表现优越。
缺点:
计算复杂度较高。
应用场景:
深度学习中的复杂任务,如图像分类、自然语言处理。
9. GELU(Gaussian Error Linear Unit)
公式:f(x)=x⋅Φ(x)
其中 Φ(x) 是标准正态分布的累积分布函数。
特点:
结合了 ReLU 和 Sigmoid 的特性。
优点:
性能优于 ReLU 和 Swish。
平滑过渡。
缺点:
计算复杂。
应用场景:
Transformer 网络,如 BERT 和 GPT。
10. Maxout 激活函数
公式:f(x)=max( w1Tx + b1, w2Tx + b2 )
特点:
可学习多段线性分段函数。
优点:
能拟合更复杂的非线性函数。
避免 Dying ReLU 问题。
缺点:
参数量增加。
计算复杂。
应用场景:
深层网络,尤其在稀疏数据场景中。
对比总结
激活函数输出范围优点缺点应用场景
Sigmoid
(0,1)
简单、连续
梯度消失,非零均值
输出层(二分类问题)
Tanh
(−1,1)
零均值,梯度较大
梯度消失
隐藏层(已逐渐被 ReLU 替代)
ReLU
[0,+∞)
简单、高效,减轻梯度消失问题
Dying ReLU 问题
默认激活函数
Leaky ReLU
(−∞,+∞)
缓解 Dying ReLU 问题
超参数需手动设置
深层网络
PReLU
(−∞,+∞)
自动调节负值斜率
增加参数量
深层网络
ELU
(−α,+∞)
缓解 Dying ReLU 问题,均值为 0
计算复杂度高
高性能任务
Softmax
[0,1]
输出概率分布
敏感于所有输入值
多分类问题的输出层
Swish
(−∞,+∞)
非单调,表现优越
计算复杂度高
高性能深度学习任务
GELU
(−∞,+∞)
平滑过渡,性能优越
计算复杂度高
Transformer 模型
以下是激活函数的选择建议总结:
激活函数选择建议
1. 浅层网络
推荐:ReLU
ReLU 简单高效,适合大多数浅层网络任务。
如果遇到 Dying ReLU 问题,可以尝试 Leaky ReLU 或 ELU。
2. 深层网络
推荐:Leaky ReLU 或 PReLU
Leaky ReLU 缓解 Dying ReLU 问题。
PReLU 通过学习参数自动优化,适合更复杂的网络。
3. 二分类问题的输出层
推荐:Sigmoid
将输出值映射到 [0,1][0, 1][0,1],易于解释为概率。
4. 多分类问题的输出层
推荐:Softmax
适用于多分类任务,输出概率分布(总和为 1)。
5. 对计算性能要求高的任务
推荐:Swish 或 GELU
这类激活函数更平滑且性能优于 ReLU,常用于高性能任务,如 Transformer 网络。
6. 高维稀疏数据
推荐:Maxout
能更好地拟合复杂函数,同时避免 Dying ReLU 问题。
7. 时间序列或负值敏感任务
推荐:Tanh 或 ELU
Tanh 能提供零均值输出,适合对对称性敏感的任务。
ELU 平滑处理负值,适合时间序列等需要平滑输出的任务。
总表
任务类型/网络结构推荐激活函数备选激活函数
浅层网络
ReLU
Leaky ReLU, ELU
深层网络
Leaky ReLU, PReLU
Swish, ELU
二分类问题的输出层
Sigmoid
Softmax
多分类问题的输出层
Softmax
无
高性能任务
Swish, GELU
ReLU
时间序列或负值敏感任务
Tanh, ELU
Leaky ReLU
高维稀疏数据
Maxout
ReLU