摘要本文深入探讨 深度学习 中的 激活函数,详细介绍了常见 激活函数 的原理、特点、优缺点及适用场景。通过对 激活函数 的理解,有助于更好地设计和优化 深度学习 模型,提升模型的性能和效果。
关键词深度学习激活函数神经网络


一、引言

深度学习 中,激活函数神经网络 的核心组成部分之一。它为 神经网络 引入了非线性因素,使得 神经网络 能够拟合任意复杂的函数。如果 没有 激活函数无论 神经网络 有多少层,其整体仍然只是一个线性模型,无法处理复杂的非线性问题因此,选择合适的 激活函数 对于 深度学习 模型的性能至关重要

二、激活函数的作用

2.1 引入非线性

如前文所述,激活函数 能够为 神经网络 引入非线性特性假设一个简单的两层 神经网络,若没有 激活函数,那么输出就是输入的线性组合而引入 激活函数 后,网络可以学习到输入和输出之间的复杂非线性关系例如,在图像识别任务中,图像的特征和类别之间往往存在复杂的非线性映射,激活函数 可以帮助网络捕捉这些关系。

2.2 控制神经元的输出范围

不同的 激活函数 可以将神经元的输出限制在不同的范围内。例如Sigmoid 函数 将输出限制在 (0,1)(0, 1)(0,1) 区间,Tanh 函数 将输出限制在 (−1,1)(-1, 1)(1,1) 区间。这种输出范围的限制有助于网络的训练和稳定性。

2.3 缓解梯度消失或爆炸问题

某些 激活函数 在设计上可以缓解梯度消失或爆炸问题。例如ReLU 及其变体在一定程度上可以避免梯度消失问题,使得网络能够更有效地进行训练。

三、常见激活函数及其特性

3.1 Sigmoid 函数

3.1.1 公式与定义

Sigmoid 函数的数学表达式为:
σ(x)=11+e−x\sigma(x)=\frac{1}{1 + e^{-x}}σ(x)=1+ex1
其函数图像呈现出 S 形曲线,当 xxx 趋近于正无穷时,σ(x)\sigma(x)σ(x) 趋近于 1;当 xxx 趋近于负无穷时,σ(x)\sigma(x)σ(x) 趋近于 0。

3.1.2 优缺点
  • 优点
    • 输出范围在 (0,1)(0, 1)(0,1) 之间,具有概率解释性,可以表示神经元的激活概率。
    • 函数连续可导,导数形式简单,为 σ′(x)=σ(x)(1−σ(x))\sigma'(x)=\sigma(x)(1 - \sigma(x))σ(x)=σ(x)(1σ(x)),便于进行反向传播计算。
  • 缺点
    • 存在梯度消失问题。当 xxx 绝对值较大时,函数的导数趋近于 0,在反向传播过程中,梯度会变得非常小,导致参数更新缓慢,甚至无法更新。
    • 输出不以 0 为中心,这会导致在反向传播时,参数更新的方向可能不一致,影响训练效率。
3.1.3 适用场景

Sigmoid 函数常用于二分类问题的输出层,用于表示样本属于某一类别的概率。

3.2 Tanh 函数

3.2.1 公式与定义

Tanh 函数的数学表达式为:
tanh⁡(x)=ex−e−xex+e−x\tanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}tanh(x)=ex+exexex
其函数图像也是 S 形曲线,但输出范围在 (−1,1)(-1, 1)(1,1) 之间。

3.2.2 优缺点
  • 优点
    • 输出以 0 为中心,相比 Sigmoid 函数,在一定程度上缓解了参数更新方向不一致的问题
    • 同样连续可导,导数形式为 tanh⁡′(x)=1−tanh⁡2(x)\tanh'(x)=1-\tanh^{2}(x)tanh(x)=1tanh2(x)
  • 缺点
    • 仍然存在梯度消失问题,当 xxx 绝对值较大时,导数趋近于 0。
3.2.3 适用场景

Tanh 函数常用于循环神经网络RNN中,因为其输出以 0 为中心的特性更适合处理序列数据。

3.3 ReLU 函数

3.3.1 公式与定义

ReLU(Rectified Linear Unit)函数的数学表达式为:
f(x)=max⁡(0,x)f(x)=\max(0, x)f(x)=max(0,x)
即当 xxx 大于 0 时,输出为 xxx;当 xxx 小于等于 0 时,输出为 0。

3.3.2 优缺点
  • 优点
    • 计算简单,只需进行一次比较操作,大大提高了计算效率
    • 有效缓解了梯度消失问题。当 xxx 大于 0 时,导数恒为 1,梯度可以正常传播。
    • 具有稀疏性,当输入小于 0 时,神经元不激活,有助于减少过拟合。
  • 缺点
    • 存在“死亡 ReLU”问题。如果神经元的输入始终小于 0,那么该神经元将永远不会被激活,导致梯度永远为 0,参数无法更新。
3.3.3 适用场景

ReLU 函数是目前深度学习中最常用的激活函数之一,广泛应用于卷积神经网络(CNN)和多层感知机(MLP)中。

3.4 Leaky ReLU 函数

3.4.1 公式与定义

Leaky ReLU 函数是对 ReLU 函数的改进,其数学表达式为:
f(x)={x,x≥0αx,x<0f(x)=\begin{cases}x, & x\geq0\\\alpha x, & x < 0\end{cases}f(x)={x,αx,x0x<0
其中 α\alphaα 是一个小的正数,通常取值为 0.01。

3.4.2 优缺点
  • 优点
    • 解决了“死亡 ReLU”问题。当 xxx 小于 0 时,神经元仍然有一个小的梯度,避免了神经元永远不激活的情况。
    • 计算仍然相对简单。
  • 缺点
    • α\alphaα 值需要手动调整,不同的任务可能需要不同的 α\alphaα 值,增加了调参的难度。
3.4.3 适用场景

Leaky ReLU 函数适用于那些 ReLU 函数出现“死亡 ReLU”问题的场景。

3.5 Softmax 函数

3.5.1 公式与定义

Softmax 函数常用于多分类问题的输出层,其数学表达式为:
σ(z)j=ezj∑k=1Kezk\sigma(z)_j=\frac{e^{z_j}}{\sum_{k = 1}^{K}e^{z_k}}σ(z)j=k=1Kezkezj
其中 zzz 是输入向量,KKK 是类别数,jjj 表示第 jjj 个类别。

3.5.2 优缺点
  • 优点
    • 输出值在 (0,1)(0, 1)(0,1) 之间,且所有输出值之和为 1,可以表示样本属于各个类别的概率分布。
    • 能够很好地处理多分类问题。
  • 缺点
    • 计算复杂度较高,涉及指数运算。
3.5.3 适用场景

Softmax 函数广泛应用于多分类任务的输出层,如手写数字识别、图像分类等。

四、激活函数的选择策略

4.1 输出层激活函数的选择

  • 对于不同的分类问题,需选择合适的 输出层激活函数
    • 二分类问题:通常选择 Sigmoid 函数,将输出转换为概率值,方便进行分类判断。
    • 多分类问题:一般使用 Softmax 函数,输出样本属于各个类别的概率分布。

4.2 隐藏层激活函数的选择

  • 不同深度的网络,隐藏层激活函数的选择有所不同
    • 浅层网络SigmoidTanh 函数可能是合适的选择,要注意 梯度消失问题
    • 深层网络ReLU 及其变体(如 Leaky ReLU)通常是首选,因为它们可以有效缓解 梯度消失问题,提高训练效率。

4.3 考虑数据特点和任务需求

  • 选择激活函数时,要考虑 数据特点任务需求
    如果数据具有 稀疏性ReLU 函数稀疏性特点可能更适合;如果任务对 梯度消失问题比较敏感,应优先选择能够缓解该问题的激活函数。

五、实战案例分析

5.1 图像分类任务

  • 图像分类任务中,激活函数的选择影响模型性能
    在一个基于 CNN图像分类任务中,隐藏层使用 ReLU 激活函数输出层使用 Softmax 函数。实验结果表明,与使用 Sigmoid 函数的模型相比,使用 ReLU 函数的模型训练速度更快,准确率更高。这是因为 ReLU 函数缓解了 梯度消失问题,使得网络能够更有效地学习图像特征,而 Softmax 函数则能够准确地输出图像属于各个类别的概率。

5.2 情感分析任务

  • 情感分析任务中,不同激活函数的组合能较好地完成分类
    在一个基于 RNN情感分析任务中,隐藏层使用 Tanh 函数输出层使用 Sigmoid 函数Tanh 函数的输出以 0 为中心的特性适合处理序列数据,而 Sigmoid 函数则可以将输出转换为情感极性的概率值。通过这种组合,模型能够较好地对文本的情感进行分类。

六、总结

激活函数在深度学习中起着至关重要的作用,不同的激活函数具有不同的特点和适用场景。在实际应用中,需要根据任务的需求、数据的特点和网络的结构来选择合适的激活函数。

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐