目录

  • 1. 什么是激活函数
  • 2. 激活函数作用
  • 3. 常见的几种激活函数
  • 3.1 Sigmoid激活函数
  • 3.2 step function(阶跃函数)
  • 3.3 Tanh(双曲正切函数)激活函数
  • 3.4 ReLU函数
  • 3.5 Leaky ReLU函数(PReLU)
  • 3.6 ELU (Exponential Linear Units) 函数
  • 4. 如何选择合适的激活函数
  • 参考资料:

1. 什么是激活函数

f(z)函数会把输入信号的总和转换为输出信号,这种函数一般称为激活函数。如下图:

简化后:

2. 激活函数作用

如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机。
如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。
没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。

3. 常见的几种激活函数

3.1 Sigmoid激活函数

数学表达式如下:e约等于2.7182

函数图像如下:

优点:
把输入的连续实值变换为0和1之间的输出;平滑、容易求导。

缺点:

  1. 在深度神经网络中梯度反向传递时导致梯度爆炸梯度消失,其中梯度爆炸发生的概率非常小,而梯度消失发生的概率比较大。函数导数的图像如下:

如果我们初始化神经网络的权值为[0,1]之间的随机值,由反向传播算法的数学推导可知,梯度从后向前传播时,每传递一层梯度值都会减小为原来的0.25倍,如果神经网络隐层特别多,那么梯度在穿过多层后将变得非常小接近于0,即出现梯度消失现象;当网络权值初始化为( 1 , + ∞ )区间内的值,则会出现梯度爆炸情况。

  1. 含有幂运算,随着网络层数增多,消耗的时间也会增加。

3.2 step function(阶跃函数)

函数图像如下:

数学表达式如下:

由图可以看出,阶跃函数的导数在绝大多数地方(除了0之外)的导数都是0。所以用它做激活函数的话,参数们的微小变化所引起的输出的变化就会直接被阶跃函数抹杀掉,在输出端完全体现不出来,训练时使用的损失函数的值就不会有任何变化,这是不利于训练过程的参数更新的。

3.3 Tanh(双曲正切函数)激活函数

数学表达式:

函数图像:

函数导数图像:

优点:

  1. 解决了Sigmoid的输出不关于零点对称的问题;
  2. 也具有Sigmoid的优点平滑,容易求导。

缺点:
梯度消失(gradient vanishing)的问题和幂运算的问题仍然存在。

3.4 ReLU函数

函数图像如下:

数数表达式如下:

函数导数图像如下:

ReLU函数其实就是一个取最大值函数,注意这并不是全区间可导的。

优点:

  1. 计算量小;
  2. 收敛速度远快于sigmoid和tanh
  3. 缓解了在深层网络中使用sigmoid和Tanh激活函数造成了梯度消失的现象(右侧导数恒为1);
  4. 缓解过拟合的问题。由于函数的会使小于零的值变成零,使得一部分神经元的输出为0,造成网络的稀疏性,减少参数相互依赖的关系缓解过拟合的问题。

缺点:

  1. 造成神经元的**“死亡”**;
  2. ReLU的输出不是0均值的。

对于ReLU神经元“死亡”解决方案:

  1. 优化函数,使用Leaky ReLU函数;
  2. 较小的学习速率;
  3. 采用momentum based优化算法,动态调整学习率。

3.5 Leaky ReLU函数(PReLU)

数学表达式:一般α=0.01

函数图像(左)函数导数图像(右):

从函数图像来看,它和ReLU的区别在于负数那边的斜率不是0,而是0.01,非常接近0。一般α=0.01,也可由方向传播算法学出来。

3.6 ELU (Exponential Linear Units) 函数

数学表达式:

函数图像(左)及函数导数图像(右):

ELU也是为解决ReLU存在的问题而提出,显然,ELU有ReLU的基本所有优点。

  1. 不会有Dead ReLU问题
  2. 输出的均值接近0,zero-centered

4. 如何选择合适的激活函数

  1. 这个问题目前没有确定的方法,凭一些经验吧。
  2. 深度学习往往需要大量时间来处理大量数据,模型的收敛速度是尤为重要的。所以,总体上来讲,训练深度学习网络尽量使用zero-centered数据 (可以经过数据预处理实现) 和zero-centered输出。所以要尽量选择输出具有zero-centered特点的激活函数以加快模型的收敛速度。
  3. 如果使用ReLU,那么一定要小心设置learning rate,而且要注意不要让网络出现很多 “dead” 神经元,如果这个问题不好解决,那么可以试试Leaky ReLU、PReLU或者Maxout。
  4. 最好不要用 sigmoid,你可以试试tanh,不过可以预期它的效果会比不上ReLU和Maxout.

参考资料:

https://blog.csdn.net/tyhj_sf/article/details/79932893
https://blog.csdn.net/neo_lcx/article/details/100122938
https://blog.csdn.net/colourful_sky/article/details/79164720
https://fuhailin.github.io/activation-functions/

深度学习——激活函数(激励函数)理论学习相关推荐

  1. 深度学习激活函数可视化:tanh与relu的比较

    深度学习激活函数可视化:tanh与relu的比较 激活函数是神经网络中非常重要的组成部分,它可以将输入值映射到输出值,并为网络提供非线性性.其中,tanh和relu是两种常用的激活函数,它们在神经网络 ...

  2. 深度学习激活函数总结(sigmoid,tanh,ReLU,Leaky ReLU,EReLU,PReLU,Softmax,Swish,Maxout,Softplus)

    摘要 本文总结了深度学习领域最常见的10中激活函数(sigmoid.Tanh.ReLU.Leaky ReLU.ELU.PReLU.Softmax.Swith.Maxout.Softplus)及其优缺点 ...

  3. 深度学习—激活函数详解(Sigmoid、tanh、ReLU、ReLU6及变体P-R-Leaky、ELU、SELU、Swish、Mish、Maxout、hard-sigmoid、hard-swish)

    查看全文 http://www.taodudu.cc/news/show-3284957.html 相关文章: SELU激活函数,scaled exponential linear units 激活函 ...

  4. 深度学习激活函数中的线性整流函数ReLU及其变种

    线性整流函数ReLU         线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元, 是一种人工神经网络中常用的激活函数(activation functi ...

  5. 基于深度学习的数字水印理论学习(一)

    文章目录 一.前言 二.相关技术优劣 三.技术背景 1.隐写术(Steganography) 2.隐写分析 3.数字水印 4.水印检测 5.综述 四.深度学习识别隐藏水印 参考资料 一.前言 版权保护 ...

  6. 深度学习激活函数总结

    运行下面两行代码 import tensorflow as tf print(help(tf.nn)) 得到所有的激活函数,但是常见的就是relu, tanh, sigmoid函数 /usr/loca ...

  7. 深度学习激活函数比较

    一.Sigmoid函数 1)表达式 2)函数曲线 3)函数缺点 梯度饱和问题.先看一下反向传播计算过程: 反向求导: 而其中: 所以,由上述反向传播公式可以看出,当神经元数值无线接近1或者0的时候,在 ...

  8. softmax函数_数学证明深度学习激活函数从Softmax到Sparsemax

    Sparsemax封闭形式解及其损失函数的推导 本文目标是三个方面.第一部分讨论了sparsemax背后的动机及其与softmax的关系,首次介绍了该激活函数的原始研究论文摘要,以及使用sparsem ...

  9. 深度学习- 激活函数总结(Sigmoid, Tanh, Relu, leaky Relu, PReLU, Maxout, ELU, Softmax,交叉熵函数)

    激活函数是用来加入非线性因素的,解决线性模型所不能解决的问题 激活函数通常有以下性质 – 非线性 – 可微性 – 单调性 –

  10. Mish-撼动深度学习ReLU激活函数的新继任者

    对激活函数的研究一直没有停止过,ReLU还是统治着深度学习的激活函数,不过,这种情况有可能会被Mish改变. Diganta Misra的一篇题为"Mish: A Self Regulari ...

最新文章

  1. Spring IOC流程源码分析
  2. ElasticSearch聚合语法学习(bucket,metric,hitogram,date hitogram)
  3. freemarker 转义字符
  4. 三个梯度磁场_第二节 梯度磁场系统
  5. 关于RedisTemplate和StringRedisTemplate
  6. NUC980开源项目9-官方Kernel编译
  7. Windows系统注册表
  8. 如何调用Sphinx 和api接口
  9. 5G NR — 基站(Base Station)
  10. 计算机数学基础 周密,一位计算机牛人的心得,谈计算机和数学.doc
  11. 自己封装的数据库DbUtils的万能模板
  12. go mux子路由的基本使用
  13. r语言中trifit怎么用_【r-介绍|分享】使用R进行生存分析
  14. Ubuntu 20.04 X86成功编译运行wayland、wayland-protocols、weston,亲测有效,踩了很多坑,完美解决。
  15. hour:24小时制和12小时制
  16. CVT变速器中壳体吊机设计
  17. 特斯拉Model X使用的是新密钥在几分钟内就被破解了
  18. 洛谷P1781 宇宙总统 题解
  19. ui设计发展到底好不好?为什么越来越多的人开始学习UI设计?
  20. 产品经理相关资源整理

热门文章

  1. 第三方支付平台-框架介绍
  2. python 文件另存为快捷键_pycharm快捷键
  3. 安卓性能优化全面总结(友盟性能优化大赛获奖作品)
  4. vue子父组件之间的传值
  5. 扫描全能王30元/月的OCR文字识别免费使用方法
  6. IE浏览器访问出现Automation 服务器不能创建对象
  7. 算法导论学习笔记12_动态规划
  8. 解决Android手机人民币符号--¥显示问题
  9. Google play aso 关键词覆盖指南
  10. PMP笔记-风险应对策略的区别