十大激活函数:神经网络中的非线性变换单元
激活函数是神经网络中的基本组件,用于引入非线性变换。若网络中仅包含线性层,无论堆叠多少层,其整体仍等价于一个线性映射,难以拟合复杂函数。因此,激活函数在很大程度上决定了网络的表达能力和训练特性。本文介绍十种常见激活函数,包括其形式、特点、局限和典型应用场景。
一、Sigmoid
公式:σ(x) = 1 / (1 + e⁻ˣ)
输出范围:(0, 1)
Sigmoid 将实数映射到 0 到 1 之间,输出平滑且具有概率解释,因此常用于二分类任务的输出层。它也是早期神经网络中广泛使用的激活函数之一。
优点:输出可解释为概率;函数平滑、连续。
局限:当输入绝对值较大时,梯度趋近于零,存在明显的梯度消失问题;输出不以零为中心,可能影响收敛速度。
典型应用:二分类输出层、LSTM 等门控机制中的门控单元。
二、Tanh
公式:tanh(x) = (eˣ − e⁻ˣ) / (eˣ + e⁻ˣ)
输出范围:(−1, 1)
Tanh 可视为 Sigmoid 的零中心化版本,输出均值为零,取值范围为 (−1, 1)。
优点:输出以零为中心,通常比 Sigmoid 收敛更快;函数平滑。
局限:两端仍存在饱和区域,梯度消失问题依然存在。
典型应用:循环神经网络中的隐藏状态变换。
三、ReLU
公式:ReLU(x) = max(0, x)
输出范围:[0, +∞)
ReLU(Rectified Linear Unit)是深度学习中使用最广泛的激活函数之一。其形式简单:负值置零,正值保持不变。
优点:计算简单;正区间梯度恒为 1,缓解了正区间的梯度消失问题;具有稀疏激活特性;收敛速度通常快于 Sigmoid 和 Tanh。
局限:负区间梯度为零,可能导致部分神经元长期不被更新,即所谓“神经元死亡”问题;输出不以零为中心。
典型应用:卷积神经网络及其他前馈网络的隐藏层。
四、Leaky ReLU
公式:LeakyReLU(x) = x(x > 0);αx(x ≤ 0),通常 α = 0.01
Leaky ReLU 在负区间保留一个较小的斜率 α,以缓解 ReLU 的神经元死亡问题。
优点:负区间仍存在梯度,神经元不会完全停止更新。
局限:α 通常需要手动设定;其实际收益在不同任务中并不一致。
典型应用:生成对抗网络等对负区间梯度敏感的场景。
五、PReLU
公式:PReLU(x) = x(x > 0);αx(x ≤ 0),其中 α 为可学习参数
PReLU(Parametric ReLU)将 Leaky ReLU 中的负区间斜率设为可学习参数,由网络在训练过程中自行调整。
优点:负区间斜率具有自适应性,在某些任务上可优于固定斜率的 ReLU。
局限:引入少量额外参数;在小数据集上可能增加过拟合风险。
典型应用:图像分类等计算机视觉任务。
六、ELU
公式:ELU(x) = x(x > 0);α(eˣ − 1)(x ≤ 0)
ELU(Exponential Linear Unit)在负区间使用指数形式,使输出均值更接近零。
优点:负区间平滑且逐渐饱和;输出均值接近零,有助于加快收敛;对噪声相对鲁棒。
局限:涉及指数运算,计算量高于 ReLU;α 需要设定。
典型应用:较深的卷积网络。
七、SELU
公式:SELU(x) = λx(x > 0);λα(eˣ − 1)(x ≤ 0),其中 λ ≈ 1.0507,α ≈ 1.6733
SELU(Scaled ELU)是 ELU 的缩放版本。在特定初始化方法和正则化条件下,它具有自归一化性质,可使网络各层输出保持接近零均值和单位方差。
优点:在满足条件时,深层网络可在不使用 Batch Normalization 的情况下稳定训练。
局限:对初始化、Dropout 变体等条件要求较严格,实际应用限制较多。
典型应用:自归一化神经网络。
八、GELU
公式:GELU(x) = x · Φ(x),其中 Φ 为标准正态分布的累积分布函数
GELU(Gaussian Error Linear Unit)可理解为按输入大小对输入进行概率性保留。其函数曲线平滑,且并非单调函数。
优点:平滑且性能稳定,在自然语言处理任务中表现良好;是 BERT、GPT 等 Transformer 模型常用的激活函数。
局限:精确计算涉及正态分布累积分布函数,计算量高于 ReLU;实际实现中常采用近似形式。
典型应用:Transformer 类模型的隐藏层。
九、Swish / SiLU
公式:Swish(x) = x · σ(βx),其中 β 可学习或固定;当 β = 1 时通常称为 SiLU
Swish 由自动搜索方法发现,其形式为输入乘以 Sigmoid 变换后的输入。
优点:平滑、非单调;在部分深层网络中性能略优于 ReLU。
局限:计算涉及 Sigmoid,计算量高于 ReLU。
典型应用:EfficientNet 等卷积网络。
十、Softmax
公式:Softmax(xᵢ) = eˣⁱ / Σⱼ eˣʲ
Softmax 通常不用于逐元素非线性变换,而是将一组实数转换为概率分布,使各输出非负且总和为 1。
优点:输出具有概率解释;与交叉熵损失配合良好。
局限:一般不用于隐藏层;数值实现时需注意稳定性,常采用 LogSumExp 等技巧。
典型应用:多分类任务的输出层。
三、常见激活函数对比
四、选择建议
激活函数的选择通常取决于网络结构、任务类型和计算约束。以下为一般性建议:
隐藏层默认选择 ReLU:计算简单、训练稳定,在多数前馈网络和卷积网络中仍是首选。
Transformer 类模型可优先选择 GELU:其在自然语言处理任务中已有广泛验证。
若出现神经元死亡问题:可尝试 Leaky ReLU、PReLU 或 ELU。
二分类输出层使用 Sigmoid,多分类输出层使用 Softmax。
循环神经网络中可使用 Tanh,门控结构通常使用 Sigmoid。
对性能有进一步要求时:可比较 Swish/SiLU、GELU 等平滑激活函数,但需考虑其计算成本。
五、总结
不同激活函数在非线性形式、梯度特性、计算成本和适用场景上各有差异。从 Sigmoid 和 Tanh 到 ReLU 及其变体,再到 GELU、Swish 等较新的激活函数,其演进反映了神经网络训练需求和模型结构的变化。实际应用中,应根据任务特点、网络深度和计算资源进行选择与验证,而不宜假定某一种激活函数适用于所有场景。
- 感谢你赐予我前进的力量
