注意:请先看解释GRU的博客,否则不容易看懂本文
1. 引入
GRU(门控循环单元)允许我们在序列学习中,学习非常深的连接。
其他类型的单元,也能做到这个效果,比如本文要讲的LSTM,它甚至比GRU的效果要好(更通用,更强大)。
下面是对GRU做的一个总结,需要深入了解的,可以先看(补充GRU博客链接)。
2. LSTM
LSTM是长短记忆网络(Long Short Term Memory units),LSTM的发明者在paper中详细论述了梯度消失问题的根本以及解决方法。
个人感觉,LSTM和GRU是比较类似的。所以先看懂GRU,会更容易理解LSTM。
LSTM和GRU相比,有两个不同点(特点):
-
在LSTM中,a不等于c
-
LSTM中,有两个门控
我们来看LSTM的式子(如下),Andrew NG说式子比流程图更容易理解,所以我们这里先讲式子,而大部分解释LSTM的文章,都是直接讲流程图的。
下面对公式进行一个最简单的解释:
-
式(1)用于更新记忆细胞的值,会在式(5)中进行更新
-
式(2)(3)(4)是3个门值
- update gate: 更新门
- forgate gate: 遗忘门
- output gate:输出门
-
式(5)中进行更新记忆细胞的值,更新时,会根据两个门值来进行(update gate和forgate gate)
-
式(6)计算本时刻的激活函数输出值a,即下一时刻的输入
我们把这个图展开(这里展开了3个时刻)
通过图中红色的线,我们可以发现,知道我们正确的设置了遗忘门(forget gate)和更新门(update gate),LSTM很容易把c<0>的值一直往下传递。比如c<0>可以一直传递到c<3>(c<3>=c<0>)。
从红色的这条线,就能发现,LSTM非常擅长长时间记忆某个值,即便经过了很长时间的传递。
3. 窥孔连接
上面2中讲述的LSTM,可能和其他某些资料中描述的LSTM有些不同(唯一的不同点,在下图公式中,用红色标注出来了)。
我们会发现,有些资料中讲述的LSTM,在输出门的计算上,还会考虑上一个时刻的记忆细胞c的值,这就是所谓“窥孔连接”(Peephole connection)。
“窥孔连接”,就是说,门值不仅仅取决于a和x,还取决于上一个时刻记忆细胞的值。
4. 什么时候用GRU,什么时候用LSTM
关于什么时候用GRU,什么时候用LSTM,其实没有统一的准则。而且从深度学习历史上,我们要知道,LSTM是在GRU之前出现的。
GRU是源于在复杂情况下,对LSTM模型做出的简化。所以:
-
GRU是个更简单的模型(相对于LSTM),所以用GRU更容易创建复杂网络,更容易适应规模更大的问题
-
GRU只有两个门,所以在计算上也会比LSTM快
-
LSTM会更加强大,因为它有3个门,而GRU只有2个
如果你在首次实验模型时,要从LSTM/GRU中选一个,目前大部分人还是会默认选择LSTM。但现在越来越多的团队也逐渐开始接受了GRU。
参考
- [1] Andrew Ng, sequence model class
今天的文章理解LSTM_lm算法原理介绍[通俗易懂]分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/67536.html