目录
激活函数的作用:增加网络的非线性能力
1,Sigmoid函数
特点:
经过改函数作用后的值分布在【0,1】之间,导数的范围也为【0,1】之间,模拟了一个神经元随着输入不断增加从完全不激活状态到完全激活的过程;
缺点:
1)两端是饱和区,饱和区域内的梯度接近为0,会带来熟悉的梯度消失的问题。一旦神经元进入到饱和区,就难以继续优化;
2)Sigmoid导数会变的越来越小,导致梯度越来越难回传,会降低网络的收敛的速度,导致网络不能收敛到好的状态;
3)Sigmoid的输出值,不是以0 为中心的,值是大于零的。权重参数的梯度和输入值有关,这样会导致在反向传播的时候,一个样本的某个权重的梯度总是一个符号,不利于权重的更新;
2,Tanh函数(双曲正切)
特点:解决了Sigmoid的缺点的第三点,但是依然存在其他两个缺点的问题
3,ReLU函数(线性整流单元)
f(x)=max(0,x),导数在x>0时为1,x<0时为0。
ReLU函数的本质是一个取最大值函数。
特点
1)在正区间内解决了梯度消失的问题,在使用前只需要判断输入是否大于0,所以计算速度非常快,收敛的速度快于Sigmoid和Tanh的函数;
缺点
1)存在一些死的神经元,由于只让大于零的参与计算,但是有些神经元是负数,可能永远不会参与到运算,致使相应的参数没有办法更新。
目前很多学者都在优化ReLU函数,如Leaky ReLU函数,f(x)=max(0.01x,x)就解决了上述缺点中的第一点,将前半段设置为0.01x而非0.在实际操作中,目前还没有证明 Leaky ReLU函数性能优于ReLU函数
4,PreLU函数
PreLU函数增加了少量的参数量,如果每个通道单独激活,则增加的数量等于通道数,增加了网络的泛化能力。PReLU 只增加了极少量的参数,也就意味着网络的计算量以及过拟合的危险性都只增加了一点点。特别的,当不同 channels 使用相同的时,参数就更少了。BP 更新时,采用的是带动量的更新方式(momentum)。
5,ELU函数
ELU函数是针对ReLU函数的一个改进型,相比于ReLU函数,在输入为负数的情况下,是有一定的输出的,而且这部分输出还具有一定的抗干扰能力。这样可以消除ReLU死掉的问题,不过还是有梯度饱和和指数运算的问题。
6,SELU函数
经过该激活函数后使得样本分布自动归一化到0均值和单位方差(自归一化,保证训练过程中梯度不会爆炸或消失,效果比Batch Normalization 要好)
其实就是ELU乘了个lambda,关键在于这个lambda是大于1的。以前relu,prelu,elu这些激活函数,都是在负半轴坡度平缓,这样在activation的方差过大的时候可以让它减小,防止了梯度爆炸,但是正半轴坡度简单的设成了1。而selu的正半轴大于1,在方差过小的的时候可以让它增大,同时防止了梯度消失。这样激活函数就有一个不动点,网络深了以后每一层的输出都是均值为0方差为1。
7,GELUs函数
gelu(gaussian error linear units)就是我们常说的高斯误差线性单元,它是一种高性能的神经网络激活函数,因为gelu的非线性变化是一种符合预期的随机正则变换方式,公式如下:
8,Maxout函数
其实就是最大值函数,它从多个输入中取最大值,其求导非常的简单,只在最大值的一路有导数。实验结果表明Maxout与Dropout组合使用可以发挥比较好的效果
Maxout可以看做是在深度学习网络中加入一层激活函数层,包含一个参数k.这一层相比ReLU,sigmoid等,其特殊之处在于增加了k个神经元,然后输出激活值最大的值.
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文: 激活函数(ReLU, Swish, Maxout) - 康行天下 - 博客园 © 康行天下
9,Softmax函数(归一化指数函数)
softmax第一步就是将模型的预测结果转化到指数函数上,这样保证了概率的非负性,一般用于多神经网络的输出;
10, Swish
Swish函数就是由网络自动搜索出来的激活函数
Swish函数的求导过程为:
函数特点
1.Swish函数和其一阶导数都具有平滑特性;
2.有下界,无上界,非单调。
11,Hard-swish
Hard-Swish是在MobileNetv3中提出的,是针对Swish函数的sigmoid操作对硬件不够友好的问题做的改进。使用ReLU6的改善
12, Mish
Mish是光滑的非单调激活函数,可定义为:
f(x) = x・tanh(ς(x))
其中, ς(x) = ln(1+e^x),是一个softmax激活函数和。
Mish的性能详细说明如下:
-
无上界有下界:无上界是任何激活函数都需要的特性,因为它避免了导致训练速度急剧下降的梯度饱和。因此,加快训练过程。有下限的话能够保证具有一定的regularization effect,这对于神经网络训练来说是一个很好的特性(Mish的这个性质类似于ReLU和Swish的性质,其范围是[≈0.31,∞))。
-
非单调函数:这种性质有助于保持小的负值,从而稳定网络梯度流。大多数常用的激活函数,如ReLU [f(x) = max(0, x)], Leaky ReLU [f(x) = max(0, x), 1],由于其差分为0,不能保持负值,因此大多数神经元没有得到更新。
-
无穷阶连续性和光滑性:Mish是光滑函数,具有较好的泛化能力和结果的有效优化能力,可以提高结果的质量。在图中,可以看到ReLU和Mish之间的一个随机初始化的神经网络在宏观平滑度上的剧烈变化。然而,在Swish和Mish的情况下,宏观上或多或少还是相似的。
-
计算量较大,但是效果更好:与ReLU相比,它的计算比较贵,但在深度神经网络中显示了比ReLU更好的结果。
-
自门控:此属性受到Swish函数的启发,其中标量输入被提供给gate。它优于像ReLU这样的点式激活函数,后者只接受单个标量输入,而不需要更改网络参数。