激活函数:Sigmoid,Tanh,Softmax,Swish,Relu系列,GLU+GTU

激活函数又称“非线性映射函数”,是深度卷积神经网络中不可或缺的模块。可以说,深度网络模型强大的表示能力大部分便是由激活函数的非线性单元带来的。激活函数是网络中非线性的来源,去除了该部分之后网络就只剩下线性运算部分,而且线性运算的组合叠加也是线性的,最后得到的结果模型等价于单层的线性模型。为了能够适用于复杂的情况,需要在网络中引入非线性单元。

1、Sigmoid(Logistic)函数

sigmoid函数的定义:

sigmoid函数的输出被限制在[0,1]之间,单调连续,并且根据其定义容易求导;0 对应生物神经元的“抑制状态”,1则恰好对应了“兴奋状态”。但对于sigmoid函数两端大于5(或小于-5)的区域,这部分输出会被压缩到1或0。这样的处理会带来梯度的饱和效应(软饱和性)。

根据simoid型函数梯度图,大于5或者小于-5部分梯度接近0。这会导致在误差反向传播过程中导数处于该区域的误差很难甚至无法传递至前层,进而导致整个网络无法训练。并且sigmoid型激活函数值域的均值并非为0,不是以0为中心的, 而是全部为正,这样的结果会导致经过sigmoid后的输出均大于0,使得下一层的输入是非0均值

2、Tanh函数

tanh函数的定义:

tanh函数又称双曲正切函数,是在sigmoid型函数基础上为解决均值问题提出的。函数的取值范围为[-1,1],输出相应的均值为0。tanh在特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果。但是tanh函数仍为sigmoid型函数,使用tanh依然会发生梯度饱和现象。

与 sigmoid 的区别是,tanh 是 0 均值的,因此实际应用中 tanh 会比 sigmoid 更好。tanh的梯度相比较sigmoid更加陡峭。我们选择sigmoid还是tanh是根据问题中对梯度的要求而定的。

3、Softmax函数

softmax是另一种sigmoid函数,但是它是在分类中比较容易控制的一种激活函数。sigmoid只能处理两类的问题。softmax将输出结果压缩在0-1之间,并依据输出的总和来分类。softmax在输出层中使用是比较完美的,用来获得输入数据对应的类别的各种概率。softmax形式如下:

假设我们的一个输出结果是[1.2,0.9,0.75],当我们使用了softmax之后,这个值变成了[0.42, 0.31, 0.27],我们可以使用这些概率当做每一类的概率。

笼统解释:二分类情况一般使用sigmoid激活,多分类情形一般使用softmax进行激活

4、Swish函数

swish函数的定义:

该函数是Google大脑团队提出的一个新的激活函数。从图像上来看,swish函数跟reLu差不多,唯一区别较大的是接近于0的负半轴区域。swish函数跟facebook提出的GLU激活函数也是类似的。

5、Relu系列函数(Rectified Linear Unit)

(1)relu函数

relu函数的定义:

relu(z) = max(z, 0)

修正线性单元relu实际上是一个分段函数,梯度在 x >= 0 为 1, 反之为 0。x >= 0时 完全消除了sigmoid函数的饱和效应;x<0时输出0,神经元不会被激活,意味着同一时间只有部分神经元会被激活,从而使得网络很稀疏,对计算来说非常有效率。计算复杂度上relu也相对sigmoid和tanh更为简单。实验中还发现relu函数有助于随机梯度下降方法收敛,收敛速度快6倍左右。但是仍然有缺陷。

在x<0时,梯度为0,这部分卷积结果响应一旦变为负值将无法影响网络训练,这种现象叫死区。如果学习率较大,会发现40%的死区。如果有一个合适的学习率,死区会大大减少。

(2)Leaky Relu函数

leaky relu函数的定义:

泄漏修正线性单元leaky relu为了缓解死区,将Relu函数中x<0那部分进行调整。其中α为0.01 或者 0.001数量级的较小正数。可以发现relu实际上是leaky relu的一种特例。

leaky relu存在的问题就是α是一个超参数,合适的值难设定并且较为敏感。因此leaky relu函数在实际使用上性能不是特别稳定。

(3)PRelu函数

prelu函数的定义:

参数化修正线性单元prelu解决了leaky relu超参数α难设定的问题,直接将α也作为一个网络可以学习的变量融入模型的整体训练过程。在求解prelu的过程中,仍然采用传统的误差反向传播和随机梯度下降,对于α的更新遵循链式法则。

实验证明,使用prelu作为激活函数的网络优于原始relu网络。同时自由度较大的各通道独享参数的prelu性能更优。

(4)RRelu函数

rrelu函数的定义:

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

(5)ELU函数

elu函数的定义:

指数化线性单元elu,在取值小于0的部分使用指数。elu具备relu的优点,同时elu也解决了relu函数自身“死区”问题。不过elu函数指数操作稍稍加大了工作量,实际计算中elu中超参数α一般设置为1。

(6)SELU函数

缩放指数型线性单元selu就是对elu加上一个缩放因子λ。

6、GLU函数+GTU函数

GLU、GTU 单元是基于Gate mechanism的,gate units有助于深度网络建模。

Tanh激活函数和GTU都存在梯度消失的问题,因为即使是GTU,当神经元的激活处于饱和区时,组成结构部分都会削弱梯度值。相反,GLU和Relu不存在这样的问题。GLU和Relu都拥有线性的通道,可以使梯度很容易通过激活的神经元,反向传播且不会减小。因此,采用GLU或Relu做为激活,训练时收敛速度更快

(1)GTU(Gated Tanh Unit)

表达式为:f(X) = tanh(X*W+b) * O(X*V+c)

组成结构:Tanh激活单元:tanh(X*W+b),加上一个Sigmoid激活单元:O(X*V+c),构成的gate unit,就构成了GTU单元。

(2)GLU(Gated Liner Unit)

表达式为:f(X) = (X * W + b) * O(X * V + c)

组成结构:Relu激活单元:(X * W + b),加上一个Sigmoid激活单元:O(X * V + c),构成的gate unit,就构成了GLU单元。

根据函数的特征,总结规律,使得网络更加容易且更快的收敛:

1. Sigmoid函数以及它们的联合通常在分类器的中有更好的效果 
2. 由于梯度崩塌的问题,在某些时候需要避免使用Sigmoid和Tanh激活函数 
3. ReLU函数是一种常见的激活函数,在目前使用是最多的 
4. 如果遇到了一些死的神经元,我们可以使用Leaky ReLU函数 
5. ReLU永远只在隐藏层中使用 
6. 根据经验,一般可以从ReLU激活函数开始,但是如果ReLU不能很好的解决问题,再去尝试其他的激活函数 
7. 如果使用 ReLU,要小心设置 learning rate,不要让网络出现很多 “dead” 神经元,如果不好解决,可以试试 Leaky ReLU、PReLU 或者 Maxout

激活函数整理

[深度学习] 激活函数

0_3-激活函数的反向传播-ReLU、LeakyReLU、PReLU、ELU、SELU

<深度学习优化策略-4> 基于Gate Mechanism的激活单元GTU、GLU

激活函数:Sigmoid,Tanh,Softmax,Swish,Relu系列,GLU+GTU相关推荐

  1. ML/DL之激活函数/求导函数:ML中常用的AF激活函数(step_function、sigmoid、softmax、ReLU等)求导函数等代码实现之详细攻略

    ML/DL之激活函数/求导函数:ML中常用的AF激活函数(step_function.sigmoid.softmax.ReLU等)&求导函数等代码实现之详细攻略 目录 AF函数&求导函 ...

  2. 三种激活函数——Sigmoid,Tanh, ReLU以及卷积感受野的计算

    1. 三种激活函数--Sigmoid, Tanh, ReLU 1.1 Sigmoid 1.1.1 公式 S ( x ) = 1 1 + e − x S(x) = \frac{1}{1 + e^{-x} ...

  3. DL之AF:机器学习/深度学习中常用的激活函数(sigmoid、softmax等)简介、应用、计算图实现、代码实现详细攻略

    DL之AF:机器学习/深度学习中常用的激活函数(sigmoid.softmax等)简介.应用.计算图实现.代码实现详细攻略 目录 激活函数(Activation functions)相关配图 各个激活 ...

  4. 【Pytorch神经网络理论篇】 07 激活函数+Sigmoid+tanh+ReLU+Swish+Mish+GELU

    ①激活函数:主要通过加入非线性因素,你不线性模型表达能力不足的缺陷,因为神经网络中的数学基础是处处可微分的函数,故要求激活函数也应该保证数据的输入与输出是可微分. ②激活函数可以分为饱和激活函数与不饱 ...

  5. ReLU,Sigmoid,Tanh,softmax,pipeline【基础知识总结】

    一.ReLU(Rectified Linear Activation Function) 1.优点 2.缺点 3.补充 1.Leaky ReLUs 2.参数化修正线性单元(PReLU) 3.随机纠正线 ...

  6. 激活函数-Sigmoid, Tanh及ReLU

    什么是激活函数 在神经网络中,我们会对所有的输入进行加权求和,之后我们会在对结果施加一个函数,这个函数就是我们所说的激活函数.如下图所示. 为什么使用激活函数 我们使用激活函数并不是真的激活什么,这只 ...

  7. 激活函数--Sigmoid,tanh,RELU,RELU6,Mish,Leaky ReLU等

    激活函数 目前自己使用比较多的激活函数RELU, RELU6; LeakyReLU; SELU; Mish :激活函数看:计算量:准确率: 大多数激活函数pytorch里有已经包装好了: Non-li ...

  8. 神经网络激活函数sigmoid relu tanh 为什么sigmoid 容易梯度消失

    什么是激活函数 为什么要用 都有什么 sigmoid ,ReLU, softmax 的比较 如何选择 1. 什么是激活函数 如下图,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函 ...

  9. A.深度学习基础入门篇[四]:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等

    [深度学习入门到进阶]必看系列,含激活函数.优化策略.损失函数.模型调优.归一化算法.卷积模型.序列模型.预训练模型.对抗神经网络等 专栏详细介绍:[深度学习入门到进阶]必看系列,含激活函数.优化策略 ...

最新文章

  1. 带你彻彻底底搞懂朴素贝叶斯公式
  2. 安全专家十年磨一剑的独门秘笈,威力堪比《九阴真经》
  3. Windows下基于python3使用word2vec训练中文维基百科语料(一)
  4. Lock free queue 大比拼
  5. 力扣高频算法php_互联网公司最常见的面试算法题有哪些?
  6. Linux+Jenkins自动构建服务器包
  7. SAP API Business Hub 上测试 API 的一些常见问题
  8. customizing download debug - extraction in ERP
  9. 减速箱箱体尺寸是怎样计算的_减速箱的结构和工作原理
  10. 【java】 从hotspot底层对象结构理解锁膨胀升级过程
  11. 1075 - Incorrect table definition;there can be only one auto column and it must be defined as a key
  12. 计算机网络知识点1——概述
  13. 统计矩形中的正方形和长方形
  14. Powershell添加英文输入法
  15. java 实现 微博_java实现的新浪微博分享代码实例
  16. 初识Continuation
  17. 正则匹配 正则表达式在线工具
  18. 解决vue google无状态播放音频文件
  19. 【操作系统】判断题汇总大全
  20. 手游测试人才稀缺,兼容性问题突出

热门文章

  1. Rust地图下载、Rust服务器地图下载教程、腐蚀地图下载攻略
  2. sqli-labs通关攻略23-37[Advanced Injections]
  3. android 录音的格式转换,Android仿微信录音功能(录音后的raw文件转mp3文件)
  4. php欢迎界面代码,分享微信小程序欢迎界面开发的实例代码
  5. 3款大屏播放软件,用法很详细,用于大屏幕播放视频和图片
  6. CSDN每日一练合集
  7. 生日快乐的代码_贺渝同学生日快乐!
  8. 提交apk到小米应用商店,monkey测试未通过被拒
  9. XSS Game通关教程
  10. 图片怎么转PDF文件?免费图片转PDF方法推荐