常见激活函数详解

技术

激活函数是神经网络中的一种函数,它接收输入信号,并产生输出作为下一层的输入,常见的激活函数包括 Sigmoid、ReLU、Tanh 和 Leaky ReLU 等,每种函数都有其特定的优点和适用场景

picture.image

如图为从输入层到下一神经元可视化,其表达式为:

其中 为激活函数, 为权重, 为输入, 为偏置,激活函数作用为在神经网络中引入非线性,帮助网络学习复杂模式和特征,同时确定神经元的激活状态,提供网络的稳定性和避免梯度消失问题,使得神经网络可以学习和表示更加复杂的函数关系

1. Sigmoid激活函数

1.1 Sigmoid激活函数数学表达式

Sigmoid 函数是一种常用的激活函数,其数学形式为:

其中 是自然常数, 是输入

1.2 Sigmoid激活函数优点及适用场景

  • 输出范围在 (0, 1) 之间: Sigmoid 函数的输出范围在 0 和 1 之间,可以将神经元的输出映射到概率值,常用于二分类问题
  • 连续且可微分: Sigmoid 函数是连续的,并且在其定义域内可微分,这使得在训练神经网络时可以使用梯度下降等优化算法进行参数优化
  • 非线性: Sigmoid 函数是非线性的,可以帮助神经网络学习复杂的非线性关系

1.3 Sigmoid激活函数缺点

  • 梯度消失问题: 在反向传播过程中,当输入值较大或较小时,Sigmoid 函数的梯度接近于零,导致梯度消失问题,这会影响神经网络的训练效果,特别是在深层网络中
  • 非零中心化: Sigmoid 函数的输出不是以零为中心的,这可能导致在神经网络训练过程中出现梯度方向的偏移,进而降低了梯度下降的效率

由于这些缺点,近年来 ReLU 及其变种逐渐取代了 Sigmoid 函数在深度学习中的应用,但在某些特定的场景下,Sigmoid 仍然是一种有效的选择

1.4 Sigmoid激活函数图像

picture.image

Sigmoid激活函数的图像特点是在输入趋近于正无穷或负无穷时,函数值分别接近于1和0,且在中间区域呈现出S形曲线

2. ReLU激活函数

2.1 ReLU 激活函数数学表达式

ReLU函数是一种常用的激活函数,其数学形式为:

2.2 ReLU 激活函数优点

  • 解决梯度消失问题: ReLU 函数在输入为正数时梯度恒为1,这有助于减轻或避免梯度消失问题,特别是在深层神经网络中,对于反向传播来说是非常有益的
  • 计算简单: ReLU 函数的计算非常简单,只需比较输入值和零的大小即可,相比于 Sigmoid 函数等较为复杂的函数,ReLU 函数的计算速度更快
  • 稀疏激活性: ReLU 函数在输入为负数时输出为零,这导致了网络的稀疏激活性,即部分神经元激活,这有助于减少过拟合的可能性
  • 线性特性: 虽然 ReLU 函数在输入为负数时输出为零,但在输入为正数时具有线性特性,这使得神经网络可以学习到更简单的线性关系

2.3 ReLU 激活函数适用场景

  • 深度神经网络: ReLU 函数特别适用于深度神经网络,能够有效缓解梯度消失问题,加速训练过程
  • 卷积神经网络(CNN): ReLU 函数在卷积神经网络中被广泛应用,能够提供更好的特征学习能力,有助于提高图像分类、目标检测等任务的性能
  • 自然语言处理(NLP): ReLU 函数同样适用于自然语言处理领域,如文本分类、情感分析等任务中,能够提供良好的特征学习和表示能力

2.4 ReLU 激活函数缺点

  • 神经元死亡问题: 当输入为负数时,ReLU 函数的输出为零,在训练过程中,如果某些神经元的权重更新导致它们始终输出负数,那么这些神经元就永远不会被激活,称为“死亡神经元”,这会导致网络中的部分神经元无法更新,影响整体的学习能力
  • 不可导性: 尽管 ReLU 函数在大多数情况下是可导的,但在输入为零时不可导,这可能导致一些优化算法无法正常工作,例如梯度下降的变种,当输入为零时,梯度消失,使得相关的权重无法得到更新,从而影响网络的训练效果
  • 不适用于负值输入: ReLU 函数在输入为负数时输出为零,这意味着它不适用于所有类型的数据,例如,对于具有负值输入的数据,ReLU 函数可能会丢失一些有用的信息,而其他激活函数如 Leaky ReLU 或 ELU 则可以更好地处理这种情况
  • 非零均值输出: ReLU 函数的输出在输入为负数时始终为零,这导致了其输出的均值偏向于零,这可能会引发梯度的偏移,使得网络的收敛速度变慢

2.5 ReLU 激活函数图像

picture.image

ReLU激活函数的图像特点是在正数区间上为线性增长,而在负数区间上恒为零

3. Tanh 激活函数

3.1 Tanh 激活函数数学表达式

Tanh(双曲正切)函数是一种常用的激活函数,其数学形式为:

3.2 Tanh 激活函数优点

  • 非线性特性: Tanh 函数是非线性的,能够帮助神经网络学习和表示复杂的非线性关系
  • 输出范围在 (-1, 1) 内: Tanh 函数的输出范围在 (-1, 1) 内,这使得其比 Sigmoid 函数具有更大的幅度,有助于网络在训练过程中更快地收敛
  • 零中心化: Tanh 函数在输入为零附近有一个零中心,这有助于减少梯度消失问题,相比于 Sigmoid 函数,Tanh 函数在这方面更优
  • 连续且可微分: Tanh 函数在其定义域内是连续且可微分的,这使得在训练神经网络时可以使用梯度下降等优化算法进行参数优化
  • 抗饱和性: Tanh 函数在输入的绝对值较大时,其导数趋于零,但相对于 Sigmoid 函数,Tanh 函数的抗饱和性更好一些,可以减缓梯度消失问题

3.3 Tanh 激活函数适用场景

  • 循环神经网络(RNN): Tanh 函数常用于循环神经网络中,因为其输出范围在 (-1, 1) 内,能够有效地控制梯度的传播,有助于解决梯度爆炸和梯度消失问题
  • 文本生成和语言建模: 在文本生成和语言建模任务中,Tanh 函数可以作为隐藏层的激活函数,有助于模型学习和表示复杂的语言结构

3.4 Tanh 激活函数缺点

  • 梯度消失问题: Tanh 函数在输入的绝对值较大时,其导数趋于零,这可能导致梯度消失问题,使得在训练深层网络时,梯度无法正确传播,从而影响网络的收敛速度和训练效果
  • 非零均值输出: Tanh 函数的输出在输入为零附近有一个零中心,这意味着其输出的均值偏向于零。这可能会引发梯度的偏移,使得网络的收敛速度变慢
  • 计算复杂度: 与 ReLU 函数相比,Tanh 函数的计算复杂度稍高,因为它涉及指数运算和除法运算,这在大规模深度学习模型中可能会导致计算成本增加
  • 不对称性: Tanh 函数在输入为负数时和输入为正数时的斜率并不相同,这可能导致网络在训练过程中学习速度不一致,从而影响了模型的收敛性能

3.5 Tanh 激活函数图像

picture.image

Tanh激活函数的图像特点是在输入趋近于正无穷或负无穷时,函数值分别接近于1和-1,且在中间区域呈现出S形曲线

4. Leaky ReLU激活函数

4 .1 Leaky ReLU 激活函数数学表达式

Leaky ReLU函数是 ReLU 函数的一种变体,它在输入为负数时不再输出零,而是输出一个非零的小值,其数学表达式如下:

其中,是 一个小于 1 的常数,通常取一个很小的值,比如 0.01

4.2 Leaky ReLU 激活函数优点

  • 缓解神经元死亡问题:

Leaky ReLU 函数在输入为负数时不会输出零,而是输出一个小的斜率

,这有助于避免神经元死亡问题,提高网络的稳定性

  • 缓解梯度消失问题: Leaky ReLU 函数在输入为负数时有一个非零的斜率,这使得梯度在反向传播过程中始终是非零的,可以一定程度上缓解梯度消失问题,特别是对于较深的神经网络
  • 计算简单: Leaky ReLU 函数的计算和 ReLU 函数类似,仍然是简单的比较操作,因此计算效率较高
  • 适用于稀疏激活性: Leaky ReLU 函数在输入为负数时输出非零值,使得网络的激活性相对于 ReLU 函数更加稀疏,有助于减少过拟合的可能性

4.3 Leaky ReLU 激活函数适用场景

  • 深度神经网络: Leaky ReLU 函数在深度神经网络中表现良好,能够一定程度上缓解神经元死亡问题和梯度消失问题,提高网络的训练效果
  • 图像处理任务: Leaky ReLU 函数在图像处理任务中被广泛应用,例如图像分类、目标检测等领域,能够提供更好的特征学习能力
  • 自然语言处理(NLP): Leaky ReLU 函数同样适用于自然语言处理领域,如文本分类、情感分析等任务中,能够提供良好的特征学习和表示能力

4.4 Leaky ReLU 激活函数缺点

  • 非零均值输出: 与 ReLU 函数类似,Leaky ReLU 函数在输入为负数时输出非零值,这导致了其输出的均值偏向于零,可能会引发梯度的偏移,使得网络的收敛速度变慢
  • 不一致的激活范围: Leaky ReLU 函数在输入为正数时输出为恒定的值,而在输入为负数时输出为一个斜率较小的线性函数。这种不一致的激活范围可能会导致网络在训练过程中学习速度不一致,使得模型的收敛性能受到影响
  • 需要调整斜率参数:

Leaky ReLU 函数需要额外调整一个斜率参数

,这需要手动设定,并且通常需要进行调参以找到最佳值。如果选择的斜率参数不合适,可能会影响网络的性能

  • 不适用于所有场景: 尽管 Leaky ReLU 函数相对于 ReLU 函数在某些方面有所改进,但它并不适用于所有场景。在某些情况下,其他激活函数如 ELU 或 SELU 可能表现更好
  • 梯度爆炸问题: 虽然 Leaky ReLU 函数能够缓解梯度消失问题,但在某些情况下,它可能导致梯度爆炸问题,尤其是当斜率参数 设置得过大时

4.5 Leaky ReLU 激活函数图像

picture.image

Leaky ReLU激活函数的图像特点是在负数区间上不为零,而在正数区间上呈现线性增长,有效避免了神经元死亡问题

5. 激活函数图形对比

picture.image

6. 往期推荐

基于VMD分解的VMD-CNN-LSTM时间序列预测模型实现

基于VMD分解的VMD-LSTM时间序列预测模型实现,大力提升预测精度!

回归任务常见评价指标解读以及Python实现

特征工程——数据转换

分类模型评价指标详解(Python实现)

如果你对类似于这样的文章感兴趣。

欢迎关注、点赞、转发~

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
TRAE 的思考:AI 时代程序员的认知进化
在 AI 浪潮下,传统的古法编程模式正在被颠覆和变革,对开发者的认知和协作模式提出了新的挑战。本次分享将深入探讨 AI Coding 的演进趋势,从 AI 辅助编程到 AI 主导的全新协作模式,以及它如何重塑人与 AI 之间的关系,同时也将分享下 TRAE 的核心理念、技术实现,演进实践中的踩坑心得、以及我们对未来的展望。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论