1.Sigmoid
图像大致长这样
可以看出,会将所有数据映射到 (0,1) 区间上,若是正数,映射后的值大于0.5;若为负数,映射后的值小于0.5;若为0,则为0.5
可是,Sigmoid在DeepLearning的时候会随着层数的增加loss反而飙升
其实在input这边,gradient很小,参数几乎还是随机更新;而output这边,gradient很大,参数更新很快,几乎就收敛了(converge)。导致input这边参数还在随机更新的时候,output这边就已经根据random出来的参数找到了local minimum,然后你就会观察说糟糕了,loss下降的速度很慢
因为Sigmoid将负无穷到正无穷的数据硬压到(0,1),当input很大的时候,其实output的结果变化很小。本来影响就很小,你又叠了很多层,影响被迫衰减,就造成了input几乎对loss产生不了什么影响。
2.ReLu
为了解决上面的问题,应该将激活函数换成ReLu
图像大致长这样
当input小于等于0的时候,直接变成0。这就意味着有些神经元(neuron)会对整个神经网络没有任何的影响,所以这些神经元是可以被拿掉的
那些没用的神经元直接去掉
这些就不会存在很小的gradient,就有效地减免一开始Sigmoid中产生的问题
其实ReLu还有其他的形式
3.Maxout
其实ReLu是Maxout中的一种。
拿下图举个例子
你想如果在ReLu中,负的没有,输入是不是跟这个一样呢?
那我们再从理论解释一下这个,如果将输送给w2的权重和偏差全部设为0,得出的图像是不是就是x轴,将w1的权重设为1,偏差设为0,是不是就是ReLu了呢?
但是Maxout的权重和偏差不是固定的,它是可以通过不同的数据学出不同的曲线
综上所述,ReLu 和 Maxout 都是根据不同的自身的判别条件而自动剔除一些数据,从而产生瘦的神经网络,不同的数据会产生不同的神经网络架构
4.Tanh
图像大致长这样
tanh的特点:
1.梯度更新更快 由上图可以发现,当输入变化很大,原本的sigmoid输出变化很少,这不利于梯度更新。而tanh可以有效的解决这个问题
2.不变号 正就被映射成正的,负的被映射成负的,零就被映射成零。另外,它过原点。
5.Softplus
它相对于ReLu相对来说更加平滑,不过同样是单侧抑制
6.Swish
主要优点
1. 无界性有助于慢速训练期间,梯度逐渐接近0并导致饱和;
2. 导数恒大于0
3. 平滑度在优化和泛化有很大作用
7.Elu
Elu具有Relu的全部优点,没有Dead Relu问题,输出值的平均值接近于0,以0为中心
Elu通过减少偏置偏移的影响,使正常梯度更接近于单位自然梯度,从而使均值向零加速学习
Elu在较小的输入时会饱和至负值,从而减少前向传播的变异和信息
但它相对来说计算会麻烦一点,而且理论上ELU应该比RELU,实操上不一定都比RELU好
8.Softsign
9.Selu
10.Exponential
11.Softmax
softmax将输入映射成[-1,1]输出,可以视作为概率,但是当输入值很大的时候,softmax几乎是无动于衷的,即为梯度下降或者消失了。
参考文献:
https://www.youtube.com/watch?v=xki61j7z-30&list=PLJV_el3uVTsPy9oCRY30oBPNLCo89yu49&index=16