ReLU为什么比Sigmoid效果好
双曲函数类似于常见的(也叫圆函数的)三角函数。基本双曲函数是双曲正弦"sinh",双曲余弦"cosh",从它们导出双曲正切"tanh"
sigmod函数:
Relu函数:
综合:
@作者:约翰曰不约
为什么通常Relu比sigmoid和tanh强,有什么不同?
主要是因为它们gradient特性不同。sigmoid和tanh的gradient在饱和区域非常平缓,接近于0,很容易造成vanishing gradient的问题,减缓收敛速度。vanishing gradient在网络层数多的时候尤其明显,是加深网络结构的主要障碍之一。相反,Relu的gradient大多数情况下是常数,有助于解决深层网络的收敛问题。Relu的另一个优势是在生物上的合理性,它是单边的,相比sigmoid和tanh,更符合生物神经元的特征。
而提出sigmoid和tanh,主要是因为它们全程可导。还有表达区间问题,sigmoid和tanh区间是0到1,或着-1到1,在表达上,尤其是输出层的表达上有优势。
@作者:crackhopper,
ReLU更容易学习优化。因为其分段线性性质,导致其前传,后传,求导都是分段线性。而传统的sigmoid函数,由于两端饱和,在传播过程中容易丢弃信息:
@作者:Begin Again
第一个问题:为什么引入非线性激励函数?
如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了。
正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络就有意义了(不再是输入的线性组合,可以逼近任意函数)。最早的想法是sigmoid函数或者tanh函数,输出有界,很容易充当下一层输入(以及一些人的生物解释balabala)。
第二个问题:为什么引入Relu呢?
第一,采用sigmoid等函数,算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。
第二,对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失,参见 @Haofeng Li 答案的第三点),从而无法完成深层网络的训练。
第三,Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生(以及一些人的生物解释balabala)。
当然现在也有一些对relu的改进,比如prelu,random relu等,在不同的数据集上会有一些训练速度上或者准确率上的改进,具体的大家可以找相关的paper看。
多加一句,现在主流的做法,会在做完relu之后,加一步batch normalization,尽可能保证每一层网络的输入具有相同的分布[1]。而最新的paper[2],他们在加入bypass connection之后,发现改变batch normalization的位置会有更好的效果。大家有兴趣可以看下。
ReLU为什么比Sigmoid效果好相关推荐
- 神经网络激活函数sigmoid relu tanh 为什么sigmoid 容易梯度消失
什么是激活函数 为什么要用 都有什么 sigmoid ,ReLU, softmax 的比较 如何选择 1. 什么是激活函数 如下图,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函 ...
- relu激活函数对比sigmoid的优势
1. 为什么要激活函数 原理上来说,神经网络模型的训练过程其实就是拟合一个数据分布(x)可以映射到输出(y)的数学函数,即 y= f(x).拟合效果的好坏取决于数据质量及模型的结构,像逻辑回归.感知机 ...
- 神经网络为什么要使用激活函数,为什么relu要比sigmoid要好
第一个问题:为什么引入非线性激励函数? 如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性 ...
- ReLU函数 Vs Sigmoid 函数——XOR问题究竟用那个好
文章目录 前言 先看问题 一.什么是激活函数(输出层中还叫激活函数吗)? 二.各个激活函数适合的情况 1.无激活函数(恒等激活函数) 2.S型曲线,例如 Sigmoid 3.线性整流函数(Rectif ...
- Relu激活函数、sigmoid
ReLU函数把负值都变为0,正值不变. sigmoid函数是一个阀值函数,不管x取什么值,对应的sigmoid函数值总是∈(0,1)
- Relu函数,sigmoid函数,leaky Relu
Relu函数: y=max(0,x) 蓝色为Relu函数,红色曲线为Relu函数的导数. 优点: 1.在正区间内不会发生梯度消失问题, 2. 函数比较简单,求导计算复杂度较低. 3. 梯度能维持在不错 ...
- 为什么引入ReLU激活函数
https://blog.csdn.net/fredinators/article/details/79443386 ReLu是神经网络中的一个激活函数,其优于tanh和sigmoid函数. 1.为何 ...
- 大厂必考深度学习算法面试题
一,滤波器与卷积核 二,卷积层和池化输出大小计算 2.1,CNN 中术语解释 2.2,卷积输出大小计算(简化型) 2.3,理解边界效应与填充 padding 参考资料 三,深度学习框架的张量形状格式 ...
- 大厂必考深度学习面试题及参考答案
目录 一,滤波器与卷积核 二,卷积层和池化输出大小计算 2.1,CNN 中术语解释 2.2,卷积输出大小计算(简化型) 2.3,理解边界效应与填充 padding 参考资料 三,深度学习框架的张量形状 ...
最新文章
- 独家 | 人工神经网络中发现了人类大脑拥有的多模态神经元(附链接)
- 浏览器左上角的网站图标
- CommunityServer 2.0 RTM时间是:2006-02-17 --Scott Watermasysk今天中午
- salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type)...
- 使用Tornado实现Ajax请求
- php paypal订单号查询,php – 在交易后从PayPal获取信息
- java 设置pdf 编码格式_Java如何设置PDF文档背景色详解
- React组件实现越级传递属性
- 1064金明的预算方案
- .NET Framework3.0答疑
- Java基础学习总结(90)——Java单元测试技巧
- MATLAB实现PCA(主成分分析)
- Java hashCode() 和 equals()的若干问题解答
- 一个amp;quot;现象级amp;quot;大数据公司的蜕变
- linux虚拟机 dnw,在Linux下安装DNW
- Stream Collectors - reducing
- Linux—常用十大命令
- 最新域名防红系统源码+实战搭建视频教程
- Archlinux中pacman,yaourt的常用用法
- 浅聊一下Java中的char类型
热门文章
- PostgreSQL增强版命令行客户端(pgcli)
- navicat的安装
- 程序实践:命令行之连连看
- JVM:如何分析线程堆栈
- android 小工具:pc 上用 curl 命令打开手机浏览器,浏览指定网址
- 摩托罗拉周二将正式分拆为两经营实体
- How to: Display a Gradient Fill
- 段错误产生原因及简单的调试方法
- python后缀名切割_python批量将.xls转化为.xlsx,包括文件名和后缀分割
- 中兴f650 2.0.3 固件降级_手机资讯:如何升级iOS12.1.4正式版iOS12.1.4正式版升降级教程...