一、激活的概念:
将输入映射为特定分布的输出,完成非线性变换。
多细胞生物神经元的树突接收信息,触发区整合电位,产生神经冲动,末端的突触向下一个神经元传递刺激。以人脑为例,人脑的细胞受刺激产生活动,而刺激的强度需要达到一定的阈值,没有达到阈值的刺激是无法使人产生活动的,不同的刺激产生的输出不同,达到一定值后就会饱和。
二、激活函数
激活函数可以分为四类:S激活函数、ReLU激活函数(包括近ReLU激活函数)、Maxout激活函数和自动搜索的激活函数。
(一)、S激活函数
(1) Sigmoid激活函数,也叫Logistic函数,值域为[0,1],即对输入做0~1的平滑变化
优点:输出0~1,映射平滑适合预测概率
缺点:不过零点,没有负值激活,影响梯度下降效率;由图可以看出,当输入的绝对值大于5以后,进入饱和区,梯度为零,即出现了梯度消失问题。
(2) Tanh激活函数,对Sigmoid函数做一些变换,就得到Tanh函数,相比于Sigmoid函数,Tanh过零点,对负值也有激活,值域为-1~1,但是还是存在梯度消失问题。
(二)、ReLU(Rectified Linear Unit, 修正线性单元)激活函数
正区间恒等变换,负区间为0
ReLU的平滑版本
优点:计算简单,倒数恒定(阶跃函数),拥有稀疏性,符合人脑的神经元活跃特性;
缺点:非零中心化,没有负值激活,影响梯度下降效率;如果一次不恰当的参数更新后,所有数据都不能使某个神经元激活,则其对应的参数梯度为0,以后也无法激活,陷入“死亡”。
为了解决ReLU函数负区间零激活问题,提出Leaky ReLU(LReLU)、Parametric ReLU(PReLU)和Random ReLU(RReLU),其统一表达式为:
如果取定值就是LReLU;若是可学习的参数就是PReLU;若为随机值就是RReLU.
PReLU:网络的浅层尤其是第一层卷积层中,学习到的α比较大,而到了深层就比较小。可以理解为网络的浅层学习到了类似于Gabor的浅层特征,更大的α可以提取到更加稠密的特征,而随着网络深度的增加,特征变得更加稀疏。
PReLU:当作一个正则项,用于增强网络的泛化能力。
如果LReLU的负区间取非线性函数就是ELU函数,其有较高的噪声鲁棒性,能够使神经元的平均激活均值趋近为0,但需要指数运算,计算量大。
(三)、Maxout激活函数——分段线性函数
从多个输入中取最大值,求导简单,只在最大值的一路有梯度,整体学习输入到输出的非线性映射关系,拟合能力很强,但是增加了k-1个神经单元,计算量大。
(四)、自动搜索激活函数——Swish函数
Swish函数是线性函数和ReLU函数之间的非线性插值函数,无上界有下届、平滑非单调,从数据中学习参数β,可以获得任务相关的激活机制。