神经网络激活函数全解析

在神经网络中,激活函数用于引入非线性,使模型能够学习复杂的模式。以下是一些常见的激活函数及其特点:

1. Sigmoid

  • 公式: \sigma (x)= \frac{1}{1+e^{-x}}

  • 输出范围: (0, 1)

  • 特点: 常用于二分类问题的输出层,但容易导致梯度消失。

2. Tanh (双曲正切)

  • 公式: \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}

  • 输出范围: (-1, 1)

  • 特点: 比Sigmoid更常用,因为它的输出以0为中心,但仍然存在梯度消失问题。

3. ReLU (Rectified Linear Unit)

  • 公式: \text{ReLU}(x) = \max(0, x)

  • 输出范围: [0, ∞)

  • 特点: 计算简单,能有效缓解梯度消失问题,但可能导致神经元“死亡”。

4. Leaky ReLU

  • 公式: \text{Leaky ReLU}(x) = \max(\alpha x, x),其中 α 是一个小的正数(如0.01)

  • 输出范围: (-∞, ∞)

  • 特点: 解决了ReLU的“死亡”问题,允许负值通过。

5. Parametric ReLU (PReLU)

  • 公式: \text{PReLU}(x) = \max(\alpha x, x),其中 α 是可学习的参数

  • 输出范围: (-∞, ∞)

  • 特点: 比Leaky ReLU更灵活,允许模型学习最佳的 α。

6. ELU (Exponential Linear Unit)

  • 公式:

    \text{ELU}(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha (e^x - 1) & \text{if } x \leq 0 \end{cases}
  • 输出范围: (-α, ∞)

  • 特点: 在负值区域有非零输出,有助于缓解梯度消失问题。

7. Softmax

  • 公式: \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}}

  • 输出范围: (0, 1)

  • 特点: 常用于多分类问题的输出层,将输出转换为概率分布。

8. Swish

  • 公式: \text{Swish}(x) = x \cdot \sigma(x),其中 \sigma(x) 是Sigmoid函数

  • 输出范围: (-∞, ∞)

  • 特点: 结合了ReLU和Sigmoid的优点,表现优于ReLU。

9. GELU (Gaussian Error Linear Unit)

  • 公式: \text{GELU}(x) = x \cdot \Phi(x),其中 \Phi(x)是标准正态分布的累积分布函数

  • 输出范围: (-∞, ∞)

  • 特点: 在Transformer模型中广泛使用,表现优于ReLU。

10. Softplus

  • 公式: \text{Softplus}(x) = \log(1 + e^x)

  • 输出范围: (0, ∞)

  • 特点: 平滑版本的ReLU,但计算较慢。

11. Softsign

  • 公式: \text{Softsign}(x) = \frac{x}{1 + |x|}

  • 输出范围: (-1, 1)

  • 特点: 类似于Tanh,但计算更简单。

12. Linear (恒等函数)

  • 公式: \text{Linear}(x) = x

  • 输出范围: (-∞, ∞)

  • 特点: 无非线性变换,常用于回归问题的输出层。

13. Step (阶跃函数)

  • 公式:

    \text{Step}(x) = \begin{cases} 0 & \text{if } x < 0 \\ 1 & \text{if } x \geq 0 \end{cases}
  • 输出范围: {0, 1}

  • 特点: 早期神经网络中使用,现已较少使用。

14. RBF (径向基函数)

  • 公式: \text{RBF}(x) = e^{-\gamma \|x - c\|^2}

  • 输出范围: (0, 1]

  • 特点: 常用于径向基函数网络。

15. Maxout

  • 公式: \text{Maxout}(x) = \max(w_1^T x + b_1, w_2^T x + b_2, \dots, w_k^T x + b_k)

  • 输出范围: (-∞, ∞)

  • 特点: 通过学习多个线性函数的最大值来引入非线性。

16. SELU (Scaled Exponential Linear Unit)

  • 公式:

    \text{SELU}(x) = \begin{cases} \lambda x & \text{if } x > 0 \\ \lambda \alpha (e^x - 1) & \text{if } x \leq 0 \end{cases}
  • 输出范围: (-λα, ∞)

  • 特点: 自归一化神经网络中使用,能够自动归一化激活值。

17. Mish

  • 公式: \text{Mish}(x) = x \cdot \tanh(\text{Softplus}(x))

  • 输出范围: (-∞, ∞)

  • 特点: 结合了ReLU和Swish的优点,表现优于ReLU。

18. Hard Sigmoid

  • 公式:

    \text{Hard Sigmoid}(x) = \begin{cases} 0 & \text{if } x < -2.5 \\ 0.2x + 0.5 & \text{if } -2.5 \leq x \leq 2.5 \\ 1 & \text{if } x > 2.5 \end{cases}
  • 输出范围: [0, 1]

  • 特点: Sigmoid的近似版本,计算更快。

19. Hard Tanh

  • 公式:

    \text{Hard Tanh}(x) = \begin{cases} -1 & \text{if } x < -1 \\ x & \text{if } -1 \leq x \leq 1 \\ 1 & \text{if } x > 1 \end{cases}
  • 输出范围: [-1, 1]

  • 特点: Tanh的近似版本,计算更快。

20. LogSigmoid

  • 公式: \text{LogSigmoid}(x) = \log(\sigma(x))

  • 输出范围: (-∞, 0)

  • 特点: Sigmoid的对数版本,常用于损失函数。

21. Softmin

  • 公式: \text{Softmin}(x_i) = \frac{e^{-x_i}}{\sum_{j} e^{-x_j}}

  • 输出范围: (0, 1)

  • 特点: 类似于Softmax,但用于最小化输出。

22. ArcTan (反正切函数)

  • 公式: \text{ArcTan}(x) = \arctan(x)

  • 输出范围: (-π/2, π/2)

  • 特点: 平滑且对称,但计算较慢。

23. Bent Identity

  • 公式: \text{Bent Identity}(x) = \frac{\sqrt{x^2 + 1} - 1}{2} + x

  • 输出范围: (-∞, ∞)

  • 特点: 平滑且非线


以下是常见激活函数的图形适用场景优缺点对比的总结:

1. Sigmoid

  • 适用场景:

    • 二分类问题的输出层。

    • 需要概率输出的场景。

  • 优点:

    • 输出平滑,适合概率解释。

  • 缺点:

    • 梯度消失问题严重。

    • 输出不以0为中心,可能导致训练效率低。

2. Tanh (双曲正切)

  • 适用场景:

    • 隐藏层激活函数。

    • 需要输出以0为中心的场景。

  • 优点:

    • 输出以0为中心,梯度更新更高效。

  • 缺点:

    • 梯度消失问题仍然存在。

3. ReLU (Rectified Linear Unit)

  • 适用场景:

    • 隐藏层的默认选择。

    • 深度学习中的主流激活函数。

  • 优点:

    • 计算简单,梯度不会饱和。

    • 缓解梯度消失问题。

  • 缺点:

    • 可能导致神经元“死亡”(输出恒为0)。

4. Leaky ReLU

  • 适用场景:

    • 需要解决ReLU“死亡”问题的场景。

  • 优点:

    • 缓解神经元“死亡”问题。

  • 缺点:

    • 需要手动选择 α 值。

5. Parametric ReLU (PReLU)

  • 适用场景:

    • 需要更灵活激活函数的场景。

  • 优点:

    • 自适应学习 α,表现优于Leaky ReLU。

  • 缺点:

    • 增加了计算复杂度。

6. ELU (Exponential Linear Unit)

  • 适用场景:

    • 需要缓解梯度消失和神经元“死亡”问题的场景。

  • 优点:

    • 在负值区域有非零输出,缓解梯度消失问题。

  • 缺点:

    • 计算较慢(涉及指数运算)。

7. Softmax

  • 适用场景:

    • 多分类问题的输出层。

  • 优点:

    • 输出为概率分布,适合分类任务。

  • 缺点:

    • 仅适用于输出层。

8. Swish

  • 适用场景:

    • 需要优于ReLU性能的场景。

  • 优点:

    • 表现优于ReLU。

  • 缺点:

    • 计算较慢(涉及Sigmoid运算)。

9. GELU (Gaussian Error Linear Unit)

  • 适用场景:

    • Transformer模型中的默认选择。

  • 优点:

    • 表现优于ReLU。

  • 缺点:

    • 计算较慢(涉及正态分布)。

10. Softplus

  • 适用场景:

    • 需要平滑激活函数的场景。

  • 优点:

    • 平滑且可导。

  • 缺点:

    • 计算较慢。

11. Softsign

  • 适用场景:

    • 需要平滑激活函数的场景。

  • 优点:

    • 计算简单。

  • 缺点:

    • 梯度消失问题仍然存在。

12. Linear (恒等函数)

  • 适用场景:

    • 回归问题的输出层。

  • 优点:

    • 简单且无梯度消失问题。

  • 缺点:

    • 无非线性能力。

13. Step (阶跃函数)

  • 适用场景:

    • 早期神经网络。

  • 优点:

    • 简单。

  • 缺点:

    • 不可导,无法用于梯度下降。

14. RBF (径向基函数)

  • 适用场景:

    • 径向基函数网络。

  • 优点:

    • 适合局部特征提取。

  • 缺点:

    • 计算复杂。

15. Maxout

  • 适用场景:

    • 需要学习复杂非线性关系的场景。

  • 优点:

    • 强大的表达能力。

  • 缺点:

    • 计算复杂,参数多。

16. SELU (Scaled Exponential Linear Unit)

  • 适用场景:

    • 自归一化神经网络。

  • 优点:

    • 自动归一化激活值。

  • 缺点:

    • 需要特定初始化。

17. Mish

  • 适用场景:

    • 需要优于ReLU性能的场景。

  • 优点:

    • 表现优于ReLU。

  • 缺点:

    • 计算较慢。

18. Hard Sigmoid

  • 适用场景:

    • 需要快速计算Sigmoid的场景。

  • 优点:

    • 计算快。

  • 缺点:

    • 近似精度较低。

19. Hard Tanh

  • 适用场景:

    • 需要快速计算Tanh的场景。

  • 优点:

    • 计算快。

  • 缺点:

    • 近似精度较低。

20. LogSigmoid

  • 适用场景:

    • 需要计算对数概率的场景。

  • 优点:

    • 适合概率计算。

  • 缺点:

    • 计算较慢。

21. Softmin

  • 适用场景:

    • 需要最小化输出的场景。

  • 优点:

    • 适合特定任务。

  • 缺点:

    • 仅适用于特定场景。

22. ArcTan (反正切函数)

  • 适用场景:

    • 需要平滑激活函数的场景。

  • 优点:

    • 平滑且对称。

  • 缺点:

    • 计算较慢。

23. Bent Identity

  • 适用场景:

    • 需要平滑激活函数的场景。

  • 优点:

    • 平滑且非线性。

  • 缺点:

    • 计算较慢。

总结对比

激活函数优点缺点适用场景
Sigmoid输出平滑,适合概率解释梯度消失,输出不以0为中心二分类输出层
Tanh输出以0为中心梯度消失隐藏层
ReLU计算简单,缓解梯度消失可能导致神经元“死亡”隐藏层(默认选择)
Leaky ReLU缓解神经元“死亡”问题需要手动选择 α隐藏层
PReLU自适应学习 α计算复杂隐藏层
ELU缓解梯度消失和神经元“死亡”问题计算较慢隐藏层
Softmax输出为概率分布仅适用于输出层多分类输出层
Swish表现优于ReLU计算较慢隐藏层
GELU表现优于ReLU计算较慢Transformer模型
Softplus平滑且可导计算较慢需要平滑激活函数的场景
Softsign计算简单梯度消失需要平滑激活函数的场景
Linear简单且无梯度消失问题无非线性能力回归输出层
Step简单不可导早期神经网络
RBF适合局部特征提取计算复杂径向基函数网络
Maxout强大的表达能力计算复杂,参数多需要复杂非线性关系的场景
SELU自动归一化激活值需要特定初始化自归一化神经网络
Mish表现优于ReLU计算较慢隐藏层
Hard Sigmoid计算快近似精度较低需要快速计算Sigmoid的场景
Hard Tanh计算快近似精度较低需要快速计算Tanh的场景
LogSigmoid适合概率计算计算较慢需要计算对数概率的场景
Softmin适合特定任务仅适用于特定场景需要最小化输出的场景
ArcTan平滑且对称计算较慢需要平滑激活函数的场景
Bent Identity平滑且非线性计算较慢需要平滑激活函数的场景

总结

  • 图像领域:ReLU、Leaky ReLU、PReLU、ELU、Swish、GELU、Mish(CNN、GAN)。

  • NLP领域:Tanh、ReLU、GELU、Swish、Softmax(RNN、Transformer)。

  • 语音识别:ReLU、ELU、GELU(CNN、RNN)。

  • 时间序列/金融:Sigmoid、Tanh、Softplus、Linear(DNN、RNN)。

  • 推荐系统:Sigmoid、Softmax(DNN)。

根据任务需求选择合适的激活函数,通常ReLU及其变体是隐藏层的默认选择,Softmax用于多分类输出层,Sigmoid用于二分类输出层。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨顿

唵嘛呢叭咪吽

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值