神经网络-激活函数小结

激活函数总结


一、激活函数的作用

       我们知道神经网络是为了模拟人类大脑对要执行的任务进行学习,而人类的神经元产生兴奋是由一定条件的(阈值),激活函数就是为了模拟这个机制,当输入的激励达到一定强度,神经元就会被激活,产生输出信号。

       与此同时,激活函数将非线性特征引入到神经网络当中,如果没有激活函数,输出信号就是一些简单的线性关系的堆叠,往往无法对复杂的任务进行学习。所以使用非线性函数作为激活函数的原因在于,我们需要一个可以学习和表示几乎任何东西的神经网络模型,以及可以将输入映射到输出的任意复杂函数所以神经网络被认为是通用函数近似器(Universal Function Approximators)。这意味着他们可以计算和学习任何函数。几乎我们可以想到的任何过程都可以表示为神经网络中的函数计算。而这一切都归结于这一点,我们需要应用激活函数f(x),以便使网络更加强大,增加它的能力,使它可以学习复杂的事物,复杂的表单数据,以及表示输入输出之间非线性的复杂的任意函数映射。因此,使用非线性激活函数,我们便能够从输入输出之间生成非线性映射。

激活函数的发展经历了Sigmoid -> Tanh -> ReLU -> Leaky ReLU -> Maxout的发展过程,还有一个特殊的激活函数Softmax,它一般作为神经网络的最后一层,用于最后的分类和归一化。接下来对上述几乎函数进行简单介绍。

二、激活函数的介绍

1、softmax函数

       softmax函数,又称归一化指数函数。它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。下图展示了softmax的计算方法

                                   

概率有两个性质:预测的概率为非负数;各种预测结果概率之和等于1。softmax就是将在负无穷到正无穷上的预测结果按照这两步转换为概率。

2、sigmoid函数

公式:

函数图像:

                                                         

优点:

Sigmoid激活函数是应用范围最广的一类激活函数,具有指数形状,它在物理意义上最为接近生物神经元,能够很好的表达激活的意思,可以把他想象成一个神经元的放电率,在中间斜率比较大的地方是神经元的敏感区,在两边斜率很平缓的地方是神经元的抑制区。另外,Sigmoid的输出被压缩到(0,1)之间,具有很好的性质,可以被表示为概率或者用于输入的归一化等。可以看出,Sigmoid函数连续,光滑,严格单调,以(0,0.5)中心对称,是一个非常良好的阈值函数。

缺点:

(1)当神经元的激活在接近0或1处时会饱和,在这些区域梯度几乎为0,从图中可以看出该函数饱和区范围广,所以很容易造成梯度消失,导致最终权重基本没什么更新,我们就无法递归地学习到输入数据了。所以如果初始值很大的情况下,大部分神经元可能都会处在saturation的状态而把gradient kill掉,这会导致网络变的很难学习。这个问题叫做梯度饱和,也可以叫梯度弥散。

(2)Sigmoid函数的输出不是零中心的。这样的话,当输入神经元的数据总是正数,那么在反向传播的过程中,参数矩阵 W 的每个元素都会朝着同一个方向变化,同为正或同为负,这将会导致梯度下降权重更新时出现z字型的下降。这对于神经网络训练是不利的,所有的 W 都朝着同一符号方向变化会减小训练速度,增加模型训练时间。(批训练可以缓解这个问题:每个batch可能得到不同的符号(正或负)

(3)最后一个问题,计算比较复杂,运算成本高

3、Tanh函数

公式(sigmoid的变形):

函数图像:

                                                           

优点:

相比于sigmoid,它的收敛速度更快,如上图所示,tanh 函数线性区斜率较 Sigmoid 更大一些。在此区域内训练速度会更快。另外,tanh 函数输出均值为零,也就不存在 Sigmoid 函数中 dW 恒为正或者恒为负,从而影响训练速度的问题。

缺点:

和sigmoid一样,饱和区梯度消失问题

4、ReLu函数

公式:

函数图像:

                                                

优点:

相较于sigmoid和tanh函数,ReLU对于随机梯度下降的收敛有巨大的加速作用;sigmoid和tanh在求导时含有指数运算,而ReLU求导几乎不存在任何计算量。

缺点:

1) 当输入是负数的时候,ReLU是完全不被激活的,这就表明一旦输入到了负数,ReLU就会死掉。这样在前向传播过程中,还不算什么问题,有的区域是敏感的,有的是不敏感的。但是到了反向传播过程中,输入负数,梯度就会完全到0,这个和sigmod函数、tanh函数有一样的问题。

2) 我们发现ReLU函数的输出要么是0,要么是正数,这也就是说,ReLU函数也不是以0为中心的函数。

5、Leaky ReLu函数(PReLu)

公式:

其中 \varepsilon 是很小的负数梯度值,比如0.01,Leaky ReLU非线性函数图像如下图所示。这样做目的是使负轴信息不会全部丢失,解决了ReLU神经元“死掉”的问题。更进一步的方法是PReLU,即把 \varepsilon当做每个神经元中的一个参数,是可以通过梯度下降求解的(通过学习得到)。函数图像:

                                                        

 

6、Maxout函数

Maxout是对ReLU和leaky ReLU的一般化归纳,函数公式是:

Maxout非线性函数图像如下图所示。Maxout具有ReLU的优点,如计算简单,不会 saturation,同时又没有ReLU的一些缺点,如容易出现梯度完全消失。

                           

Maxout 的拟合能力是非常强的,它可以拟合任意的的凸函数。最直观的解释就是任意的凸函数都可以由分段线性函数以任意精度拟合,而 Maxout 又是取 k 个隐藏层节点的最大值,这些”隐藏层"节点也是线性的,所以在不同的取值范围下,最大值也可以看做是分段线性的(上面的公式中 k = 2)。可以说,Maxout 可以拟合任意凸函数,k 值越大,分段越多,拟合效果也就越好。

缺点:每个神经元的参数翻倍,整体参数的数量激增

参考文章地址:

https://blog.csdn.net/u014365862/article/details/52710698

https://blog.csdn.net/kangyi411/article/details/78969642

https://mp.weixin.qq.com/s?src=11&timestamp=1586339542&ver=2266&signature=UzjnWKcU3FftnMdEcN6Pqmdc-QcqxhuyK9mV6UG02cPGXv9LkVyI0spdWRniemOvyGCv1FCuyf4bT21AVCKX40Jhr-xhL7M7l2cs7m3iQMfnxAWPXs8rIk1IU1dQY4KU&new=1

发布了15 篇原创文章 · 获赞 0 · 访问量 185

猜你喜欢

转载自blog.csdn.net/qq_37705280/article/details/105399836
今日推荐