深度学习-激活函数详解

        激活函数在神经网络中的作用是引入非线性特征,使得网络可以拟合和表达更复杂的数据关系。它通过对输入进行非线性变换,让每一层的输出既能反映输入特征,又能传递重要信息,以进行梯度更新。以下是关于常用激活函数的详细讲解。

1. Sigmoid(S型激活函数)

        Sigmoid 函数通过将输入映射到 (0,1) 之间,从而将输出的数值转化为概率,特别适合于二分类问题的输出层。

公式

  • 输出范围:(0,1)
  • 导数
优点
  • Sigmoid 的输出可以解释为概率值,因此适合二分类问题的输出层。
  • 在概率相关的问题上,尤其是逻辑回归和简单的前馈网络中,Sigmoid 具有良好的表现。
缺点
  • 梯度消失:在输入非常大或非常小的时候,梯度会趋近于 0,导致反向传播时的梯度更新十分缓慢。这会使得模型训练速度慢,并且在深层网络中效果较差。
  • 输出非零均值:Sigmoid 的输出总是大于 0,因此可能会引入偏移,使得后续层的输入累积较大的偏移,导致学习过程不稳定。
使用场景
  • 二分类问题的输出层,因为输出值在 0 到 1 之间且可以解释为概率。
  • 通常不建议在深层网络的隐藏层中使用 Sigmoid,原因是容易造成梯度消失问题。
  • 激活函数:在隐藏层中,Sigmoid 将输入值映射到 (0,1)(0, 1)(0,1) 之间的范围,从而引入非线性。这种特性使神经网络能够学习和逼近复杂的关系。

  • 二分类问题的输出层:在二分类任务中,Sigmoid 常用作输出层的激活函数,因为其输出是一个概率值,代表模型预测为正类的概率。二分类模型的最终输出可以通过设置一个阈值(如 0.5)来确定样本属于哪个类别

2. Tanh(双曲正切函数)

        Tanh 函数是 Sigmoid 的平移和缩放版本。它将输入映射到 (−1,1) 的区间,从而使得输出均值为 0。

公式

  • 输出范围:(−1,1)(-1, 1)(−1,1)
  • 导数
  • 相比于 Sigmoid,Tanh 的输出均值为 0,更适合用于隐藏层,从而使得模型在反向传播时具有更好的梯度流动性。
  • 在梯度消失问题上稍优于 Sigmoid,因为 Tanh 的输出在 -1 和 1 之间波动,产生的梯度值更大。
缺点
  • 梯度消失:在输入绝对值较大时,Tanh 的导数值接近于 0,仍会导致梯度消失问题,特别是在深度网络中。
  • 相较于 ReLU,Tanh 的计算成本更高。
使用场景
  • Tanh 适合在浅层网络或单个隐藏层中使用,因为它在对称的输出范围和零均值方面表现良好。
  • 在需要处理负数输出的任务中,Tanh 比 Sigmoid 更合适。

3. ReLU(Rectified Linear Unit,修正线性单元)

        ReLU 函数引入了非线性特性,同时保持了计算效率。它仅保留正值输入,负值部分则输出 0。

公式

  • 输出范围:[0,+∞)
  • 导数
优点
  • 减少梯度消失:ReLU 只对正值激活,有效地解决了梯度消失问题,因此非常适合深层网络。
  • 计算效率高:ReLU 的计算过程非常简单,只需取最大值,训练速度快。
  • 稀疏激活:在负数区域输出 0,很多神经元的激活值为 0,有助于增加网络的稀疏性,降低模型的复杂度。
缺点
  • 死亡 ReLU 问题:输入小于 0 时,梯度恒为 0,导致神经元“死亡”,即神经元权重不再更新,无法参与训练。
使用场景
  • 深层卷积神经网络(CNN)中的隐藏层。
  • 由于计算简单,常用于需要较快训练速度的网络。

4. Leaky ReLU

        Leaky ReLU 是 ReLU 的改进版本,通过引入负值区域的非零梯度来避免死亡 ReLU 问题。

公式

其中 α 是一个小于 1 的常数(通常取值 0.01)。

优点
  • 减少死亡 ReLU 问题:在负数区域保留一定的梯度,避免神经元完全不激活的问题。
  • 与 ReLU 类似,具有较高的计算效率。
缺点
  • 固定的 α 值可能不适合所有任务,不如 PReLU 灵活。
使用场景
  • 深度网络中使用,尤其是在发现 ReLU 神经元死亡情况严重时。
  • 在希望输出分布不偏向某一方时(如负值数据较多),Leaky ReLU 是一个良好选择。

5. Parametric ReLU(PReLU,带参数的 ReLU)

        PReLU 是 Leaky ReLU 的扩展版本,其中负值部分的斜率 α\alphaα 可以在训练过程中进行优化。

公式

其中 α是可学习参数。

优点
  • 适应性强:α 可以根据不同的任务和数据自动调整,有更好的灵活性和表达能力。
  • 减少死亡 ReLU 问题:适合训练深层神经网络,尤其在大规模数据上效果良好。
缺点
  • 增加了一些计算复杂度,因为需要优化 α 参数。
使用场景
  • 大规模数据集、深层网络,尤其适用于存在多样化数据分布的任务。

6. ELU(Exponential Linear Unit,指数线性单元)

        ELU 在负数区域使用指数函数,使得负输出更接近 0,从而减少偏移效应。

公式

其中 α 通常为 1。

优点
  • 负输出让输出均值接近于 0,缓解了梯度消失问题。
  • 相比于 ReLU,更平滑地处理负值,提高网络的鲁棒性。
缺点
  • 计算复杂度较高,训练速度稍慢于 ReLU。
使用场景
  • 用于较深的神经网络,特别适合深度卷积网络,能够在梯度消失的情况下保持良好的梯度更新。

7. Swish(谷歌提出的一种激活函数)

        Swish 是 Sigmoid 和输入相乘的结果,提供了平滑性和对负数的保留特性。

公式

优点
  • 更平滑的激活过程,提高了模型的非线性表达能力。
  • 在很多任务上,Swish 比 ReLU 表现更好。
缺点
  • 计算复杂度较高,因为包含了 Sigmoid 函数。
使用场景
  • 高度非线性的任务(如图像分类和语音识别)。

说明:Softmax(用于多分类任务的输出层)

        Softmax 函数用于将一组实数值转换为概率分布,其输出总和为 1。

公式

优点
  • 将输出解释为各类别的概率,适合多分类问题。
缺点
  • 不适合隐藏层,因其输出总和为 1,并且会引入较大的计算量。
使用场景
  • 神经网络的最后一层,适合于多分类任务的输出。

Softmax 与激活函数的区别:

与 ReLU、Sigmoid、Tanh 等常用于隐藏层的激活函数不同,Softmax 主要用于输出层,因为它将数值映射为概率分布。传统激活函数通常用于引入非线性,帮助网络学习复杂特征;而 Softmax 的主要作用是生成可以解释为类别概率的输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值