作者表示:我们已经陷入 RNN、LSTM 和它们变体的坑中很多年,是时候抛弃它们了!
在 2014 年,RNN 和 LSTM 起死回生。我们都读过 Colah 的博客《Understanding LSTM Networks》和 Karpathy 的对 RNN 的颂歌《The Unreasonable Effectiveness of Recurrent Neural Networks》。但当时我们都「too young too simple」。现在,序列变换(seq2seq)才是求解序列学习的真正答案,序列变换还在语音到文本理解的任务中取得了优越的成果,并提升了 Siri、Cortana、谷歌语音助理和 Alexa 的性能。此外还有机器翻译,现在机器翻译已经能将文本翻译为多种语言。在图像到文本、文本到图像的变换以及视频文字说明的应用中,序列变换也是卓有成效。
在 2015-2016 年间,出现了 ResNet 和 Attention 模型。从而我们知道,LSTM 不过是一项巧妙的「搭桥术」。并且注意力模型表明 MLP 网络可以被「通过上下文向量对网络影响求平均」替换。下文中会继续讨论这一点。
经过两年多的时间,我们终于可以说:「放弃你的 RNN 和 LSTM 路线吧!」
我们能看到基于注意力的模型已越来越多地被用于谷歌、Facebook 和 Salesforce 的 AI 研究。它们都经历了将 RNN 模型和其变体用基于注意力的模型替换的过程,而这才刚刚开始。RNN 模型曾经是很多应用的构建基础,但相比基于注意力的模型,它们需要更多的资源来训练和运行。(参见:https://towardsdatascience.com/memory-attention-sequences-37456d271992)
为什么?
RNN、LSTM 和其变体主要对时序数据进行序列处理。如下图中的水平箭头部分:
RNN 中的序列处理过程,来自《Understanding LSTM Networks》
这些箭头表明,在长期信息访问当前处理单元之前,需要按顺序地通过所有之前的单元。这意味着它很容易遭遇梯度消失问题。
为此,人们开发了 LSTM 模型,LSTM 可以视为多个转换门的合并。ResNet 也借鉴于这种结构,它可以绕过某些单元从而记忆更长时间步的信息。因此,LSTM 在某种程度上可以克服梯度消失问题。
LSTM 中的序列处理过程,来自《Understanding LSTM Networks》
但这并不能完全解决该问题,如上图所示。LSTM 中仍然存在按顺序地从过去单元到当前单元的序列路径。实际上,现在这些路径甚至变得更加复杂,因为路径上还连接了加如记忆的分支和遗忘记忆的分支。毫无疑问,LSTM、GRU 和其变体能学习大量的长期信息(参见《The Unreasonable Effectiveness of Recurrent Neural Networks》),但它们最多只能记住约 100s 的长期信息,而不是 1000s 或 10000s 等。
并且,RNN 的一大问题是它们非常消耗计算资源。即如果需要快速训练 RNN,需要大量的硬件资源。在云端上运行这些模型的成本也很高,随着语音到文本的应用需求快速增长,云计算资源目前甚至赶不上它的需求。
解决方案是什么?
如果序列处理无可避免,那么我们最好能找到可向前预测和向后回顾的计算单元,因为我们处理的大多数实时因果数据只知道过去的状态并期望影响未来的决策。这和在翻译语句或分析录制视频时并不一样,因为我们会利用所有数据并在输入上推理多次。这种向前预测和后向回顾的单元就是神经注意力模块,下面将简要介绍这一点。