深度学习——激活函数

深度学习——激活函数

1. 激活函数的作用

1. 引入非线性因素

  • 激活函数 用于对每层的 输出数据进行变换, 进而为整个网络注入了 非线性因素。此时, 神经网络就
    可以拟合各种曲线
  • 没有引入非线性因素的网络等价于使用一个线性模型来拟合。在这种情况下你每一层节点的输入都是上层输出的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了,那么网络的逼近能力就相当有限
  • 通过给网络输出增加激活函数, 实现引入非线性因素, 使得网络模型可以逼近任意函数(有各种各样的曲线,但只要你的函数多项式够复杂,就能够得到近似的曲线), 提升网络对复杂问题的拟合能力
  • 例子:
    • 在二元分类问题中,有一张图片作为输入,要识别这张图片为是不是猫,如果识别这张图片为猫,则输出1作为结果;如果识别出不是猫,那么输出0作为结果。
    • 在预测时可以将图片的 RGB矩阵中的 像素值 提取出来作为 特征向量x
    • 然后通过线性回归模型进行预测时,预测值 = 权重 * x + 偏置,这个时候得出的预测值有可能不是介于0-1之间,这种预测是没有意义的。但可以通过使用激活函数(例如:sigmoid将预测值修正到0-1之间)

2. 增加模型的表达能力

  • 原因:非线性激活函数使得每一层神经元都可以学习到不同的特征。
  • 效果:多层神经网络可以组合低级特征形成高级特征,从而提高模型的泛化能力

3. 解决梯度消失和梯度爆炸问题

  • 原因:某些激活函数(如ReLU)具有良好的梯度传播特性,可以有效避免梯度消失和梯度爆炸问题。
  • 效果:使得深层神经网络更容易训练。

4. 简化优化过程

  • 原因:某些激活函数(如ReLU)具有简单的导数形式,使得梯度计算更加高效。
  • 效果:加速训练过程,提高优化效率。

2. 常见的激活函数

1. sigmoid 激活函数 [二分类任务]

  • 公式:
    在这里插入图片描述

  • 导函数:

    在这里插入图片描述

  • 图像:

    在这里插入图片描述

  • 特点以及应用:

    • sigmoid 函数可以将任意的输入映射到 (0, 1) 之间
    • 输入的值大致在 <-6 或者 >6 时,值域几乎不发生变化,意味着输入任何值得到的激活值都是差不多的,这样会丢失部分的信息。**比如:**输入 100 和输出 10000 经过 sigmoid 的激活值几乎都是等于 1
      的,但是输入的数据之间相差 100 倍的信息就丢失了。
    • 对于 sigmoid 函数而言,输入值在 [-6, 6] 之间输出值才会有明显差异,输入值在 [-3, 3] 之间才会有比较好的效果。
    • 通过上述导数图像,我们发现导数数值范围是 (0, 0.25)当输入 <-6 或者 >6 时,sigmoid 激活函数图像的导数接近为 0,此时网络参数将更新极其缓慢,或者无法更新。
    • 一般来说, sigmoid 网络在 5 层之内就会产生梯度消失现象。而且,该激活函数并不是以 0 为中心的,所以在实践中这种激活函数使用的很少。
    • sigmoid函数一般只用于二分类的输出层。

2. tanh 激活函数

  • 公式:

    在这里插入图片描述

  • 导函数:

    在这里插入图片描述

  • 图像:

    在这里插入图片描述

  • 特点以及应用:

    • Tanh 函数将输入映射到 (-1, 1) 之间,图像以 0 为中心,在 0 点对称,当输入 大概 <-3 或者 >3 时将被映射为 -1 或者 1。其导数值范围 (0, 1),当输入的值大概 <-3 或者 > 3 时,其导数近似 0。
    • 与 Sigmoid 相比,它是以 0 为中心的,且梯度相对于sigmoid大,使得其收敛速度要比Sigmoid 快,减少迭代次数。然而,从图中可以看出,Tanh 两侧的导数也为 0,同样会造成梯度消失。
    • 若使用时可在隐藏层使用tanh函数,在输出层使用sigmoid函数。

3. ReLU 激活函数 [最常用]

  • 公式:

    在这里插入图片描述

  • 导函数:

在这里插入图片描述

  • 图像:

    在这里插入图片描述
    在这里插入图片描述

  • 特点以及应用:

    • ReLU 激活函数将小于 0 的值映射为 0,而大于 0 的值则保持不变,它更加重视正信号,而忽
      略负信号,这种激活函数运算更为简单,能够提模型的训练效率

    • 当 x<0 时,ReLU导数为0,而当 x>0 时,则不存在饱和问题。所以,ReLU 能够在 x>0 时保持梯
      度不衰减,从而缓解梯度消失问题。然而,随着训练的推进,部分输入会落入小于0区域,导
      致对应权重无法更新。这种现象被称为“神经元死亡”。

    • ReLU是目前最常用的激活函数。

    • 与sigmoid相比,RELU的优势是:

      • 采用 sigmoid 函数,计算量大(指数运算),反向传播求误差梯度时,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。
      • sigmoid 函数反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。 Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生

4. SoftMax 激活函数 [多分类任务]

  • 公式:

在这里插入图片描述

  • 目标:

    将多分类的结果以概率的形式展现出来

    即:Softmax 就是将网络输出的 logits 通过 softmax 函数,就映射成为(0,1)的值,而这些值的累和
    为1(满足概率的性质),那么我们将它理解成概率,选取概率最大(也就是值对应最大的)节
    点,作为我们的预测目标类别

5. 其它激活函数

在这里插入图片描述

6. 激活函数选择

  • 对于隐藏层

    1.优先选择ReLU激活函数

    2.如果ReLu效果不好,那么尝试其他激活,如Leaky ReLu等。

    3.如果你使用了ReLU, 需要注意一下Dead ReLU 问题, 避免出现大的梯度从而导致过多的神经元死亡。

    4.少用使用sigmoid激活函数,可以尝试使用tanh激活函数

  • 对于输出层

    1.二分类问题选择sigmoid激活函数

    2.多分类问题选择softmax激活函数

    3.回归问题选择identity激活函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值