转自:https://blog.csdn.net/NOT_GUY/article/details/78749509

在深度学习中,信号从一个神经元传入到下一层神经元之前是通过线性叠加来计算的,而进入下一层神经元需要经过非线性的激活函数,继续往下传递,如此循环下去。由于这些非线性函数的反复叠加,才使得神经网络有足够的capacity来抓取复杂的特征。

为什么要使用非线性激活函数?

答:如果不使用激活函数,这种情况下每一层输出都是上一层输入的线性函数。无论神经网络有多少层,输出都是输入的线性函数,这样就和只有一个隐藏层的效果是一样的。这种情况相当于多层感知机(MLP)。

1、Sigmoid函数

优点:(1)便于求导的平滑函数;

(2)能压缩数据,保证数据幅度不会有问题;

(3)适合用于前向传播。

缺点:(1)容易出现梯度消失(gradient  vanishing)的现象:当激活函数接近饱和区时,变化太缓慢,导数接近0,根据后向传递的数学依据是微积分求导的链式法则,当前导数需要之前各层导数的乘积,几个比较小的数相乘,导数结果很接近0,从而无法完成深层网络的训练。

(2)Sigmoid的输出不是0均值(zero-centered)的:这会导致后层的神经元的输入是非0均值的信号,这会对梯度产生影响。以 f=sigmoid(wx+b)为例, 假设输入均为正数(或负数),那么对w的导数总是正数(或负数),这样在反向传播过程中要么都往正方向更新,要么都往负方向更新,导致有一种捆绑效果,使得收敛缓慢。

(3)幂运算相对耗时

2、tanh函数

tanh函数将输入值压缩到 -1~1 的范围,因此它是0均值的,解决了Sigmoid函数的非zero-centered问题,但是它也存在梯度消失和幂运算的问题。

其实 tanh(x)=2sigmoid(2x)-1

3、ReLU函数:全区间不可导

优点:(1)SGD算法的收敛速度比 sigmoid 和 tanh 快;(梯度不会饱和,解决了梯度消失问题)

(2)计算复杂度低,不需要进行指数运算;

(3)适合用于后向传播。

缺点:(1)ReLU的输出不是zero-centered;

(2)Dead  ReLU  Problem(神经元坏死现象):某些神经元可能永远不会被激活,导致相应参数永远不会被更新(在负数部分,梯度为0)。产生这种现象的两个原因:参数初始化问题;learning  rate太高导致在训练过程中参数更新太大。 解决方法:采用Xavier初始化方法,以及避免将learning  rate设置太大或使用adagrad等自动调节learning  rate的算法。

(3)ReLU不会对数据做幅度压缩,所以数据的幅度会随着模型层数的增加不断扩张。

4、Leakly  ReLU函数

用来解决ReLU带来的神经元坏死的问题,可以将0.01设置成一个变量a,其中a由后向传播学出来。但是其表现并不一定比ReLU好。

5、ELU函数(指数线性函数)

ELU有ReLU的所有优点,并且不会有 Dead  ReLU问题,输出的均值接近0(zero-centered)。但是计算量大,其表现并不一定比ReLU好。。

深度学习中各激活函数的优缺点相关推荐

  1. Homepage Machine Learning Algorithm 浅谈深度学习中的激活函数 - The Activation Function in Deep Learning

    原文地址:http://www.cnblogs.com/rgvb178/p/6055213.html 版权声明:本文为博主原创文章,未经博主允许不得转载. 激活函数的作用 首先,激活函数不是真的要去激 ...

  2. 浅谈深度学习中的激活函数 - The Activation Function in Deep Learning

    原文地址:http://www.cnblogs.com/rgvb178/p/6055213.html 版权声明:本文为博主原创文章,未经博主允许不得转载. 激活函数的作用 首先,激活函数不是真的要去激 ...

  3. Keras深度学习实战(4)——深度学习中常用激活函数和损失函数详解

    Keras深度学习实战(4)--深度学习中常用激活函数和损失函数详解 常用激活函数 Sigmoid 激活函数 Tanh 激活函数 ReLU 激活函数 线性激活函数 Softmax 激活函数 损失函数 ...

  4. 深度学习中的激活函数与梯度消失

    转载请注明出处:http://www.cnblogs.com/willnote/p/6912798.html 前言 深度学习的基本原理是基于人工神经网络,信号从一个神经元进入,经过非线性的激活函数,传 ...

  5. 深度学习中的激活函数(一)

    一.激活函数的意义: 先简单介绍一下什么是激活函数~ 单一神经元模型如下图所示: 神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输 ...

  6. 干货丨 一文概览深度学习中的激活函数

    文章来源:机器之心 本文从激活函数的背景知识开始介绍,重点讲解了不同类型的非线性激活函数:Sigmoid.Tanh.ReLU.LReLU.PReLU.Swish,并详细介绍了这些函数的优缺点. 本文介 ...

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

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

  8. 浅谈深度学习中的激活函数

    原址 激活函数的作用 首先,激活函数不是真的要去激活什么.在神经网络中,激活函数的作用是能够给神经网络加入一些非线性因素,使得神经网络可以更好地解决较为复杂的问题. 比如在下面的这个问题中: 如上图( ...

  9. softmax激活函数_深度学习中的激活函数,从softmax到sparsemax数学证明

    softmax激活函数 The objective of this post is three-fold. The first part discusses the motivation behind ...

最新文章

  1. jar/war/ear文件的区别
  2. python range函数怎么表示无限_python range函数怎么用
  3. 2019数据库趋势报告,最受欢迎的是MySQL
  4. c++ enum 给定类型_C++ 枚举类型详解
  5. Blog Contents
  6. 语文学科html代码,[2018年最新整理]学科分类与代码.doc
  7. XenCenter导出和导入模板
  8. java 人物头像识别
  9. Bootstrap优秀模板-INSPINIA.2.9.2
  10. java五子棋源代码_Java五子棋源码-Java五子棋源代码下载-西西软件下载
  11. 修改win10服务器登录密码,玩转Win10密码基础篇:设置修改系统登录密码
  12. android 标准时间格式,android开发中关于含有中文字段的格林尼治标准时间的时间格式转换...
  13. OLED(1)与LDC区别
  14. day20 网络编程(上)
  15. 钉钉考勤与企业系统对接
  16. 外包公司值不值得去?外包公司的面试特点
  17. 将多个sheet页拆分成多个单独的excel
  18. 设置删除命令别名--用Enki学Linux系列(10)
  19. 机器学习之k-means算法详解
  20. 居家学习:新冠肺炎疫情下中国高校基于直播的远程教育体验的混合方法分析

热门文章

  1. burp爆破线程设置多少_多线程到底需要设置多少个线程?
  2. 知乎大神深入解析:单片机晶振脚原理是什么?
  3. 矫情这一次,感谢这几个人。
  4. java 监听客户端的退出_Java ServerSocket 手动关闭监听
  5. java 死锁种类_用java写一个死锁
  6. 怎么读取mysql库绘制柱状图_从数据库中取出最近三十天的数据并生成柱状图
  7. python调用ping命令_Windows 中通过Python实现ping命令加时间戳
  8. java二叉查找算法_Java手写二叉搜索树算法
  9. python sort 多级排序_Python使用sort和class实现的多级排序功能示例
  10. arcgis python脚本筛选与线共边的面_ArcGis Python脚本——遍历输出面或折线要素的折点坐标...