就像 20 世纪初,爱因斯坦的 Annus mirabilis 论文成为了量子力学的基础。只是这一次,是 AlexNet 论文 [1],这是一种挑战计算机视觉的架构,并重新唤起了人们对机器学习(后来转变为深度学习)的兴趣。在过去的十年里,人们见证了机器学习领域革命性的进步,这是无可否认的。
这种巨大增长带来的问题是很难正确评估每一个突破:在新的突破还未开始普及时,另一个更强大、更快或更便宜的方法就会出现。这样巨大的增长同时也带来了更多的炒作,这些炒作吸引了许多新人,而这些新人往往充满热情但经验不足。
深度学习领域中被误解最多的的突破是RNN。如果你用搜索诸如“LSTM已死”和“RNN已死”之类的关键词,你会发现大量的结果,到底是不是这样呢?本文将展示RNN仍然在相关的许多实际场景中起着巨大的作用。
本文不仅仅讨论 LSTM 和 Transformer。还将讨论学习如何公正地评估数据科学中的概念。
LSTM
每家大型科技公司都采用 LSTM;没有 LSTM 就没有 NLP 研究。
长短期记忆网络 - LSTM [2]是在 1997 年被创造出来的,但是由于当时的算力问题直到在 2014 年才开始起飞。它属于循环神经网络 - RNN [3] 中的一员,常常与门控循环单元 - GRU [4]进行比较。
随着 GPU 的发展和第一个深度学习框架的出现,LSTM 成为主导 NLP 领域的最先进模型。2013 年词嵌入的发现也有助于建立迁移的学习机制。事实上,当时几乎所有 NLP 任务的标准组件都是:a) 预训练的词嵌入,b) LSTM,以及 c) seq2seq架构 [5]。
在那个时期,每个人都同意 LSTM 在 NLP 领域占据主导地位:它们被用于语音识别、文本到语音合成、语言建模和机器翻译。每家大型科技公司都接受了它们;没有 LSTM 就没有 NLP。
谷歌为机器翻译创建的最佳模型之一如下所示:
[6] 中介绍的这种复杂模型是谷歌翻译服务背后的架构。与之前的版本相比,它减少了 60% 的翻译错误。它大量使用了 LSTM,形成了著名的编码器-解码器拓扑(包括双向 LSTM)。
此实现还利用了 Attention,这是一种允许模型根据需要关注输入序列的相关部分的机制。如图 1 所示,其中编码器的顶部向量使用注意力分数进行加权。换句话说,每个时间步的每个单词都使用一个可学习的分数来加权,从而最大限度地减少错误。有关更多信息,可以阅读原始论文 [5]。
但是LSTM 有两个主要缺点:
- 它们在训练过程中不容易并行化。
- 由于它们的循环性质,它们可以建模的序列长度是有限的。
这个会在稍后详细介绍。
Transformers
RNN 是顺序模型,这意味着单词是按顺序处理的。但是 Transformer 并行处理所有单词。
2017 年,Google 推出了 Transformer [7] 架构,这是 NLP 生态系统的里程碑。这个新模型通过提出 Multi-Head Attention 机制来深入研究 Attention:
- 充分利用自注意力,从而获得卓越的性能。
- 采用模块化结构,使矩阵运算更具并行性化。换句话说,它运行得更快并且具有更好的可扩展性。
Transformed 模型中没有使用 LSTM。即使在上下文信息很重要的第一层(LSTM 可能有用)也没有用,Transformer 论文提出了一种称为位置编码的不同的机制。这也揭示了两种模型之间的主要区别:RNN 是顺序模型,意味着单词是按顺序处理的。但是 Transformer 并行处理所有单词。这才能够大大减少训练时间。
从那时起Transformer 的核心哲学一直是NLP研究的基础,并催生了很多新的变体,看看下图:
时间序列
LSTM 和 Transformer 都非常擅长对序列信息进行建模。因此,它们理论上也都可以应用于时间序列预测案例。
实验结果表明,它们在准确性方面并不能决定性地优于传统的统计方法(例如 ARIMA)。另一方面,统计方法和基于 rnn 的方法相结合则更有效。一个这样的例子是 Uber 构建的 ES-RNN 模型,该模型最终赢得了 M4 竞赛:它是一种在扩张的 LSTM 之上使用指数平滑的混合模型。
当然,Transformer 也受到了考验。对于时间序列预测,最常用的方法是:使用原始的 Transformer,并将位置编码层替换为 Time2vec 层。但是目前看,Transformer 模型都无法超越统计方法。
另外就是,有几点特殊的说明:
- 这并不意味着统计方法总是更好。例如,如果有大量数据,LSTM 的性能可能比 ARIMA 更好。
- 统计方法需要更多的数据预处理:这可能包括使时间序列的平稳性、消除季节性、波动性等。LSTM 可以更容易地捕捉序列的自然特征,至少通过使用更简单的技术可以做到这一点。
- 统计方法的通用性较差:例如,自回归方法无法处理未来未知的额外特征。
综上所述,就预测能力而言,ML 方法并不总是优于统计方法。
直到 2018-2019 年,研究才得到了巨大的进展,深度学习模型开始在时间序列预测任务中变得更具竞争力。有关时间序列预测和深度学习的更全面分析:
图3:Temporal Fusion Transformer
图4:DeepAR
上面两张图显示了两个最先进的模型。它们分别描述了 Google 的 Temporal Fusion Transformer 和 Amazon 的 DeepAR 的架构。从图中看到什么有趣的事情了吗?这些模型有很多有趣的地方,但与本文主题有关的最重要的一点是:
两种模型都使用 LSTM!
DeepAR 是一种复杂的时间序列模型,它结合了自回归和深度学习的特征。图 4 显示的 h_i, t 向量实际上是 LSTM 单元的隐藏状态。然后使用这些隐藏状态来计算高斯分布的 μ 和 σ 参数。从该分布中,选择 n 个样本,其中值代表预测值。
Temporal Fusion Transformer - TFT 是一种用于时间序列的多层纯深度学习模型。该模型具有 LSTM 编码器-解码器以及提供可解释预测的新颖注意力机制。
本文中不会在这里深入研究这些模型的细节,我们这里只说重点:这两种深度学习模型都优于传统的统计方法。此外,这两种模型都更加通用,因为它们可以处理多个时间序列并接受更丰富的特征集(TFT 略胜一筹)。
Recurrence 和 Attention 是如何关联的
为了说明这一点,这里引用 TFT 论文的内容:
为了学习不同尺度的时间关系,TFT 使用循环层进行局部处理,并使用可解释的自注意力层进行长期依赖学习。
考虑到我们目前所知道的,以及上面的引用,现在可以把这些点联系起来:
循环网络非常擅长捕捉序列的局部时间特征,而注意力则更擅长学习长期动态。
这并不是一个武断的结论,因为TFT 论文的作者通过执行消融研究证明了这一点(消融研究通过删除或替换复杂机器学习系统的某些组件以了解每个组件的贡献)。
TFT 的作者在其他组件中测试了 LSTM 编码器-解码器层:通过用原始 Transformer 的标准位置编码层替换它来进行消融研究,最后他们发现了两件事:
- seq2seq的使用有助于模型的性能。
- 在执行基准测试的 5 个数据集中4 个数据集,LSTM 层实现了更高的性能。
所以我们可以有把握地得出结论,LSTM 层仍然是时间序列深度学习模型中的不可替代的组件。此外,它们不会与注意力机制相冲突。相反它们可以与基于注意力的组件相结合,并且以进一步提高模型的效率。
LSTM 中的宝藏:条件输出
这是 LSTM 最被忽视的优势之一,但是直到现在许多从业者仍然没有意识到这一点。
如果你已经使用过普通的RNN,应该会知道这种类型的网络只能处理时间数据,即有各种依赖关系的以序列表示的数据。但是它们不能直接对静态元数据或不随时间变化的数据建模。
而在 NLP 中静态元数据是不相关的。NLP 模型专注于单词的词汇表,其中每个单词都通过嵌入进行表示,这是整个模型的统一概念。单词在文档中的位置并不重要,重要的是 NLP 模型可以学习每个单词的正确上下文感知表示(周围单词内容)。所以一个特定的单词可以有不同的嵌入,这取决于它的含义和它在句子中的位置(这里的位置并不是顺序而是他前后的单词是什么)。
但是,在时间序列模型中,不随时间变化的数据影响要大得多。例如,有一个涉及商店产品的销售预测场景。产品的销售量可以建模为时间序列,但也会受到假期等外部因素的影响。因此,一个好的预测模型也应该考虑这些变量。这就是 TFT 所做的(下图 5)。但是TFT是如何实现的呢?
图5:外部静态变量对预测的影响
TFT专为集成静态元数据而设计。它使用了各种技术,这些技术在原始论文中有描述。然而,最重要的是与lstm有关。
LSTM可以无缝地执行这个任务,使用[11]中首先引入的一个技巧:不将LSTM的初始h_0隐藏状态和单元格状态c_0设置为0(或随机),而是使用指定的向量/嵌入来初始化它们。或者我们可以让这些向量在拟合过程中可训练(实际上,这就是TFT所做的)。通过这种方式,LSTM单元格的输出被适当地限制在外部变量上,而不会影响它的时间依赖性。
LSTM vs TCN
在注意力机制和Transformers出现之前,还有另一种有望改变世界的新模式。这些就是时间卷积网络(TCN)。
TCN 使用扩张卷积,它在不同长度的输入序列上进行padding - 使它们能够检测不仅彼此接近而且在完全不同位置的数据之间的依赖关系。
TCN 于 2016 年 [12] 首次引入并于 2018 年 [13] 正式化,它利用卷积网络对基于序列的数据进行建模。它们也是时间序列预测任务的理想人选。
图 6:过滤器大小 k = 3 和扩张因子 d = 1、2、4 的扩张卷积。感受野可以覆盖输入序列中的所有数据点 x_0 ... x_T。
TCN 的“秘籍”是扩张卷积,如图 6 所示。标准 CNN 使用固定大小的内核/过滤器,因此它们只能覆盖紧邻的数据元素。而TCN 使用扩张卷积,对不同长度的输入序列进行padding - 使它们能够检测不仅彼此接近而且位于完全不同位置的项目之间的依赖关系。
除此之外,还使用残差连接等标准的深层CNN所使用的方法。这里我们也不会深入研究细节,只将关注 LSTM 的差异:
- 速度:一般来说,TCN 比 LSTM 快,因为它们使用卷积,可以并行完成。在实践中,通过使用大量扩张和残差连接,TCN 最终可能会变慢。
- 输入长度:TCN 和 LSTM 都能够接受可变长度输入。
- 内存占用:平均而言,TCN 比 LSTM 需要更多内存,因为每个序列都由多个膨胀层处理。这取决于定义每个模型变得多么复杂的超参数。
- 性能:最初的论文表明 TCN 优于 LSTM。但是在实践中,情况并非总是如此。[13] 中的一项更详尽的研究表明,在某些任务中,TCN 更好而在其他任务中LSTM 更有效。
两种模式都有其优点和缺点。没有最终的胜利者,选择来说最好的方法是评估它们以及最适合的情况。
但是这种方法现在好像已经过时了,虽然在图像识别中还在大量使用扩张卷积,那是因为图像的表示方式的特点,与时序的表格数据有很大的不同。另外就是通过应用单个 TCN 或 LSTM 模型来实现最先进的性能这种方式应该已经不存在了,现在的案例都会考虑更多外部参数,这就意味着必须使用多个组件/模型进行组合。
Kaggle 中的深度学习和时间序列
到目前为止,我们一直在从学术角度评估单个模型。如果要更详细的观点,则不能忽略实际的应用。
对于实际应用来说一个很好的评估基础是 Kaggle,它提供了关于数据科学领域实践方面的验证。为了证明本文的主题,所以寻找的比赛都是近期开始的,例如这个比赛:呼吸机压力预测(https://www.kaggle.com/c/ventilator-pressure-prediction)。任务是根据控制输入的顺序预测机械肺内的压力顺序。每个训练实例都可以被视为它自己的时间序列,因此使任务成为一个多时间序列问题。
这场比赛具有挑战性,原因有 3 个:
- 竞争问题可以表述为回归和分类任务。
- 数据集可以进行创造性的特征工程。
- 每个数据点由不同的序列表示,统计模型是不行的。
所以对于本文的主题内容,我们总结两件有趣的事情:
- 排名前 3 的团队以及许多其他团队在他们的最终解决方案中至少使用了一个基于 LSTM 的组件(例如堆叠式 LSTMS、双向 LSTMS)。
- 获胜团队使用了一个多层次的深度架构,其中包括 LSTM 网络和 Transformer 块等。该架构如图 7 所示:
图7:top1解决方案架构
该团队还实施了许多其他有助于他们获胜的技术。但是这里重要的是:每种模型都有其独特的优势和劣势,因此不能将自己局限于单一模型或单一方法。
CNN的命运
希望这篇文章对 LSTM 的价值做出了很好的论证。但是毫无疑问Transformers 是机器学习领域的一个惊人突破。这种成功水平将确定性地导致未来更高水平的发展。
2020 年,Transformers 适应了计算机视觉,诞生了 Vision Transformer (ViT)。论文引发了进一步的研究,最终这个经过额外修改的新模型能够在许多图像分类任务中胜过 CNN。更好的是,研究人员发现将这两种成分结合起来会产生更好的结果。我们将在未来看到更多的 ViT。
希望这一次我们能避免“CNNs之死”之类的大胆且无知的言论,虽然现在已经看到很多这样的流量标题党了,但是希望本文的内容可以让大家更接近于理性,要有自己的判断力。
结束语
简而言之,本文研究讨论了以下几点:
- 几乎不可能正确评估机器学习领域突破的影响。
- Transformers 的出现重塑了格局:LSTM,尤其是在 NLP 中,不再是关注的焦点。
- 关于时间序列,LSTM 更有用。他们还无法被替代(至少现在没有)。
- 数据科学是一门跨领域的学科,需要结合各种方法/模型来应对这些挑战。
本文引用:
- Alex et al. “ImageNet Classification with Deep Convolutional Neural Networks” (NIPS 2012)
- Hochreiter et al., “Long Short-term Memory” (Neural Computation, 1997)
- Rumelhart et al. Learning internal representations by error propagation (Sept. 1985)
- Kyunghyun et al. On the Properties of Neural Machine Translation: Encoder-Decoder Approaches
- Sutskever et al 2014, Sequence to Sequence Learning with Neural Networks (2014)
- Yonghui Wu et al. Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation (2016)
- A. Vaswani et al. Attention Is All You Need, Jun 2017
- Seyed Mehran Kazemi et al. Time2Vec: Learning a Vector Representation of Time**, July 2019
- Bryan Lim et al., Temporal Fusion Transformers for Interpretable Multi-horizon Time Series Forecasting (International Journal of Forecasting December 2021)
- D. Salinas et al., DeepAR: Probabilistic forecasting with autoregressive recurrent networks, International Journal of Forecasting (2019).
- Andrej Karpathy, Li Fei-Fei, Deep Visual-Semantic Alignments for Generating Image Descriptions
- Lea et al. Temporal convolutional networks for action segmentation and detection (CVPR 2017)
- Bai et al., An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling (2018)
- Dosovitskiy et al., An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (2020)
作者:Nikos Kafritsas