激活函数的作用

可以想象,如果没有激活函数,下一层的输入总是上一层的输出,无论多少层网络,都是线性函数,线性函数的逼近能力是非常有限的,无法拟合现实中这些没有规律的非线性复杂函数。举个例子:



个人理解为把有规律线性函数用激活函数扭曲,层数越深扭曲次数越多,经过深层网络的扭曲之后,鬼知道是个什么函数,剩下的交给反向传播自己训练去把。

各种激活函数

1.Sigmoid激活函数:


缺点:1.在深度神经网络中梯度反向传递时导致梯度消失,Sigmoid函数的导数如下:
每传递一层梯度值都会减小为原来的0.25倍,如果神经网络隐层特别多,那么梯度在穿过多层后将变得非常小接近于0,即出现梯度消失现象;


2.tanh激活函数


求导图像:

它解决了Sigmoid函数的不是0均值输出问题,然而,梯度消失的问题和幂运算的问题仍然存在。梯度消失问题相对于sigmoid要有所缓解。

3.Relu激活函数
f(x) = x if x>0
0 if x<=0

求导如图:

ReLU虽然简单,但却是近几年的重要成果,有以下几大优点:
1) 解决了梯度消失问题 (在正区间)
2)计算速度非常快,只需要判断输入是否大于0
3)收敛速度远快于sigmoid和tanh

ReLU也有几个需要特别注意的问题:
1)ReLU的输出不是0均值
2)Dead ReLU Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。有两个主要原因可能导致这种情况产生: (1) 非常不幸的参数初始化,这种情况比较少见(w都是负的) (2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。

对于(2)解释:
假设有一个神经网络的输入W遵循某种分布,对于一组固定的参数(样本),w的分布也就是ReLU的输入的分布。假设ReLU输入是一个低方差中心在+0.1的高斯分布。

在这个场景下:

大多数ReLU的输入是正数,因此
大多数输入经过ReLU函数能得到一个正值(ReLU is open),因此
大多数输入能够反向传播通过ReLU得到一个梯度,因此
ReLU的输入(w)一般都能得到更新通过随机反向传播(SGD)
现在,假设在随机反向传播的过程中,有一个巨大的梯度经过ReLU,由于ReLU是打开的,将会有一个巨大的梯度传给输入(w)。这会引起输入w巨大的变化,也就是说输入w的分布会发生变化,假设输入w的分布现在变成了一个低方差的,中心在-0.1高斯分布。

在这个场景下:

大多数ReLU的输入是负数,因此
大多数输入经过ReLU函数能得到一个0(ReLU is close),因此
大多数输入不能反向传播通过ReLU得到一个梯度,因此
ReLU的输入w一般都得不到更新通过随机反向传播(SGD)
发生了什么?只是ReLU函数的输入的分布函数发生了很小的改变(-0.2的改变),导致了ReLU函数行为质的改变。我们越过了0这个边界,ReLU函数几乎永久的关闭了。更重要的是ReLU函数一旦关闭,参数w就得不到更新,这就是所谓的‘dying ReLU’

尽管存在这两个问题,ReLU目前仍是最常用的activation function,在搭建人工神经网络的时候推荐优先尝试!

4.Leaky Relu激活函数


理论上来讲,Leaky ReLU有ReLU的所有优点,外加不会有Dead ReLU问题,但是在实际操作当中,并没有完全证明Leaky ReLU总是好于ReLU。

5.PRelu激活函数 (参数化修正线性单元)
和leaky relu类似 , 只不过在x<0时,a这个系数不是固定不变的,是根据数据来定的,是可学习的。


6.R-relu激活函数(参数化修正线性单元)

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

7.elu激活函数

可以看做是介于relu和LeakyReLU之间的一个东西。不会有Dead ReLU问题,输出的均值接近0。当然,这个函数也需要计算exp,从而计算量上更大一些。

还有些不常见的等到遇到再补充把。

参考链接:
https://www.jianshu.com/p/d49905dee072
https://blog.csdn.net/qq_23304241/article/details/80300149
https://blog.csdn.net/tyhj_sf/article/details/79932893
https://blog.csdn.net/m0_37870649/article/details/79782143
https://blog.csdn.net/disiwei1012/article/details/79204243

通俗理解激活函数作用和常见激活函数总结:sigmoid、tanh、relu、Leaky-relu、P-relu、R-Relu、elu相关推荐

  1. 【深度学习】激活函数:原理+常见激活函数(Sigmoid\Tanh\ReLU\Leaky ReLU\Softmax)

    首先需要知道为什么要引入激活函数:激活函数是用来加入非线性因素的,因为线性模型的表达能力不够.引入非线性激活函数,可使深层神经网络的表达能力更加强大. 在深度学习中,线性模型只需要简单的全连接层就能实 ...

  2. 【干货】通俗理解神经网络中激活函数作用

    推荐阅读时间8min~13min 主要内容:通俗理解激活函数,主要来自我在学习会的slides,讲解了激活函数的非线性能力和组合特征的作用 下面我分别对激活函数的两个作用进行解释. 1 加入非线性因素 ...

  3. 理解激活函数作用,看这篇文章就够了!

    转自微信公众号: 机器学习算法与自然语言处理 查阅资料和学习,大家对神经网络中激活函数的作用主要集中下面这个观点: 激活函数作用 激活函数是用来加入非线性因素的,解决线性模型所不能解决的问题. 下面我 ...

  4. 激活函数(Activation Function)及十大常见激活函数

    目录 1 激活函数的概念和作用 1.1 激活函数的概念 1.2 激活函数的作用 1.3 通俗地理解一下激活函数(图文结合) 1.3.1 无激活函数的神经网络 1.3.2 带激活函数的神经网络 2 神经 ...

  5. 深度学习之常见激活函数-Sigmoid、Tanh、ReLu、softplus、softmax、ELU、PReLU

    一.常见激活函数总结 激活函数: 就是在神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端. 常见的激活函数包括 Sigmoid TanHyperbolic(tanh) ReLu softp ...

  6. 深入理解深度学习中的激活函数

    1. 什么是激活函数? 生物神经网络是人工神经网络的起源.然而,人工神经网络(ANNs)的工作机制与大脑的工作机制并不是十分的相似.不过在我们了解为什么把激活函数应用在人工神经网络中之前,了解一下激活 ...

  7. sigmoid函数解决溢出_常见激活函数优缺点与dead relu problem

    转载自: G-kdom:温故知新--激活函数及其各自的优缺点​zhuanlan.zhihu.com 1.什么是激活函数? 所谓激活函数(Activation Function),就是在人工神经网络的神 ...

  8. 多层感知器及常见激活函数-深度神经网络DNN及计算推导

    多层感知器 在之前的博客中,我们了解到,感知器(指单层感知器)具有一定的局限--无法解决异或问题,即线性不可分的问题. 将多个单层感知器进行组合,就可以得到一个多层感知器(MLP--Multi-Lay ...

  9. 整理Sigmoid~Dice常见激活函数,从原理到实现

    本文首发于我的个人博客: 激活函数:https://fuhailin.github.io/activation-functions/ 并同步于我的公众号:赵大寳Note(ID:StateOfTheAr ...

  10. 常见激活函数及其求导相关知识

    文章目录 Sigmoid函数 Sigmoid函数介绍 Sigmoid函数求导 tanh 函数 tanh 函数介绍 tanh 函数求导 Relu函数 Relu函数介绍 Relu函数求导 Softmax函 ...

最新文章

  1. SAP RETAIL供应商寄售库存跨公司转移后的库存状况
  2. TCP/IP详解--第十一章
  3. 0362计算机应用基础在线考试,0362《计算机应用基础》(本科)2017年6月期末考试指导.doc...
  4. C++以字符串形式返回第N个斐波那契的算法(附完整源码)
  5. (C++版)链表(一)——实现单向链表创建、插入、删除等相关操作
  6. 无法添加 WebEx 扩展插件。请重试。
  7. 蓝桥杯 基础练习 数列排序
  8. Android开发笔记(五十)定时器AlarmManager
  9. APIView和View的区别
  10. 后疫情时代,初创企业生存之策
  11. 16. go get
  12. 升45武器并不一定大黑铁 自然+13的飞魂 (传奇3G)
  13. comsol光学仿真02
  14. 关于BOM表的一些事
  15. 闭关之 Vulkan 应用开发指南笔记(三): 着色器和管线、图形管线
  16. 技术债治理的三条原则
  17. mysql报错1593_主从复制报1593错误的处理
  18. 手机中必备的黑科技App,个个好用至极,现在的你一定需要 1
  19. Tekton 的供应链安全工具 Chains
  20. 如何判断计算机硬盘坏,电脑硬盘坏了会出现什么情况?怎么判断电脑是不是硬盘坏了...

热门文章

  1. 【ArcGIS|空间分析】数据采集处理(全国大学生GIS技能大赛试题)
  2. Android ViewFilpper实现分页效果
  3. 当Java枚举遇到位掩码,还能这么玩?
  4. 通过一个工具类更深入理解动态代理和Threadlocal
  5. android内存泄漏MAT,利用Android Studio、MAT对Android进行内存泄漏检测
  6. flex布局 占满_果冻公开课第九课:打破传统布局方式的flex(上)
  7. java跨平台_Java如何实现跨平台
  8. matlab语音去噪_如何使用XAudioPro对音频去噪
  9. 手机c语言有趣的小程序,一个有趣的小程序
  10. java socket聊天_java_基于Java Socket实现一个简易在线聊天功能(一),最近做了一个项目,其中有一 - phpStudy...