激活函数篇(整理自网上的资源,侵删)

2021/9/5 23:37:48

本文主要是介绍激活函数篇(整理自网上的资源,侵删),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.sigmoid

        函数图像:

上图分别为其函数图像和导函数图像 

        优点:

                1. 函数平滑,易于求导

        缺点:

                1. 梯度值均小于1,容易梯度消失

                  2.使用指数运算,计算耗时

                  3.输出数据不是0均值的,收敛缓慢(模型的梯度值恒为正或者恒为负,导致会呈现Z字形的收缩方式)

        收敛缓慢的图像。 

2. tanh

函数图像:

        导函数为 

         优点:

                1. 是0均值的,收敛较快

                2.类似于sigmoid,曲线平滑,易于求导

        缺点:

                1.指数运算,计算耗时

                2. 只是将导数范围由(0, 0.25)放大到了(0, 1),仍然存在梯度消失问题

3. Relu

函数图像:

        左侧为原函数,右侧为导数,其中在x=0处不可导。

        优点: 

                1.计算速度快

                2.在x>0时,导数恒为1, 解决了梯度消失问题(正区间上的)

                注:此时在正方向上的梯度则全部取决于权重值,激活函数的输出是无上限的,可能出现梯度爆炸的问题。因此需要保证权重值在(0,1),  或者使用梯度裁剪: g=min⁡(6,max(0, x))。

                3.由于导数为1,故而收敛的比sigmoid和tanh更快

        缺点:

                1.存在deadly relu,即当输入为负时,某些神经元不更新

                       注:deadly relu也有好处,即带来了输出的稀疏性,能够提高时间和空间效率

                尽可能避免deadly relu的策略:不要过大的学习率;Xavier参数初始化;自适应调节学习率

                2.输出不是0均值的

4.leaky Relu:

        函数图像类似于Relu,只不过在负区间上的导数为0.01。

        优点:

                1.解决了deadly relu的问题

                2.收敛较快

                3.计算速度快

        缺点:

                1.不是0均值的

5. ELU(Exponential Linear Units):

 函数图像及导函数图像:

        

        优点:

                1.解决了Relu的deadly relu问题

                2. 是0均值的

        缺点:

                1.使用了指数运算,计算耗时 

        其中leaky Relu的参数人工设定,P Relu的参数是可学习的,而Random Relu中的参数在训练时随机抽取,而在测试时是固定的。

6. maxout

        

主要思想:

        类似于池化层,其中有k组w和b,k是一个人工设定的参数,相当于做了k个不同的线性变换得到k中feature map,然后做最大池化。

7. Selu:扩展型指数线性激活函数

        函数图像:

        导函数及其图像: (0, lambda * alpha)

         其中: lambda = 1.05, alpha=1.673

         优点:

                1.输出是自归一化的, 因此收敛更快

                2. 不会出现梯度消失和梯度爆炸的问题

             缺点:

                    1. 指数运算,计算耗时

                     2.  在CNN和RNN中目前用的还是较少,具体怎么更好地应用效果仍然值得研究        

8. Gelu:高斯误差线性单元激活函数

        

 优点:

        1. 不会出现梯度消失问题

        2. 引入了随机正则(依据输入数据的概率分布)

 具体函数的由来:

        对于一个输入x,它服从于标准正态分布N(0,1), 然后乘一个伯努利分布。得到:

逼近后即为上式的数值函数。

函数思想是:

        类似于dropout,将输入较小的值认为是不重要的额,因此倾向于将其归整为0。 

注: Gelu用于transformer、bert和gpt中,是目前最好的激活函数。



这篇关于激活函数篇(整理自网上的资源,侵删)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程