
2.2.2 长短期记忆(LSTM)网络
长短期记忆(long short-term memory,LSTM)[1]网络是一种改进的循环神经网络结构,它可以解决循环神经网络的梯度消失和梯度爆炸问题,并增强自身对长期依赖的建模能力。长短期记忆网络的核心是记忆单元(memory cell),它可以存储和访问信息,并通过遗忘门(forget gate)、输入门(input gate)和输出门(output gate)3个门控来控制信息的流动。另外,这3个门控单元可以根据当前和之前的输入来决定记忆单元的更新、保留和输出。图2-2所示为长短期记忆网络的模型结构。

图2-2 长短期记忆网络的模型结构
1.遗忘门
长短期记忆网络的第一步是选择从记忆单元中保留或丢弃哪些信息,这个选择由一个叫作“遗忘门”的sigmoid层来决定。由于遗忘门的作用是通过一个0~1的值来调节上一个时间步的隐藏状态在当前时间步的保留程度,因此遗忘门可以选择性地“保留”或“丢弃”一些历史信息。图2-3所示为遗忘门的结构示意图。

图2-3 遗忘门的结构示意图
遗忘门根据上一个时间步的隐藏状态和当前时间步的输入
,输出一个0~1的数。这个数表示保留或丢弃记忆单元中的信息的程度,1代表完全保留,0代表完全丢弃。例如,在一个根据上文预测下一个词的语言模型中,记忆单元可能存储了当前的语言主题,用来预测合适的下一个词。当遇到一个新的语言主题时,就需要用遗忘门来丢弃旧的主题信息,然后用新的主题信息来预测下一个词。遗忘门的更新方式可以表示为
(2-4)
其中,ft表示输出向量,σ表示sigmoid函数,Wf表示权重矩阵,bf表示偏置。
2.输入门
长短期记忆网络的第二步是决定要在记忆单元中存储什么样的信息。这个过程分为两个步骤。首先,用一个sigmoid层作为输入门来决定哪些信息是需要更新的。然后,用一个tanh层生成一个新的候选值向量,这个候选值向量可以添加到记忆单元中。接下来,把这两个步骤结合起来更新记忆单元。例如,在语言模型中可以把新的语言主题的信息作为候选值,用输入门来选择将新的主题信息加入记忆单元中,替换掉用遗忘门丢弃的旧的主题信息。输入门的更新方式可以表示为
(2-5)
在确定了要保留或丢弃的记忆后,就可以把旧的记忆单元更新为新的记忆单元
了。这一步的操作过程是,先用
乘以
,把之前决定要遗忘的信息丢弃掉,然后加上
乘以
的积,把之前决定要添加的新信息加进来。这样,就实现了对记忆单元的有限制的更新,其中
可被看作一个权重,控制了新信息的影响程度。图2-4所示为输入门的结构示意图。
将遗忘门和输入门合并之后,更新方式可以表示为
(2-6)

图2-4 输入门的结构示意图
3.输出门
长短期记忆网络最后需要决定输出什么内容。首先用一个sigmoid层作为输出门来决定记忆单元中哪些信息是需要输出的,然后用tanh函数把记忆单元的值压缩到−1~1内,最后再用输出门的值乘以压缩后的记忆单元的值,这样就只输出了我们想要的部分。图2-5所示为输出门的结构示意图。

图2-5 输出门的结构示意图
输出门的更新方式可以表示为:
(2-7)