Skip to content

Latest commit

 

History

History
158 lines (72 loc) · 5.57 KB

activation.md

File metadata and controls

158 lines (72 loc) · 5.57 KB

激活函数

1.Sigmoid

图像大致长这样

可以看出,会将所有数据映射到 (0,1) 区间上,若是正数,映射后的值大于0.5;若为负数,映射后的值小于0.5;若为0,则为0.5

可是,SigmoidDeepLearning的时候会随着层数的增加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

其实ReLuMaxout中的一种。

拿下图举个例子

你想如果在ReLu中,负的没有,输入是不是跟这个一样呢?

那我们再从理论解释一下这个,如果将输送给w2的权重和偏差全部设为0,得出的图像是不是就是x轴,将w1的权重设为1,偏差设为0,是不是就是ReLu了呢?

但是Maxout的权重和偏差不是固定的,它是可以通过不同的数据学出不同的曲线

综上所述,ReLuMaxout 都是根据不同的自身的判别条件而自动剔除一些数据,从而产生瘦的神经网络,不同的数据会产生不同的神经网络架构

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