激活函数的特征,几种激活函数

  激活函数的特征,几种激活函数

  我们知道,在神经网络模型中,所有的隐含层,包括输出层,都需要激活函数。熟悉常用的激活函数有ReLU,Sigmoid等。但是,对于每个激活功能的选择方法和区别特征,有几点需要特别注意。今天红石就和大家一起总结一下常用激活函数Sigmoid,tanh,ReLU,Leaky ReLU,eLU,Maxout的关键知识点。

  一个

  为什么需要激活功能?

  神经网络单个神经元的基本结构由线性输出Z和非线性输出a组成,如下图所示:

  其中f(x)是线性输出Z,g(x)是非线性输出,g()表示激活函数。一般来说,激活函数是一个非线性函数,它的作用是在神经网络中加入一些非线性因素,使神经网络能更好地解决更复杂的问题。

  举个简单的例子,二元分类问题,如果不使用激活函数,比如简单的logistic回归,就只能简单的线性划分,如下图所示:

  如果使用激活函数,可以实现非线性除法,如下图所示:

  可以看出,激活函数可以帮助我们引入非线性因素,使神经网络更好地解决更复杂的问题。

  这里有个问题。为什么激活函数一般是非线性的,而不是线性的?反之,如果所有的激活函数都是线性的,那么激活函数g(z)=z,即A=z .那么,以两层神经网络为例,最终输出为:

  经过推导,我们发现网络输出仍然是x的线性组合,这说明使用神经网络的效果和直接使用线性模型没有区别。即使是有多个隐层的神经网络,如果用一个线性函数作为激活函数,最终输出的仍然是一个线性模型。这样,神经网络就没有作用了。因此,隐层的激活函数必然是非线性的。

  值得一提的是,如果所有隐层都使用线性激活函数,只有输出层使用非线性激活函数,那么整个神经网络的结构就类似于一个简单的logistic回归模型,效果与单个神经元相同。另外,如果是拟合问题而不是分类问题,输出层的激活函数可以使用线性函数。

  2

  乙状结肠的

  激活函数Sigmoid的图形表达式如下:

  Sigmoid函数,取值范围在(0,1)之间,单调连续,求导容易。一般用于二进制神经网络的输出层。

  下面重点说一下Sigmoid函数的缺点。

  首先,Sigmoid函数的饱和区域较宽,容易造成梯度消失。饱和区域如下图所示:

  上图红色椭圆标注的饱和区曲线平缓,梯度值很小,近似为零。而且Sigmoid函数的饱和区很宽,比如除了[-5,5],其他区域都接近饱和区。这种情况容易造成梯度消失,会增加神经网络训练的难度,影响神经网络模型的性能。

  其次,Sigmoid函数的输出是非零对称的,即输出总是大于零。这会有什么影响?我们来看看,假设Sigmoid函数的输出是(Wx b)并且满足0 (Wx b) 1。在反向求导过程中,设损失函数J对(Wx b)的导数为d,现在计算J对W的偏导数:

  其中(Wx b) 0,1- (wxb) 0。

  如果神经元的输入是x ^ 0,那么不管d是正还是负,dW总是可以为正或者为负。也就是说,参数矩阵W的每一个元素都会向同一个方向变化,既有正的,也有负的。这对神经网络训练是不利的。所有W在同一个符号方向上的变化都会降低训练速度,增加模型的训练时间。就好像我们下楼梯的时间总是比直接下滑梯的时间长很多,如下图所示:

  图中红色虚线是上面讨论的情况,蓝色对角线是W不全同向变化的情况。

  值得一提的是,针对Sigmoid函数的这个问题,往往会对神经元的输入X进行预处理,即均值归一化为零。这样也能有效防止dW总是正的或者负的。

  最后,Sigmoid函数包含exp指数运算,运算成本比较高。

  三

  双曲正切

  激活函数tanh的图形表达式如下:

  双曲正切函数的取值范围为(-1,1),单调连续,易于推导。

  与Sigmoid函数相比,tanh函数主要有两个优点:一是收敛速度更快,如下图所示,tanh函数线性区域的斜率大于Sigmoid函数。这方面的训练速度会更快。其次,双曲正切函数的平均输出值为零,所以不存在Sigmoid函数中dW总是为正或为负,从而影响训练速度的问题。

  但是,双曲正切函数和Sigmoid函数一样,也存在饱和区梯度消失的问题。它的饱和区甚至大于乙状结肠,但不明显。

  四

  线性单元

  激活函数ReLU的全称是整流线性单元,其图形表达式如下:

  ReLU函数是近年来最热门的激活函数之一。与Sigmoid和tanh函数相比,它的主要优点包括以下几个方面:

  不存在饱和区,也不存在梯度消失问题。没有复杂的指数运算,所以计算简单,效率提高。实际收敛速度更快,约为Sigmoid/tanh的6倍。与乙状结肠相比,更符合生物神经激活机制。下图比较了ReLU和tanh的收敛速度差异。数据集为CIFAR 10,模型为四层卷积神经网络。图中实线代表ReLU,虚线代表tanh。ReLU达到错误率比tanh快0.25。(在论文《ImageNet Classification with Deep Convolutional Neural Networks》中引用)

  但是,ReLU函数的缺点很明显。首先,ReLU的输出仍然是非零对称的,dW可能总是正的或负的,从而影响训练速度。

  其次,也是最重要的,当x ^ 0时,ReLU输出始终为零。当神经元的输出为零时,反向传播时权值和参数的梯度也将为零,这将导致权值和参数永远无法更新,即神经元将失效,形成“死神经元”。所以,为了解决这个问题,有时会将ReLU神经元初始化为正的偏置值,比如0.01。

  五

  泄漏ReLU

  Leaky ReLU对ReLU进行了改进,图形表达如下:

  泄漏ReLU的优势与ReLU的优势相似:

  不存在饱和区,也不存在梯度消失问题。没有复杂的指数运算,所以计算简单,效率提高。实际收敛速度更快,约为Sigmoid/tanh的6倍。不会造成神经元衰竭,形成“死神经元”。当然,0.01的系数是可调的,一般不会太大。

  六

  埃卢

  ELU(指数线性单位)也是ReLU的变体,其图形表达如下:

  ELU继承了Leaky ReLU的所有优点:

  不存在饱和区,也不存在梯度消失问题。没有复杂的指数运算,所以计算简单,效率提高。实际收敛速度更快,约为Sigmoid/tanh的6倍。不会造成神经元衰竭,形成“死神经元”。具有零输出均值负饱和区的存在使得ELU比泄漏ReLU更鲁棒和抗噪声。然而,ELU涉及指数运算,这导致了大量的计算。

  七

  最大输出

  Maxout最早出现在ICML2013上,由Goodfellow提出。其表达式如下:

  Maxout的拟合能力很强,可以拟合任何凸函数。最直观的解释就是任何凸函数都可以用任意精度的分段线性函数拟合,Maxout是k个隐层节点的最大值。这些“隐层”节点也是线性的,所以最大值在不同的取值范围内(上式中k=2)也可以看作是分段线性的。

  上图引自论文《Maxout Networks. Ian J. Goodfellow, David Warde-Farley, Mehdi Mirza, Aaron Courville, Yoshua Bengio》。可以说Maxout可以拟合任何凸函数。k值越大,分段越多,拟合效果越好。

  Maxout保证始终有一个线性区,没有饱和区,训练速度快,没有坏死的神经元。

  八

  如何选择合适的激活函数

  1)首选ReLU,速度快,但是要注意学习率的调整。

  2)如果ReLU不能很好地工作,请尝试使用Leaky ReLU、eLU或Maxout等变体。

  3)可以尝试用tanh。

  4)Sigmoid和tanh用于RNN(LSTM,注意机制等。)结构作为门控或概率值。在其他情况下,减少乙状结肠的使用。

  5)在浅层神经网络中,选择哪种激励函数影响不大。

  版权归作者所有:原创作品来自博主wx5d44d4866b864,转载请联系作者授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: