本文是 深度学习有多深? 学了究竟有几分? (十) 的续篇。
迄今为止我们讨论的神经网络模型, 都属于一种叫做前馈网络 (feedforward network) 的东西。简而言之, 前馈网络, 信息从底层不断往前单向传输,故而得名。
RNN (Recurrent Neural Network), 也称循环神经网络, 多层反馈神经网络, 则是另一类非常重要的神经网络。
本质上, RNN 和前馈网络的区别是, 它可以保留一个内存状态的记忆, 来处理一个序列的输入, 这对手写字的识别, 语音识别和自然语言处理上, 尤为重要。
在分析一段语句时, 知道上文, 知道它前面的那些单词,非常关键。RNN 之所以叫 Recurrent (循环), 是因为对于一个序列的每个元素, 它都要做同样的处理, 通过一个内存原件记住当前状态, 然后将其引导回处理下一个元素的输入中。
从另外一个角度看, 传统神经网络, 输入和输出的向量, 长度都是固定的, 是简单的一对一的关系。
而 RNN, 可以接受一个序列的输入向量, 输出也可能是一个序列, 二者是多对多的关系。应用上, 它可以解决的问题广泛得多, 包括给图像生成字幕, 自然语言处理, 机器翻译,等等。
提到 RNN, 不可避免地要提到现在瑞士 Lugano 大学的 Jürgen Schmidhuber 教授。
1963年出生的 Schmidhuber, 和所有过早脱发的中年人一样, 外出时爱戴着一顶鸭舌帽。
1997年 Schmidhuber 和他的学生Sepp Hochreiter合作, 提出了长短期记忆(LSTM, Long Short-Term Memory) 的计算模型.
长短期记忆 (LSTM), 这个拗口的名字,背后要解决的问题, 是如何将有效信息, 在多层循环神经网络传递之后,仍能输送到需要的地方去。
LSTM 模块, 在神经网络里的角色, 是通过内在参数的设定 (如上图, input gate, output gate, forget gate),决定某个输入信息在很久以后是否还值得记住,何时取出使用, 何时废弃不用。
鲁迅在小说"藤野先生"里曾有这么一段文字: "那坐在后面发笑的是上学年不及格的留级学生,在校已经一年,掌故颇为熟悉的了。他们便给新生讲演每个教授的历史。这藤野先生,据说是穿衣服太模胡了 ... 有一回上火车去,致使管车的疑心他是扒手,叫车里的客人大家小心些。 "
通俗的说, LSTM 就是这样一个机制, 好似"藤野先生"里面的"留级学生", 帮你管理很久之前的"掌故", 决定何时调用, 何时忽略。