LSTM该不该使用RELU?
来源:互联网 发布:网络主播招聘是真的吗 编辑:程序博客网 时间:2024/06/10 11:34
首先看下现在常用的激活函数
最常见的就是
其用在早期的神经网络中,但是多层神经网络存在梯度消失的问题。
tanh函数如下:
tanh函数也和
近些年来,在卷机神经网络中使用了Relu函数,发现解决了深度神经网络梯度消失的问题,Relu的表达式如下:
Relu函数在神经元的值大于零的时候,Relu的梯度恒定为1,梯度在大于零的时候可以一直被传递。而且ReLU 得到的SGD的收敛速度会比
ReLU函数在训练的时候,一不小心有可能导致梯度为零。由于ReLU在x<0时梯度为0,这样就导致负的梯度在这个ReLU被置零,这个神经元有可能再也不会被任何数据激活,这个ReLU神经元坏死了,不再对任何数据有所响应。实际操作中,如果设置的learning rate 比较大,那么很有可能网络中的大量的神经元都坏死了。如果开始设置了一个合适的较小的learning rate,这个问题发生的情况其实也不会太频繁。
还有一些其他对Relu函数的变种:
Leaky ReLU。Leaky ReLU是用来解决ReLU神经元坏死的问题。
这里可以看出,当x小于0的时候,Relu函数不在是输出0,而是一个带有很小斜率的线形函数
一些激活函数如下表所示:
话题回到开始讨论的问题。
LSTM到底该不该使用Relu函数作为其激活函数?在默认的情况下,LSTM使用tanh函数作为其激活函数。从一个帖子的讨论得出一些眉目:https://www.reddit.com/r/MachineLearning/comments/2t1rsp/lstm_question/
看到当LSTM组成的神经网络层数比较少的时候,才用其默认饿tanh函数作为激活函数比Relu要好很多。随着LSTM组成的网络加深,再继续使用tanh函数,就存在了梯度消失的的风险,导致一直徘徊在一个点无法搜索最优解,这种情况下,可以采用Relu函数进行调整,注意学习率需要变地更小一点防止进入死神经元。
在使用tensorflow时候,使用库函数构造rnn时候,可以通过activation参数来指定激活函数类型。
- LSTM该不该使用RELU?
- Gson到底该不该使用
- 外键该不该使用索引?
- byref和byval什么时候该使用什么时候不该使用
- ButterKnife是否消耗资源?该不该使用它呢?
- 我们到底该不该使用 force index()索引?
- 到底该不该办网呢???
- 到底该不该告发
- 该不该的思念
- 代码该不该精简
- VFP该不该放弃?
- 该不该结婚啊?
- 数据库该不该用外键
- 该不该用 PretranslateMessage
- 该不该学VB
- 该不该制定计划
- 该不该抵制家乐福
- 该不该 throw Exception ?
- 微信小程序开发-开发入门(一)
- java多线程(3)- 单例设计模式
- BZOJ3524 [Poi2014]Couriers
- 实现二叉树的先序遍历、中序遍历、后序遍历
- python-文件
- LSTM该不该使用RELU?
- 12月20号的作业
- 这些问题将导致信用卡降额,让你损失几十万
- springMVC mybatis dao接口(mapper接口)注入失败
- ubuntu 查看显卡
- Log4j日志配置
- 让p 和 span标签自动换行的css语句
- Fragment 购物车适配器
- 临颍县现代农业示范园区物联网水肥一体化项目