sigmoid:

Relu:

为什么通常Relu比sigmoid和tanh强,有什么不同?
主要是因为它们gradient特性不同。

1.sigmoid和tanh的gradient在饱和区域非常平缓,接近于0,很容易造成vanishing gradient的问题,减缓收敛速度。vanishing gradient在网络层数多的时候尤其明显,是加深网络结构的主要障碍之一。相反,Relu的gradient大多数情况下是常数,有助于解决深层网络的收敛问题。

2.Relu的另一个优势是在生物上的合理性,它是单边的,相比sigmoid和tanh,更符合生物神经元的特征
3.而提出sigmoid和tanh,主要是因为它们全程可导。还有表达区间问题,sigmoid和tanh区间是0到1,或着-1到1,在表达上,尤其是输出层的表达上有优势。

4.Relu输出更具稀疏性。

5.ReLU更容易学习优化。因为其分段线性性质,导致其前传,后传,求导都是分段线性。而传统的sigmoid函数,由于两端饱和,在传播过程中容易丢弃信息:

第一个问题:为什么引入非线性激励函数?
如果不用激励函数(其实相当于激励函数是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的位置会有更好的效果。大家有兴趣可以看下。

最新文章

  1. javascript Date format(js日期格式化) (转)
  2. 原生JS实战:经典贪吃蛇(开局10倍速度,来看看你最高能得多少分!)
  3. equals和“==”
  4. FireDac 的RecordCount 相关测试 记录。
  5. C#的 is 和 as 类型转换
  6. winform去掉右上角关闭按钮
  7. SQL Server 文件和文件组
  8. SQL注入测试平台 SQLol -5.DELETE注入测试
  9. FindMe
  10. Tomcat源码分析--转
  11. jQuery推断复选框是否勾选
  12. 因特网的IP协议是不可靠无连接的,那为什么当初不直接把它设计为可靠的?
  13. uip UDPclient模式通信移植,p本地ort可以是无规
  14. jsp标签库选择框示例
  15. 【go】golang中置new()函数和make()函数的区别
  16. ssl-openssl简介
  17. window平台搭建Hudson服务器
  18. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十)安装hadoop2.9.0搭建HA
  19. 无插件用Terminal/TotalTerminal的开当前finder位置
  20. Win7 在安装vs2010后向sql2008添加SQL_Server_Management详解

热门文章

  1. Could not load file or assembly 'System.Data.SQLite ... 试图加载格式不正确的程序
  2. PostgreSQL 表空间
  3. HTML5使用总结(一)
  4. asp.net 导出 Excel 身份证格式显示格式问题
  5. Webpack vs Rollup
  6. mysql主从报错截图
  7. 20165219 Exp1 PC平台逆向破解
  8. “全栈2019”Java第一章:安装JDK11(Mac)
  9. 给 console 添加颜色
  10. Python的科学计算包matplotlib setup