卷积神经网络-激活函数

原文链接:https://zhuanlan.zhihu.com/p/508741909?utm_id=0、https://zhuanlan.zhihu.com/p/476373735?utm_id=0、https://blog.csdn.net/purple_love/article/details/134620930

https://www.zhihu.com/question/60650016/answer/2441796198?utm_id=0

卷积神经网络中的卷积和池化等操作得到的输出是线性的,激活函数可以把非线性因素引入到深层网络中,让深层网络更有意义。能够更好的映射特征去除数据中的冗余。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。如果不使用激活函数,则输出信号仅是一个简单的线性函数。线性函数一个一级多项式,线性方程的复杂度有限,从数据中学习复杂函数映射的能力很小。没有激活函数,神经网络将无法学习和模拟其他复杂类型的数据,例如图像、视频、音频、语音等。3.激活函数可以把当前特征空间通过一定的线性映射转换到另一个空间,让数据能够更好的被分类。

1.假若网络中全部是线性部件,那么线性的组合还是线性,与单独一个线性分类器无异。这样就做不到用非线性来逼近任意函数。2.使用非线性激活函数 ,以便使网络更加强大,增加它的能力,使它可以学习复杂的事物,复杂的表单数据,以及表示输入输出之间非线性的复杂的任意函数映射。使用非线性激活函数,能够从输入输出之间生成非线性映射。
 
在卷积神经网络中经常用到的激活函数有:sigmoid 激活函数、tanh 激活函数、ReLU 激活函数以及 Leaky ReLU 函数等。

sigmoid/tanh比较常见于全连接层,后者relu常见于卷积层。

sigmoid 函数公式如上式所示,函数图像如图 2.16 所示。该函数能够把变量映射到[0,1]区间,所以一般是用来处理二分类的问题。

Sigmoid 公式如下:

 

 

 2、Tanh 函数改善了 Sigmoid 函数变化过于平缓的问题,是将变量映射到[-1,1]区间,Tanh 计算公式如下:

 

 

 3、ReLU 函数的优点是收敛速度非常快。当输入值为负数时,梯度也变为 0,容易导致神经元坏死,所以需要用较小的学习率对网络进行训练。

因为 sigmoid 和 tanh 函数在反向传播中常常因为值过小而造成梯度消失,ReLU 函数能够避免这个问题,ReLU 是“修正线性单元”, ReLU 函数的表达式如下式所示:ReLU 激活函数公式如下:

函数如下图所示,从图中可以看出 ReLU 函数不是连续的,属于分段函数。当 x <0时, f(x)值为 0,当 x >0 时, f(x)等于 x ,因此不会出现梯度消失的情况。与 sigmoid、tanh 激活函数相比,ReLU 函数当输入小于 0 时梯度等于 0,这时神经元不会被激活,所以在某一段时间里只有部分神经元会被激活,在反向传播过程中收敛速度会更快。

 

 4、Leaky ReLU 是在 ReLU 的基础上改进的,虽然可以避免神经元坏死,但是增加了计算量和参数量。

因为 ReLU 函数当输入在 x 轴的负半轴时,会导致部分神经元失活。针对这个问题,研究人员又提出了改进函数—Leaky ReLU 激活函数。该函数的数学表达式如下式所示:

 Leaky ReLU 和 ReLU 函数相比,主要的变化是在 x 的负半轴值不再为 0,而是有一定斜率的直线,a 值一般设为 0.01,值不是固定的,是人为设置的超参数。函数的图像如下图所示。

 

posted @ 2024-04-11 18:25  yinghualeihenmei  阅读(111)  评论(0编辑  收藏  举报