长短期记忆(LSTM)是一种用于解决递归神经网络中梯度消失问题的方法,于 1997 年被提出。
LSTM 单元使用具有自连接的线性单元,其恒定权重为 1.0。这使得流入该自循环单元的值(前向传递)或梯度(后向传递)可以无限期地保留,以便在最需要的时间可以准确地检索该值或梯度。这种自我循环单元,即存储单元,提供了一种可以存储过去数十个时间步长的信息的存储器。这对于许多任务来说非常强大,例如对于文本数据,LSTM 单元可以存储前一段中包含的信息并将该信息应用于当前段落中的句子。
此外,深度网络中的一个常见问题是“梯度消失”问题,即梯度逐层变得越来越小,直至太小而无法影响最深层。借助 LSTM 中的存储单元,我们拥有连续的梯度流(误差保持其值),从而消除了梯度消失问题,并能够从数百个时间步长的序列中进行学习。
另一个门通过将存储单元的输出乘以 0(无输出)和 1(保留输出)之间的数字来操纵存储单元的输出。如果多个记忆相互竞争,这个门可能会很有用。
LSTM 单元的连接乍一看可能有点复杂,您需要一些时间来理解它。然而,如果将所有部分隔离开来,会发现该结构本质上与普通循环神经网络相同,其中输入和循环权重流向所有门,而这些门又反过来连接到自循环存储单元。
为了更深入地研究 LSTM 并理解整个架构,建议阅读LSTM:A Search Space Odyssey和原始 LSTM 论文。
解决这个问题的第一个方法是逐层预训练,即通过使用无监督学习以逐层方式构建模型,以便早期层中的特征已经用一些合适的特征进行初始化或“预训练”(权重)。早期层中的预训练特征只需要在监督学习期间略微调整即可获得良好的结果。第一个预训练方法是由Schmidhuber于1992年为递归神经网络开发的,另一个预训练方法是由Hinton和Salakhutdinov于2006年为前馈网络开发的。另一个解决递归神经网络中梯度消失问题的解决方案是于1997年提出的长短期记忆(LSTM)。
长短期记忆(LSTM)单元使用具有自连接的线性单元,其恒定权重为1.0。这使得流入该自循环单元的值(前向传递)或梯度(后向传递)可以无限期地保留(输入或误差乘以1.0仍然具有相同的值;因此,前一个时间步的输出或误差与下一个时间步的输出相同),以便在最需要的时间可以准确地检索该值或梯度。这种自我循环单元,即存储单元,提供了一种可以存储过去数十个时间步长的信息的存储器。这对于许多任务来说非常强大,例如对于文本数据,LSTM单元可以存储前一段中包含的信息并将该信息应用于当前段落中的句子。此外,深度网络中的一个常见问题是“梯度消失”问题,即梯度逐层变得越来越小,直至太小而无法影响最深层。借助LSTM中的存储单元,我们拥有连续的梯度流(误差保持其值),从而消除了梯度消失问题,并能够从数百个时间步长的序列中进行学习。
另一个门通过将存储单元的输出乘以0(无输出)和1(保留输出)之间的数字来操纵存储单元的输出(见图1)。如果多个记忆相互竞争,这个门可能会很有用:一个存储单元可能会说“我的记忆现在非常重要!所以我现在就释放它!”但网络可能会说:“你的记忆很重要,这是事实,但其他存储单元的记忆比你的记忆重要得多!因此,我向你的输出门发送小值,这将关闭你,并向其他输出门发送大值,以便更重要的记忆获胜!”LSTM单元的连接乍一看可能有点复杂,您需要一些时间来理解它。然而,如果将所有部分隔离开来,你会发现该结构本质上与普通循环神经网络相同,其中输入和循环权重流向所有门,而这些门又反过来连接到自循环存储单元。为了更深入地研究LSTM并理解整个架构,我建议阅读[LSTM:A Search Space Odyssey](http://arxiv.org/abs/1503.04069)和[原始LSTM论文](http://dl.acm.org/citation.cfm?id=1246450)。