神经网络中常见的激活函数

来源:互联网 发布:同花顺金融数据录入 编辑:程序博客网 时间:2024/05/16 07:45

一、背景
  为什么要使用激活函数?之前其实也有点困惑,最近整理了一下之前的笔记,总结一下。
  首先是第一个问题:为什么要使用激活函数以及它的作用是什么?使用激活函数的原因在于,以两类数据的分类为例,这些数据真正能线性可分的情况还是比较少的,此时如果数据不是线性可分的我们又该如何分类呢?这个时候我们就无法再简单利用一条直线来对数据进行很好的划分,这时我们需要加入非线性的因素来对数据进行分类。所以可以判断出激活函数的作用是给神经网络加入一些非线性因素,由于线性模型的表达能力不够,故激活函数的加入可以使得神经网络更好地解决较为复杂的问题。
  下图是神经网络中常见的激活函数使用图:

这里写图片描述

  上图中的f()函数就是使用的激活函数。下面对几种常见的激活函数以及它们的优缺点进行介绍。

二、几种常见的激活函数
1、Sigmoid函数
  Sigmoid函数定义如下:

这里写图片描述

  其图形如下图所示,为一个S型曲线:

这里写图片描述

  Sigmoid函数将实数压缩到0~1区间。大的负数变成0,大的正数变成1。sigmoid函数由于其强大的解释力,常被用来表示神经元的活跃度程度:从不活跃(0)到假设上最大的(1)。在实践中,sigmoid函数最近从受欢迎到不受欢迎,很少再被使用。
它有两个主要缺点:
  (1)sigmoid容易饱和,出现梯度消失的现象。sigmoid神经元的一个很差的属性就是神经元的活跃度在0和1处饱和,它的梯度在这些地方接近于0。回忆在反向传播中,某处的梯度和其目标输出的梯度相乘,以得到整个目标。因此,如果某处的梯度过小,就会很大程度上出现梯度消失,使得几乎没有信号经过这个神经元以及所有间接经过此处的数据。除此之外,人们必须额外注意sigmoid神经元权值的初始化来避免饱和。例如,当初始权值过大,几乎所有的神经元都会饱和以至于网络几乎不能学习。
  (2)Sigmoid 的输出不是0均值的,这是我们不希望的,因为这会导致后层的神经元的输入是非0均值的信号,这会对梯度产生影响:假设后层神经元的输入都为正(e.g. x>0 elementwise in f=wTx+b),那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。 但是如果你是按batch去训练,那么每个batch可能得到不同的符号(正或负),那么相加一下这个问题还是可以缓解。
2、tanh函数
  tanh和sigmoid函数是有异曲同工之妙的,不同的是它把实值得输入压缩到-1~1的范围。tanh函数的公式如下图所示:

这里写图片描述

  它对应的图像如下图所示:

这里写图片描述

  优点:因为其输入的范围为-1~1,因此它基本是0均值的,这也就解决了上述sigmoid缺点中的第二个,所以实际中tanh会比sigmoid更常用。
  缺点:它依然存在梯度饱和的问题。
3、ReLU函数
  ReLU是最近几年非常流行的激活函数。它的定义如下:

这里写图片描述

  它的图像为:

这里写图片描述

优点:
  (1)其在梯度下降上与tanh/sigmoid相比有更快的收敛速度。这被认为时其线性、非饱和的形式。
  (2)不会出现梯度消失的问题。
  (3)Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。
  (4)sigmoid和tanh涉及了很多很expensive的操作(比如指数),ReLU可以更加简单的实现。
缺点:
  ReLU单元脆弱且可能会在训练中死去。例如,大的梯度流经过ReLU单元时可能导致神经不会在以后任何数据节点再被激活。当这发生时,经过此单元的梯度将永远为零。ReLU单元可能不可逆地在训练中的数据流中关闭。例如,比可能会发现当学习速率过快时你40%的网络都“挂了”(神经元在此后的整个训练中都不激活)。当学习率设定恰当时,这种事情会更少出现。
4、LReLU和PReLU
  ReLU、PReLU函数的图像如下图所示,需要说明的是LReLU和PReLU的区别就在于a固定还是可变:

这里写图片描述

  先说一下为什么要用LReLU?就是了为了解决ReLU挂了的办法。具体方法为当x<0,用小的负梯度(0.01)来替代0。
  由上图可以看出,如果ai=0,那么PReLU退化为ReLU;如果ai是一个很小的固定值(如ai=0.01),则PReLU退化为Leaky ReLU(LReLU)。 有实验证明,与ReLU相比,LReLU对最终的结果几乎没什么影响。但是LReLU可在一定程度上解决ReLU挂了的情况。
  PReLU是LReLU的改进,它可以自适应地从数据中学习参数。PReLU具有收敛速度快、错误率低的特点。PReLU可以用于反向传播的训练,可以与其他层同时优化。
5、ELU
  ELU的定义如下:

这里写图片描述

  它对应的图像如下:

这里写图片描述

优点:
  (1)ELU减少了正常梯度与单位自然梯度之间的差距,从而加快了学习。
  (2)在负的限制条件下能够更有鲁棒性。