深度学习——激活函数(激励函数)理论学习
目录
- 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之间的输出;平滑、容易求导。
缺点:
- 在深度神经网络中梯度反向传递时导致梯度爆炸和梯度消失,其中梯度爆炸发生的概率非常小,而梯度消失发生的概率比较大。函数导数的图像如下:
如果我们初始化神经网络的权值为[0,1]
之间的随机值,由反向传播算法
的数学推导可知,梯度从后向前传播时,每传递一层梯度值都会减小为原来的0.25倍,如果神经网络隐层特别多,那么梯度在穿过多层后将变得非常小接近于0
,即出现梯度消失
现象;当网络权值初始化为( 1 , + ∞ )
区间内的值,则会出现梯度爆炸
情况。
- 含有幂运算,随着网络层数增多,消耗的时间也会增加。
3.2 step function(阶跃函数)
函数图像如下:
数学表达式如下:
由图可以看出,阶跃函数的导数在绝大多数地方(除了0之外)的导数都是0。所以用它做激活函数的话,参数们的微小变化所引起的输出的变化就会直接被阶跃函数抹杀掉,在输出端完全体现不出来,训练时使用的损失函数的值就不会有任何变化,这是不利于训练过程的参数更新的。
3.3 Tanh(双曲正切函数)激活函数
数学表达式:
函数图像:
函数导数图像:
优点:
- 解决了Sigmoid的输出不关于零点对称的问题;
- 也具有Sigmoid的优点平滑,容易求导。
缺点:
梯度消失(gradient vanishing)的问题和幂运算的问题仍然存在。
3.4 ReLU函数
函数图像如下:
数数表达式如下:
函数导数图像如下:
ReLU函数其实就是一个取最大值函数,注意这并不是全区间可导的。
优点:
- 计算量小;
- 收敛速度远快于sigmoid和tanh
- 缓解了在深层网络中使用sigmoid和Tanh激活函数造成了梯度消失的现象(右侧导数恒为1);
- 缓解过拟合的问题。由于函数的会使小于零的值变成零,使得一部分神经元的输出为0,造成网络的稀疏性,减少参数相互依赖的关系缓解过拟合的问题。
缺点:
- 造成神经元的**“死亡”**;
- ReLU的输出不是0均值的。
对于ReLU神经元“死亡”解决方案:
- 优化函数,使用Leaky ReLU函数;
- 用较小的学习速率;
- 采用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的基本所有优点。
- 不会有Dead ReLU问题
- 输出的均值接近0,zero-centered
4. 如何选择合适的激活函数
- 这个问题目前没有确定的方法,凭一些经验吧。
- 深度学习往往需要大量时间来处理大量数据,模型的收敛速度是尤为重要的。所以,总体上来讲,训练深度学习网络尽量使用zero-centered数据 (可以经过数据预处理实现) 和zero-centered输出。所以要尽量选择输出具有zero-centered特点的激活函数以加快模型的收敛速度。
- 如果使用ReLU,那么一定要小心设置learning rate,而且要注意不要让网络出现很多 “dead” 神经元,如果这个问题不好解决,那么可以试试Leaky ReLU、PReLU或者Maxout。
- 最好不要用 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/
深度学习——激活函数(激励函数)理论学习相关推荐
- 深度学习激活函数可视化:tanh与relu的比较
深度学习激活函数可视化:tanh与relu的比较 激活函数是神经网络中非常重要的组成部分,它可以将输入值映射到输出值,并为网络提供非线性性.其中,tanh和relu是两种常用的激活函数,它们在神经网络 ...
- 深度学习激活函数总结(sigmoid,tanh,ReLU,Leaky ReLU,EReLU,PReLU,Softmax,Swish,Maxout,Softplus)
摘要 本文总结了深度学习领域最常见的10中激活函数(sigmoid.Tanh.ReLU.Leaky ReLU.ELU.PReLU.Softmax.Swith.Maxout.Softplus)及其优缺点 ...
- 深度学习—激活函数详解(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 激活函 ...
- 深度学习激活函数中的线性整流函数ReLU及其变种
线性整流函数ReLU 线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元, 是一种人工神经网络中常用的激活函数(activation functi ...
- 基于深度学习的数字水印理论学习(一)
文章目录 一.前言 二.相关技术优劣 三.技术背景 1.隐写术(Steganography) 2.隐写分析 3.数字水印 4.水印检测 5.综述 四.深度学习识别隐藏水印 参考资料 一.前言 版权保护 ...
- 深度学习激活函数总结
运行下面两行代码 import tensorflow as tf print(help(tf.nn)) 得到所有的激活函数,但是常见的就是relu, tanh, sigmoid函数 /usr/loca ...
- 深度学习激活函数比较
一.Sigmoid函数 1)表达式 2)函数曲线 3)函数缺点 梯度饱和问题.先看一下反向传播计算过程: 反向求导: 而其中: 所以,由上述反向传播公式可以看出,当神经元数值无线接近1或者0的时候,在 ...
- softmax函数_数学证明深度学习激活函数从Softmax到Sparsemax
Sparsemax封闭形式解及其损失函数的推导 本文目标是三个方面.第一部分讨论了sparsemax背后的动机及其与softmax的关系,首次介绍了该激活函数的原始研究论文摘要,以及使用sparsem ...
- 深度学习- 激活函数总结(Sigmoid, Tanh, Relu, leaky Relu, PReLU, Maxout, ELU, Softmax,交叉熵函数)
激活函数是用来加入非线性因素的,解决线性模型所不能解决的问题 激活函数通常有以下性质 – 非线性 – 可微性 – 单调性 –
- Mish-撼动深度学习ReLU激活函数的新继任者
对激活函数的研究一直没有停止过,ReLU还是统治着深度学习的激活函数,不过,这种情况有可能会被Mish改变. Diganta Misra的一篇题为"Mish: A Self Regulari ...
最新文章
- Spring IOC流程源码分析
- ElasticSearch聚合语法学习(bucket,metric,hitogram,date hitogram)
- freemarker 转义字符
- 三个梯度磁场_第二节 梯度磁场系统
- 关于RedisTemplate和StringRedisTemplate
- NUC980开源项目9-官方Kernel编译
- Windows系统注册表
- 如何调用Sphinx 和api接口
- 5G NR — 基站(Base Station)
- 计算机数学基础 周密,一位计算机牛人的心得,谈计算机和数学.doc
- 自己封装的数据库DbUtils的万能模板
- go mux子路由的基本使用
- r语言中trifit怎么用_【r-介绍|分享】使用R进行生存分析
- Ubuntu 20.04 X86成功编译运行wayland、wayland-protocols、weston,亲测有效,踩了很多坑,完美解决。
- hour:24小时制和12小时制
- CVT变速器中壳体吊机设计
- 特斯拉Model X使用的是新密钥在几分钟内就被破解了
- 洛谷P1781 宇宙总统 题解
- ui设计发展到底好不好?为什么越来越多的人开始学习UI设计?
- 产品经理相关资源整理