深度学习常用激活函数总结

发布时间:2021-06-12  栏目:人工智能, 机器视觉, 深度学习, 自然语言处理  评论:0 Comments

  • Sigmoid
  • tanh
  • ReLU
  • LeakyReLU, PReLU(Parametric Relu), RReLU
  • maxout
  • Softsign
  • sigmoid 加权线性单元 (SiLU)
  • silu的导数函数 (dSiLU)

 

  1. 神经网络为什么需要激活函数:首先数据的分布绝大多数是非线性的,而一般神经网络的计算是线性的,引入激活函数,是在神经网络中引入非线性,强化网络的学习能力。所以激活函数的最大特点就是非线性。
  2. 不同的激活函数,根据其特点,应用也不同。Sigmoid和tanh的特点是将输出限制在(0,1)和(-1,1)之间,说明Sigmoid和tanh适合做概率值的处理,例如LSTM中的各种门;而ReLU就不行,因为ReLU无最大值限制,可能会出现很大值。同样,根据ReLU的特征,Relu适合用于深层网络的训练,而Sigmoid和tanh则不行,因为它们会出现梯度消失。

 

Relu

优点:

  1. 使用ReLU的SGD算法的收敛速度比 sigmoid 和 tanh 快。

2. 在x>0区域上,不会出现梯度饱和、梯度消失的问题。

3. 计算复杂度低,不需要进行指数运算,只要一个阈值就可以得到**值。

缺点:

  1. ReLU的输出不是0均值的。

2. Dead ReLU Problem(神经元坏死现象):ReLU在负数区域被kill的现象叫做dead relu。ReLU在训练的时很“脆弱”。在x<0时,梯度为0。这个神经元及之后的神经元梯度永远为0,不再对任何数据有所响应,导致相应参数永远不会被更新。

产生这种现象的两个原因:参数初始化问题;learning rate太高导致在训练过程中参数更新太大。

解决方法:采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。

 

 

为了防止模型的‘Dead’情况,后人将x<0部分并没有直接置为0,而是给了一个很小的负数梯度值[公式]

Leaky ReLU中的[公式]为常数,一般设置 0.01。这个函数通常比 Relu 激活函数效果要好,但是效果不是很稳定,所以在实际中 Leaky ReLu 使用的并不多。

PRelu(参数化修正线性单元) 中的[公式]作为一个可学习的参数,会在训练的过程中进行更新。

RReLU(随机纠正线性单元)也是Leaky ReLU的一个变体。在RReLU中,负值的斜率在训练中是随机的,在之后的测试中就变成了固定的了。RReLU的亮点在于,在训练环节中,aji是从一个均匀的分布U(I,u)中随机抽取的数值。

 

 

softsign

类似于tanh函数,但是表达式不同

 

参考:

https://zhuanlan.zhihu.com/p/73214810

https://blog.csdn.net/qq_29831163/article/details/89887655

留下评论

You must be logged in to post a comment.

相册集

pix pix pix pix pix pix

关于自己

杨文龙,微软Principal Engineering Manager, 曾在各家公司担任影像技术资深总监、数据科学团队资深经理、ADAS算法总监、资深深度学习工程师等职位,热爱创新发明,专注于人工智能、深度学习、图像处理、机器学习、算法、自然语言处理及软件等领域,目前发明有国际专利19篇,中国专利28篇。

联系我

个人技术笔记

welonshen@gmail.com

2015 in Shanghai