注:转载需得到作者同意!
知乎地址:https://zhuanlan.zhihu.com/p/28263453
本文动机
最近手上有一个分类任务,由于处理的数据是实时的序列,便考虑使用Long Short-Term Memory(LSTM)网络实现。在现在的深度学习有监督学习的判别模型中,有两大强有力的武器:
1.处理空域数据的卷积神经网络(Convolutional Neural Network,CNN)
2.处理时域数据的循环神经网络(Recurrent Neural Networks,RNN)
RNN由于其网络特性,将上一时刻的隐藏层输出与此时刻的数据一起作为此时刻的输入,使得历史时刻对于当前时刻的输出具有影响。而LSTM正是RNN中的变体,其独特的“门”设计解决了RNN中梯度消失/爆炸问题。
那么,LSTM中是否真的存在memory?若存在,存在的形式是怎样的?这样的形式会带来怎样的优势?又存在着怎样的问题?本文试图探讨这些问题,但由于作者(研究生一枚)水平有限,希望对这个问题同样有兴趣的朋友(无论是大牛或是小白)一起探讨,如有作者表述错误或是理解错误的地方,也请多多指正,谢谢~
先行知识
这里贴出一些书/教程/博客作为本文的先行知识,一些基础的入门知识本文不再赘述。(毕竟自己写也可能不会有这些大大清晰的说)
1. Long Short-term Memory, Neural Computation 9(8):1735-1780,1997 第一篇当然放上LSTM开山论文,1997年发表于Neural Computation。论文一共32页,写的很学术严谨,个人觉得论文中图画的有点错综复杂,倒不如后面几篇研究人员画的直白易懂。
2. Long short-term memory wikipedia对于LSTM的解读,详略得当,重点一目了然。
3. YJango的循环神经网络——介绍 来自 YJango 大大的超智能体 · GitBook 一书中对于RNN的讲解。
YJango的循环神经网络——实现LSTM 这是LSTM的讲解,详细易懂,非常推荐。
书中附有实例代码,每句都有注释,理论+实践的方式能快速理解LSTM的工作原理。
另外YJango从自然生物角度出发探讨人工智能的思路也令人眼前一亮。
4.