常见激活函数持续更新)sigmoid Tanh Relu Leaky-ReLU RReLU

常见激活函数持续更新)sigmoid Tanh Relu Leaky-ReLU RReLU,第1张

 激活函数是来向神经网络中引入非线性因素的,通过激活函数,神经网络就可以拟合各种曲线。

sigmoid

公式:

函数图像:

 Sigmoid函数也叫 Logistic 函数,用于隐层神经元输出,取值范围为(0,1)。它可以将一个实数映射到(0,1)的区间,可以用来做二分类。在特征相差比较复杂或是相差不是特别大时效果比较好。

存在的问题:
  1)sigmoid函数饱和使梯度消失(Sigmoidsaturate and kill gradients)。我们从导函数图像中可以看出sigmoid的导数都是小于0.25的,那么在进行反向传播的时候,梯度相乘结果会慢慢的趋*于0。这样,几乎就没有梯度信号通过神经元传递到前面层的梯度更新中,因此这时前面层的权值几乎没有更新,这就叫梯度消失。除此之外,为了防止饱和,必须对于权重矩阵的初始化特别留意。如果初始化权重过大,可能很多神经元得到一个比较小的梯度,致使神经元不能很好的更新权重提前饱和,神经网络就几乎不学习。
  
  2)sigmoid函数输出不是“零为中心”(zero-centered)。一个多层的sigmoid神经网络,如果你的输入x都是正数,那么在反向传播中w的梯度传播到网络的某一处时,权值的变化是要么全正要么全负。
  
  3)指数函数的计算是比较消耗计算资源的。其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间。

Tanh

公式:

函数图像:

 红色为Tanh的函数图像,蓝色为Tanh的导函数图像。
另外一组函数图像:

 tanh是“零为中心”的。因此,实际应用中,tanh会比sigmoid更好一些。但是在饱和神经元的情况下,tanh还是没有解决梯度消失问题。

优点:

  • tanh解决了sigmoid的输出非“零为中心”的问题

缺点:

  • 依然有sigmoid函数过饱和的问题。
  • 依然进行的是指数运算。
线性整流函数(Relu)

公式:

函数图像:

优点:

  1. ReLU解决了梯度消失的问题,至少x在正区间内,神经元不会饱和;
  2. 由于ReLU线性、非饱和的形式,在SGD中能够快速收敛;
  3. 算速度要快很多。ReLU函数只有线性关系,不需要指数计算,不管在前向传播还是反向传播,计算速度都比sigmoid和tanh快。

缺点:

  1. ReLU的输出不是“零为中心”(Notzero-centered output)。
  2. 坏死问题——当输入接近零或为负时,函数的梯度变为零,网络无法执行反向传播,也无法学习。

总结:
 训练神经网络的时候,一旦学习率没有设置好,第一次更新权重的时候,输入是负值,那么这个含有ReLU的神经节点就会死亡,再也不会被激活。因为:ReLU的导数在x>0的时候是1,在x<=0的时候是0。如果x<=0,那么ReLU的输出是0,那么反向传播中梯度也是0,权重就不会被更新,导致神经元不再学习。也就是说,这个ReLU激活函数在训练中将不可逆转的死亡,导致了训练数据多样化的丢失。在实际训练中,如果学习率设置的太高,可能会发现网络中40%的神经元都会死掉,且在整个训练集中这些神经元都不会被激活。所以,设置一个合适的较小的学习率,会降低这种情况的发生。所以必须设置一个合理的学习率。为了解决神经元节点死亡的情况,有人提出了Leaky ReLU、P-ReLu、R-ReLU、ELU等激活函数。

带泄露线性整流函数(Leaky ReLU)

公式:

函数图像:

优点:

  1. 神经元不会出现死亡的情况。
  2. 对于所有的输入,不管是大于等于0还是小于0,神经元不会饱和。
  3. 由于Leaky ReLU线性、非饱和的形式,在SGD中能够快速收敛。
  4. 计算速度要快很多。Leaky ReLU函数只有线性关系,不需要指数计算,不管在前向传播还是反向传播,计算速度都比sigmoid和tanh快。

缺点:

  1. Leaky ReLU函数中的α,需要通过先验知识人工赋值。

总结:
  Leaky ReLU很好的解决了“dead ReLU”的问题。因为Leaky ReLU保留了x小于0时的梯度,在x小于0时,不会出现神经元死亡的问题。对于Leaky ReLU给出了一个很小的负数梯度值α,这个值是很小的常数。比如:0.01。这样即修正了数据分布,又保留了一些负轴的值,使得负轴信息不会全部丢失。但是这个α通常是通过先验知识人工赋值的。

带泄露随机线性整流函数(RReLU)

公式:

函数图像:

 RReLU的核心思想是,在训练过程中,α是从一个高斯分布U(l,u)中随机出来的值,然后再在测试过程中进行修正。在测试阶段,把训练过程中所有的aji取个*均值。
特点:
(1)RReLU是Leaky ReLU的random版本,在训练过程中,α是从一个高斯分布中随机出来的,然后再测试过程中进行修正。

(2)数学形式与PReLU类似,但RReLU是一种非确定性激活函数,其参数是随机的

参考:https://www.cnblogs.com/liuxiaochong/p/13469646.html
https://www.bilibili.com/read/mobile?id=13953521
https://blog.csdn.net/GrayOnDream/article/details/102955297

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/742713.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存