RNN的优势之一就是它可以把之前的信息和当前的信息相互关联。例如,使用视频中先前的帧可以帮助理解当前的帧。如果RNN可以永远做到这一点那是最好的,但是在实际应用中,RNN好像不能永远保留所有的先前信息。
有时候,我们只需要利用很少的先前信息就可以执行当前的任务。例如,我们考虑一个基于之前的单词预测之后的单词的语言模型。如果我们想预测 “the clouds are in the sky“ 这句话中的最后一个单词,我们不需要知道特别多的信息就能知道最后一个单词是天空。在这种情况下,当相关的信息和需要预测的地方差距很小的时候,RNN 可以迅速的学习并利用之前的信息。过程如下图所示:
然而,有的时候我们需要更多的先前信息。例如,我们还是考虑一个基于之前的单词预测之后的单词的语言模型。我们想预测下面这句话的最后一个单词。“I grew up in France… I speak fluent French.” 相邻的单词可以告诉我们可能要填入一个语言的名称,但是我们不知道要填入哪一个语言。我们需要继续向先前的信息中寻找,直到找到 France。 这之前的差距可能会非常的巨大。在这种情况下,RNN 就不能够学习到什么有用的东西了。过程如下图所示:
上面的问题就是我们要讨论的长期依赖(long-term dependency)问题。也就是说RNN是具备长期依赖问题的!
门控网络门控网路(Gated Network)是学习 LSTM 之前必须明白的一个基本网络结构。因为门控的理念是 LSTM 的核心。
如下图所示,这是一个简单的二阶门控网络 Second Order(or Gated)Network:从图中可以看出,门控的意思就是通过一个类似于开关的结构控制输入和相应的权重来配对。如果我们有26个字母要来识别的话,就会有26套权重。
这个门控网络主要是被设计来处理语言识别的,例如,一次扫描一个字符序列,然后将序列分类为接受或拒绝。:
这样的问题可以转换为一个有限状态机来理解,如下所示,右下角就是对应的有限状态自动机,左边是一个二维图 表示。叉表示初始状态,如果输入为 1 ,将会向右上角走,如果为 0,会往左下角走。如果最终停在了斜线的右侧就表示为 Accept,如果停在了左侧就表示为 Reject。
下面我们再来看一个更加复杂的语言识别任务,如下图所示,如果连续出现 3 个及以上数量的 0 就 Reject:
这个任务的有限状态自动机和图可以表示为下面的形式
如果语言识别的任务再复杂一些呢?
我们下面来看一下 Chomsky Hierarchy ,这涉及到了更加复杂集中语言识别任务,根据前面的字母预测下一个字母是什么:
例如,我们要识别这样的一个字符串,abaabbabaaabbbaaaabbbbabaabbaaaaabbbbb...
对于这样的一个任务,第一个 b 的位置其实是很难预计的,但是如果已经给出了 b 那么后续的 b 和后续的第一个 a 是可以被预测出来的。下面的 Elem Network 就可以实现这个预测: