LSTM 已死,事实真是这样吗?

就像 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 有两个主要缺点:

  1. 它们在训练过程中不容易并行化。

  2. 由于它们的循环性质,它们可以建模的序列长度是有限的。

这个会在稍后详细介绍。

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 之上使用指数平滑的混合模型。

完整文章:

https://www.overfit.cn/post/7d2cd6b9c3e542bbb12bb1636e9b3bb6

posted @   deephub  阅读(110)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-03-25 手写批量线性回归算法:在Python3中梯度下降方法实现模型训练
点击右上角即可分享
微信分享提示