激活函数特点
1. ReLU (Rectified Linear Unit)
函数表达式:
ReLU ( x ) = max ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)
激活特点:
- 简单: ReLU 是一个非常简单且计算效率高的激活函数。对于输入大于零的部分,输出与输入相同;对于输入小于或等于零的部分,输出为零。
- 稀疏激活: ReLU 的输出具有稀疏性,因为在负区间输出为零。这意味着网络中有部分神经元不会激活,有助于减少过拟合。
- 梯度消失问题: 在负数输入的区域,ReLU 的梯度为零,可能导致一些神经元在训练过程中永远不会更新权重,称为“dying ReLU”问题。
2. GELU (Gaussian Error Linear Unit)
函数表达式:
GELU
(
x
)
=
x
⋅
Φ
(
x
)
\text{GELU}(x) = x \cdot \Phi(x)
GELU(x)=x⋅Φ(x)
其中 ( \Phi(x) ) 是标准正态分布的累积分布函数。GELU 的另一种近似形式是:
GELU ( x ) = 0.5 ⋅ x ⋅ ( 1 + tanh [ 2 π ⋅ ( x + 0.044715 ⋅ x 3 ) ] ) \text{GELU}(x) = 0.5 \cdot x \cdot \left(1 + \tanh\left[\sqrt{\frac{2}{\pi}} \cdot \left(x + 0.044715 \cdot x^3\right)\right]\right) GELU(x)=0.5⋅x⋅(1+tanh[π2⋅(x+0.044715⋅x3)])
激活特点:
- 平滑性: 与 ReLU 的硬阈值不同,GELU 是一种平滑激活函数,它将输入根据其值的大小进行加权激活。较大的输入值会被几乎完全保留,而较小的输入值则会被衰减。
- 概率: GELU 根据输入的正态分布概率来决定输出的大小,因此比 ReLU 更加符合自然的概率分布。
- 更好的表现: GELU 在一些深度学习任务中(例如自然语言处理)表现出优于 ReLU 的效果–它的平滑特性帮助模型更好地学习复杂模式。
- 应用: BERT 等 transformer 架构中。
3. SiLU (Sigmoid-Weighted Linear Unit 或 Swish)
函数表达式:
SiLU
(
x
)
=
x
⋅
σ
(
x
)
\text{SiLU}(x) = x \cdot \sigma(x)
SiLU(x)=x⋅σ(x)
其中 ( \sigma(x) ) 是 sigmoid 函数,表达式为:
σ
(
x
)
=
1
1
+
e
−
x
\sigma(x) = \frac{1}{1 + e^{-x}}
σ(x)=1+e−x1
激活特点:
- 平滑性: SiLU 是一种平滑且连续可导的激活函数,避免了 ReLU 中的硬拐点问题。
- 非对称性: 与 ReLU 的硬零界限不同,SiLU 的输出对输入值较小的区域也有一定程度的保留,而不是简单地将其置为零。
- 自适应性: SiLU 的输出根据输入值的大小自适应地进行加权,相比 ReLU 等函数可以更好地保留输入信息。
- 实验效果: SiLU 在一些深度学习任务中表现出优于 ReLU 和 GELU 的效果,特别是在特征分布复杂的情况下。
- 应用: SiLU 被广泛应用于不同的深度学习模型,尤其在一些图像识别任务中有较好的表现。