常用激活函数总结
1. 经典激活函数
Sigmoid
- 公式: σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1
- 特点:输出范围(0,1),平滑可导,适合概率输出。
- 缺点:梯度消失、计算复杂度高、输出非零中心。
- 适用场景:二分类输出层(如逻辑回归)。
Tanh
- 公式: tanh ( x ) = e x − e − x e x + e − x \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} tanh(x)=ex+e−xex−e−x
- 特点:输出范围(-1,1),零中心化,梯度强于Sigmoid。
- 缺点:梯度消失问题仍存在。
- 适用场景:RNN隐藏层、需要对称输出的场景。
ReLU
- 公式: f ( x ) = max ( 0 , x ) f(x) = \max(0, x) f(x)=max(0,x)
- 特点:计算高效,缓解梯度消失,稀疏激活。
- 缺点:神经元死亡(负输入梯度为0),输出非零中心。
- 适用场景:CNN/MLP隐藏层(如ResNet、AlexNet)
LeakyReLU
- 公式: f ( x ) = max ( α x , x ) f(x) = \max(\alpha x, x) f(x)=max(αx,x)( α = 0.01 \alpha=0.01 α=0.01)
- 特点:解决ReLU死亡问题,负区引入小斜率。
- 适用场景:替代ReLU,尤其深层网络。
2. 现代激活函数
GeLU(高斯误差线性单元)
数学表达式
GeLU ( x ) = x ⋅ Φ ( x ) = x ⋅ 1 2 [ 1 + erf ( x 2 ) ] \text{GeLU}(x) = x \cdot \Phi(x) = x \cdot \frac{1}{2} \left[1 + \text{erf}\left(\frac{x}{\sqrt{2}}\right)\right] GeLU(x)=x⋅Φ(x)=x⋅21[1+erf(2x)]
其中:
- Φ ( x ) \Phi(x) Φ(x):标准正态分布的累积分布函数
- erf ( x ) \text{erf}(x) erf(x):误差函数, 2 π ∫ 0 x e − t 2 d t \frac{2}{\sqrt{\pi}} \int_0^x e^{-t^2} dt π2∫0xe−t2dt
Swish
- 公式: f ( x ) = x ⋅ σ ( β x ) f(x) = x \cdot \sigma(\beta x) f(x)=x⋅σ(βx)( β = 1 \beta=1 β=1时为SiLU)
- 特点:平滑、非单调,自适应梯度。
- 适用场景:替代ReLU,轻量级模型。
Mish
- 公式: f ( x ) = x ⋅ tanh ( ln ( 1 + e x ) ) f(x) = x \cdot \tanh(\ln(1 + e^x)) f(x)=x⋅tanh(ln(1+ex))
- 特点:更平滑的Swish变体,避免梯度截断。
- 适用场景:计算机视觉任务。
3. 门控机制激活函数
GLU(门控线性单元)
- 公式: GLU ( x ) = ( W 1 x + b 1 ) ⊗ σ ( W 2 x + b 2 ) \text{GLU}(x) = (W_1x + b_1) \otimes \sigma(W_2x + b_2) GLU(x)=(W1x+b1)⊗σ(W2x+b2)
- 特点:动态调节特征重要性,参数量翻倍。
- 适用场景:NLP任务(如机器翻译)。
SwiGLU
- 公式: SwiGLU ( x ) = ( W 1 x ) ⊗ Swish ( W 2 x ) \text{SwiGLU}(x) = (W_1x) \otimes \text{Swish}(W_2x) SwiGLU(x)=(W1x)⊗Swish(W2x)
- 特点:结合Swish平滑性和门控机制,性能优于GLU。
- 适用场景:大语言模型FFN层(如LLaMA、PaLM)。
4. 多分类专用
Softmax
- 公式: Softmax ( x i ) = e x i ∑ j e x j \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}} Softmax(xi)=∑jexjexi
- 特点:输出概率分布,总和为1。
- 适用场景:多分类输出层.
选择建议
需求 | 推荐激活函数 |
---|---|
计算效率 | ReLU/LeakyReLU |
深层网络稳定性 | GeLU/Swish |
动态特征选择 | GLU/SwiGLU |
概率输出 | Sigmoid/Softmax |
硬件优化 | ReLU(易于融合计算) |
注:门控类激活函数(如SwiGLU)虽性能优,但计算量较大,需权衡效率与效果。