激活函数的作用是给神经网络加入一些非线性因素,由于线性模型的表达能力不够,故激活函数的加入可以使得神经网络更好地解决较为复杂的问题。
背景首先是第一个问题:为什么要使用激活函数以及它的作用是什么?使用激活函数的原因在于,以两类数据的分类为例,这些数据真正能线性可分的情况还是比较少的,此时如果数据不是线性可分的我们又该如何分类呢?这个时候我们就无法再简单利用一条直线来对数据进行很好的划分,这时我们需要加入非线性的因素来对数据进行分类。
激活函数的性质1、非线性:当激活函数是线性的时候,一个两层的神经网络就可以逼近基本上所有的函数了。但是,如果激活函数是恒等激活函数的时候(即),就不满足这个性质了,而且如果MLP使用的是恒等激活函数,那么其实整个网络跟单层神经网络是等价的。
2、可微性:当优化方法是基于梯度的时候,这个性质是必须的。
3、单调性:当激活函数是单调的时候,单层网络能够保证是凸函数。
4、 当激活函数满足这个性质的时候,如果参数的初始化是random的很小的值,那么神经网络的训练将会很高效;如果不满足这个性质,那么就需要很用心的去设置初始值。
4、输出值的范围:当激活函数输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是无限的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小的learning rate。1
作用神经网络中激活函数的主要作用是提供网络的非线性建模能力,如不特别说明,激活函数一般而言是非线性函数。假设一个示例神经网络中仅包含线性卷积和全连接运算,那么该网络仅能够表达线性映射,即便增加网络的深度也依旧还是线性映射,难以有效建模实际环境中非线性分布的数据。加入(非线性)激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。2
本词条内容贡献者为:
李晓林 - 教授 - 西南大学