Simple RNN不是唯一的循环神经网络类型,它只是其中一种最简单的实现。本节中要讲一讲目前更常用的循环神经网络LSTM。

7.5.1 SimpleRNN的局限性

Simple RNN有一定的局限性。还记得瞬时记忆、短时记忆和长时记忆的区别吗?Simple RNN可以看作瞬时记忆,它对近期序列的内容记得最清晰。但是有时候,序列中前面的一些内容还是需要记住,完全忘了也不行。

举例来说,看一下这段话:

小猫爱吃鱼,

小狗捉老鼠,

蝴蝶喜欢停在鲜花上。

机器经过学习类似的文本之后,要回答一些问题:

小猫爱吃__,

小狗捉___,

蝴蝶喜欢停在___上。

对Simple RNN来说,答这些填空问题应该是其强项。

如果换下面这段话试一试。

我从小出生在美国,后来我的爸爸妈妈因为工作原因到了日本,我就跟他们在那里住了10多年。

……

后来我回到美国,开始读大学,我学习的专业是酒店管理,

在大学校园里,我交了很多朋友。

……

机器学习问题:我除了英语之外,还精通哪种语言?___________。

这个问题对Simple RNN这种短记忆网络来说会比较难处理,这后面的根本原因在于我们曾经提起过的梯度消失。梯度消失广泛存在于深度网络。循环神经网络通过短记忆机制,梯度消失有所改善,但是不能完全幸免。其实也就是Uht这一项,随着时间轴越来越往后延伸的过程中,前面的状态对后面权重的影响越来越弱了。

基于这个情况,神经网络的研究者正继续寻找更好的循环神经网络解决方案。

7.5.2 LSTM网络的记忆传送带

LSTM网络是Simple RNN的一个变体,也是目前更加通用的循环神经网络结构,全称为Long Short-Term Memory,翻译成中文叫作“长‘短记忆’”网络。读的时候,“长”后面要稍作停顿,不要读成“长短”记忆网络,因为那样的话,就不知道记忆到底是长还是短。本质上,它还是短记忆网络,只是用某种方法把“短记忆”尽可能延长了一些。

简而言之,LSTM就是携带一条记忆轨道的循环神经网络,是专门针对梯度消失问题所做的改进。它增加的记忆轨道是一种携带信息跨越多个时间步的方法。可以先想象有一条平行于时间序列处理过程的传送带,序列中的信息可以在任意位置“跳”上传送带,然后被传送到更晚的时间步,并在需要时原封不动地“跳”过去,接受处理。这就是LSTM的原理:就像大脑中的记忆存储器,保存信息以便后面使用,我们回忆过去,较早期的信息就又浮现在脑海中,不会随着时间的流逝而消失得无影无踪。

这个思路和残差连接非常相似,其区别在于,残差连接解决的是层与层之间的梯度消失问题,而LSTM解决的是循环层与神经元层内循环处理过程中的信息消失问题。

简单来说,C轨道将携带着跨越时间步的信息。它在不同的时间步的值为Ct,这些信息将与输入连接和循环连接进行运算(即与权重矩阵进行点积,然后加上一个偏置,以及加一个激活过程),从而影响传递到下一个时间步的状态如右图所示。

LSTM—增加了一条记忆轨道,携带序列中较早的信息

运算规则如下:

Output_t=activation(dot(state_t,U)+dot(input_t,W)+dot(C_t,V)+b)

不过,LSTM实际上的架构要比这里所解释的复杂得多,涉及3种不同权重矩阵的变换,有的书中将这些变换规则解释为遗忘门、记忆门等。这些细节对于初学者来说,并没有很多的实用价值。因此,大家目前所需要了解的是,LSTM增添了一条记忆携带轨道,用以保证较前时间点读入的信息没有被完全遗忘,继续影响后续处理过程,从而解决梯度消失问题。