【常用的激活函数】

文章目录

  • 一、什么是激活函数?
  • 二、激活函数的作用(为什么需要激活函数)?
  • 三、有哪些激活函数?都有什么性质和特点?
    • 激活函数的特性
    • 1、sigmod函数
    • 2、tanh函数
    • 3、ReLU函数
      • Leaky-ReLU
      • ELU函数
    • 4、softmax函数
      • Softmax与Sigmoid的异同
  • 四、几种激活函数的对比

一、什么是激活函数?

在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数 Activation Function,又称激励函数,如下图所示:
【常用的激活函数】_第1张图片

二、激活函数的作用(为什么需要激活函数)?

如果不用激励函数(其实相当于激励函数是f(x)=x),在这种情况下你每一层节点的输入都是上层输出的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了,那么网络的逼近能力就相当有限。正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络表达能力就更加强大〈不再是输入的线性组合,而是几乎可以逼近任意函数)。

三、有哪些激活函数?都有什么性质和特点?

激活函数的特性

  1. 可微性: 当优化方法是基于梯度的时候,这个性质是必须的。
  2. 单调性: 当激活函数是单调的时候,单层网络能够保证是凸函数。
  3. 输出值的范围: 当激活函数输出值是 有限 的时候,基于梯度的优化方法会更加 稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是 无限 的时候,模型的训练会更加高效,不过在这种情况一般需要更小的learning rate。

早期研究神经网络主要采用函数或者tanh函数,输出有界,很容易充当下一层的输入。
近些年Relu函数及其改进型〈如Leaky-ReLU、P-ReLU、R-ReLU等)在多层神经网络中应用比较多。常用的激活函数有:sigmod函数tanh函数ReLU函数softmax函数

1、sigmod函数

在这里插入图片描述
Sigmoid函数又叫作 Logistic 激活函数,它将实数值压缩进 0 到 1 的区间内。该函数将大的负数转换成 0,将大的正数转换成 1。

下图展示了 Sigmoid 函数及其导数:

Sigmoid 激活函数:
【常用的激活函数】_第2张图片
Sigmoid 导数:
【常用的激活函数】_第3张图片
Sigmoid 函数的三个主要缺陷:

  1. 梯度消失: 注意:Sigmoid 函数趋近 0 和 1 的时候变化率会变得平坦,也就是说,Sigmoid 的梯度趋近于 0。神经网络使用 Sigmoid 激活函数进行反向传播时,输出接近 0 或 1 的神经元其梯度趋近于 0。这些神经元叫作饱和神经元。因此,这些神经元的权重不会更新。此外,与此类神经元相连的神经元的权重也更新得很慢。该问题叫作梯度消失。因此,想象一下,如果一个大型神经网络包含 Sigmoid 神经元,而其中很多个都处于饱和状态,那么该网络无法执行反向传播。

  2. 不以零为中心: Sigmoid 输出不以零为中心的,这样会使权重更新效率降低。因为这会导致后层的神经元的输入是非0均值的信号,这会对梯度产生影响。(不过有一种常用的解决方案是,将最终函数值减去0.5)

  3. 计算成本高昂: exp() 函数(即指数运算)与其他非线性激活函数相比,计算成本高昂。

下一个要讨论的非线性激活函数解决了 Sigmoid 函数中值域期望不为 0 的问题。

2、tanh函数

【常用的激活函数】_第4张图片
Tanh 激活函数又叫作双曲正切激活函数(hyperbolic tangent activation function)。Tanh 函数将其压缩至 -1 到 1 的区间内。负数输入被当作负值,零输入值的映射接近零,正数输入被当作正值。

下图展示了 Tanh 激活函数及其导数:

Tanh 激活函数:
【常用的激活函数】_第5张图片
Tanh 导数:
【常用的激活函数】_第6张图片
优点:
Tanh 函数的输出以零为中心,输出均值为0,这就使得其收敛速度要比sigmoid快,从而可以减少迭代次数。

缺点:
Tanh 函数同样具有软饱和性,会造成梯度消失,因此在饱和时也会「杀死」梯度。

为了解决梯度消失问题,我们来讨论另一个非线性激活函数——修正线性单元(rectified linear unit,ReLU),该函数明显优于前面两个函数,是现在使用最广泛的函数。

3、ReLU函数

【常用的激活函数】_第7张图片

修正线性单元(rectified linear unit,ReLU)

ReLU函数:
【常用的激活函数】_第8张图片
ReLU导数:
【常用的激活函数】_第9张图片
优点:

  • 解决了梯度消失、爆炸的问题。它在x>0时不存在饱和问题,从而使保持梯度不衰减,从而解决了梯度消失问题。这让我们能够直接以监督的方式训练深度神经网络,而无需依赖无监督的逐层预训练。
  • 计算方便,计算速度快
  • 加速了网络的训练

缺点:

  • 不以零为中心:和 Sigmoid 激活函数类似,ReLU 函数的输出不以零为中心,也就是也存在“偏移现象”。
  • 由于负数部分恒为0,会导致一些神经元无法激活,这种现象称为“神经元死亡”。

神经元死亡: 前向传导(forward pass)过程中,如果 x < 0,则神经元保持非激活状态,且在后向传导(backward pass)中「杀死」梯度。这样权重无法得到更新,网络无法学习。当 x = 0 时,该点的梯度未定义,但是这个问题在实现中得到了解决,通过采用左侧或右侧的梯度的方式。

所以偏移现象和神经元死亡共同影响网络的收敛性。

Leaky-ReLU

【常用的激活函数】_第10张图片
为了避免ReLU在x<0时的神经元死亡现象,添加了一个参数。
【常用的激活函数】_第11张图片

ELU函数

【常用的激活函数】_第12张图片
它结合了sigmoid和ReLU函数,左侧软饱和,右侧无饱和。

其函数及其导数数学形式为:
【常用的激活函数】_第13张图片
右侧线性部分使得ELU能缓解梯度消失,而左侧软饱和能让对ELU对输入变化或噪声更鲁棒。ELU的输出均值接近于0,所以收敛速度更快。

4、softmax函数

softmax函数,又称归一化指数函数,用于多分类神经网络输出。softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,并且累计和为1,可以看成概率来理解,从而来进行多分类。
特点:

  • 预测的概率为非负数;
  • 各种预测结果概率之和等于1。

假设我们有一个数组V, V i V_i Vi 表示V中的第i个元素,那么这个元素的softmax值就是:
在这里插入图片描述
更形象的如下图表示:
【常用的激活函数】_第14张图片
softmax直白来说就是将原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标

Softmax与Sigmoid的异同

【常用的激活函数】_第15张图片

四、几种激活函数的对比

隐藏层的激活函数有9种可以选择:Sigmoid,Linear,Tanh,ArchTan,Relu,Parameteric ReLU(PReLU),ELU,SoftPlus 和 BentLinear

这里我们在隐藏层分别用sigmod和ReLU,输出层为sigmod。

  1. 数据比较复杂时,mini_batch的值设置的相对大一些,这样每次能覆盖不同的类型,训练的效果会更好。
  2. 在训练次数相同时,ReLU激活函数的训练效果确实优于sigmoid函数。在大量次数(几十万次以上)训练后相差不大。
  3. sigmoid更容易出现过拟合。对于这个实验,隐层神经元为30个的时候,sigmoid会出现过拟合现象,几乎不能分类,在隐层神经元为10个的时候,能够进行部分分类,但是效果比不上ReLU的分类效果。
  4. ReLU在小batch(比如10)时效果不好。

对于ReLU而言,ReLU的特点是,隐层比sigmoid需要的神经元多,学习速率相对要小一点,mini_batch的数量要大一些。

参考链接:
几种常用的激活函数:https://blog.csdn.net/qq_32284189/article/details/82218354
常用激活函数(激励函数)理解与总结:https://wenku.baidu.com/view/af75613b954bcf84b9d528ea81c758f5f61f290d.html
一文概览深度学习中的激活函数:https://www.jiqizhixin.com/articles/2017-11-02-26
几种常见的激活函数:https://www.jianshu.com/p/dc4e53fc73a0

你可能感兴趣的:(面经,机器学习,经验分享)