激活函数是神经网络中的基本组件,用于引入非线性变换。若网络中仅包含线性层,无论堆叠多少层,其整体仍等价于一个线性映射,难以拟合复杂函数。因此,激活函数在很大程度上决定了网络的表达能力和训练特性。本文介绍十种常见激活函数,包括其形式、特点、局限和典型应用场景。


一、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 等技巧。

典型应用:多分类任务的输出层。


三、常见激活函数对比

激活函数

输出范围

是否零中心

梯度消失情况

计算特点

典型场景

Sigmoid

(0, 1)

否

较严重

涉及指数运算

二分类输出层、门控单元

Tanh

(−1, 1)

是

较严重

涉及指数运算

RNN 隐藏层

ReLU

[0, +∞)

否

正区间无

计算简单

CNN 等前馈网络

Leaky ReLU

(−∞, +∞)

近似

较轻

计算简单

GAN 等

PReLU

(−∞, +∞)

近似

较轻

计算简单

图像分类

ELU

(−α, +∞)

近似

较轻

涉及指数运算

深层卷积网络

SELU

(−λα, +∞)

近似

较轻

涉及指数运算

自归一化网络

GELU

约 (−0.17, +∞)

近似

较轻

计算量中等

Transformer

Swish / SiLU

约 (−0.28, +∞)

近似

较轻

计算量中等

EfficientNet 等

Softmax

(0, 1),且总和为 1

—

—

计算量中等

多分类输出层


四、选择建议

激活函数的选择通常取决于网络结构、任务类型和计算约束。以下为一般性建议:

  1. 隐藏层默认选择 ReLU:计算简单、训练稳定,在多数前馈网络和卷积网络中仍是首选。

  2. Transformer 类模型可优先选择 GELU:其在自然语言处理任务中已有广泛验证。

  3. 若出现神经元死亡问题:可尝试 Leaky ReLU、PReLU 或 ELU。

  4. 二分类输出层使用 Sigmoid,多分类输出层使用 Softmax。

  5. 循环神经网络中可使用 Tanh,门控结构通常使用 Sigmoid。

  6. 对性能有进一步要求时:可比较 Swish/SiLU、GELU 等平滑激活函数,但需考虑其计算成本。


五、总结

不同激活函数在非线性形式、梯度特性、计算成本和适用场景上各有差异。从 Sigmoid 和 Tanh 到 ReLU 及其变体,再到 GELU、Swish 等较新的激活函数,其演进反映了神经网络训练需求和模型结构的变化。实际应用中,应根据任务特点、网络深度和计算资源进行选择与验证,而不宜假定某一种激活函数适用于所有场景。