关于人工智能:Block-Recurrent-Transformer结合了LSTM和Transformer优点的强大模型

53次阅读

共计 6210 个字符,预计需要花费 16 分钟才能阅读完成。

在以前的文章中,咱们探讨过 Transformer 并不适宜工夫序列预测工作。为了解决这个问题 Google 创立了 Hybrid Transformer-LSTM 模型,该模型能够实现 SOTA 导致工夫序列预测工作。

然而我理论测试成果并不好,直到 2022 年 3 月 Google 钻研团队和瑞士 AI 实验室 IDSIA 提出了一种新的架构,称为 Block Recurrent Transformer [2]。

从名字中就能看到,这是一个新型的 Transformer 模型,它利用了 lstm 的递归机制,在长期序列的建模工作中实现了显著改良。
@“
在介绍它之前,让咱们简要探讨与 LSTMS 相比,Transformer 的劣势和毛病。这将帮忙你理解这个新架构的工作原理。

Transformer vs LSTM

Transformer 最显著的长处总结如下

并行性

LSTM 实现了程序解决: 输出 (比如说句子) 逐字解决。

Transformer 应用非程序解决: 句子是作为一个整体解决的,而不是一个字一个字地解决。

图 1 和图 2 更好地阐明了这种比拟。

图 1: 序列长度为 4 的 LSTM 单元。

‍图 2:Bert 体系结构(简化)

LSTM 须要 8 个工夫步来解决句子,而 BERT[3]只须要 2 个工夫步! 所以 BERT 可能更好地利用古代 GPU 减速所提供的并行性。

下面两个插图都通过了简化: 假如批大小为 1。另外也没有思考 BERT 的非凡令牌,比方它须要 2 个句子等等。

长期记忆

在挪动到将来的令牌之前,LSTM 被迫将它们学习到的输出序列示意状态向量。尽管 LSTMs 解决了梯度隐没的问题,但他依然容易产生梯度爆炸。

Transformer 有更高的带宽,例如在 Encoder-Decoder Transformer[4]模型中,Decoder 能够间接解决输出序列中的每个令牌,包含曾经解码的令牌。如图 3 所示:

图 3:Transformer 中的编码和解码

更好的注意力机制

transformer 应用了一种名为 Self-Attention 的非凡注意力机制: 这种机制容许输出中的每个单词援用输出中的每个其余单词。所以能够应用大的留神窗口(例如 512,1048)。因而,它们十分无效地捕捉了长范畴内程序数据中的上下文信息。

让咱们看看 Transformer 的毛病:

自注意力的计算成本 o(n²)

这其实 Transformer 最大的问题。初始 BERT 模型的极限为 512 令牌。解决此问题的粗爆的办法是间接截断输出句子。为了解决这个问题能够应用 surpass 的办法,将令牌裁减到到 4096。然而对于句子的长度,自注意力的命中老本也是二次的

所以可伸缩性变得十分具备挑战性。这也是为什么前面有许多想法来重组原始的自注意力机制:

图 4: 不同类型自注意力的老本矩阵

Longformer[6]和 Transformer XL[7]等模型针对长格局文本进行了优化,并获得了显著的改良。

然而挑战依然存在: 咱们是否在不就义效率的前提下进一步升高计算成本?

工夫序列的挑战性

尽管 Transformer 在 NLP 畛域占了主导地位,但它们在时序数据方面的胜利却无限。为什么呢? 工夫序列不也是间断数据吗?

Transformer 能够更好地从长期历史中计算工夫步长的输入,而不是以后输出和暗藏状态。这对于本地时态依赖项来说效率较低。总来来说就是短期记忆和长期记忆对工夫序列来说同样重要。

这就是为什么谷歌钻研人员公布了一个用于工夫序列预测的混合深度学习模型[1]: 该模型应用了 Attention,但也包含一个 LSTM 编码器 - 解码器堆栈,它在捕捉部分工夫依赖性方面施展了重要作用。

最初,工夫序列能够是多元的,不仅蕴含静态数据,还有季节性,趋势等等。它们通常须要更非凡的解决。

Block-Recurrent Transformer

该模型的次要冲破是循环单元:他是一个批改的 Transformer 层,然而它以循环的形式工作。

让咱们疾速概述次要特色,而后咱们将深入研究模型的体系结构。

  • 块级并行性:块中的循环单元的过程令牌和块内的所有令牌都并行处理。
  • 大注意力窗口:因为该模型将输出合成为块,因而能够应用很大的注意力窗口(已测试能够达到 4096 个令牌)。因而,这个模型属于长距离 Transformer 的家族(例如Longformer)。
  • 线性复杂性:因为循环单元打将输出进行了宰割,所以模型应用 Sliding Self-Attention 将注意力计算的工夫复杂度缩小到了 O(n)。
  • 更稳固的训练:解决块中的程序对于在长距离内流传信息和梯度可能很有用,并且不会呈现灾难性忘记问题。
  • 信息扩散:块循环在状态向量的块而不是单个向量(例如 RNNS)上运行。该模型能够充分利用循环的特色并更好地捕捉过来的信息。
  • 互操作性:循环单元能够与惯例 Transformer 层连贯。
  • 模块化:循环单元能够程度重叠或垂直重叠,因为循环单元能够以两种模式运行:程度(用于循环)和垂直(用于重叠层)。。
  • 操作老本:增加循环就像增加额定的层一样简略,并且不会引入额定的参数。
  • 效率:与其余长距离的 Transformer 相比,该模型显示出显着改善。

以下两个将具体介绍 Block-Recurrent Transformer 的两个次要组成部分:循环单元Recurrent Cell 构造和带有循环个性的滑动自注意力Sliding Self-Attention with Recurrence

循环单元构造

循环单元时该模型的骨干。然而不要被其形容为“单元”的特色感到困惑。这其实是一个 Transformer 层,然而却通过循环的形式调用

循环单元将接管以下类型的输出类型:

  • 一组带有块大小令牌嵌入 W。
  • 一组“以后状态”向量 S。

输入是:

  • 输入令牌的嵌入 W_out。
  • 一组“下一个状态”嵌入向量。

图 5 显示了循环单元构造。该体系结构非常简单,并且从新应用了许多现有的 Transformer 代码,咱们甚至能够更加“简略”的总结就是把 LSTMCell 替换为 Transformer Cell。

上面将逐渐解释图 5 所示的每个组件:

Self-Attention 和 Cross-Attention

循环单元反对两种类型的操作: 自注意力和穿插注意力。更具体地说:

  • Self-Attention 在雷同嵌入 (K、V 和 Q 矩阵) 中生成的键、值和查问上执行。
  • Cross-Attention 是从其余嵌入生成的 K、V 中执行的自身嵌入生成 Q 进行查问。

回忆一下原始的 Transformer 编码器 - 解码器模型[4],编码器执行自注意力,而解码器中的“编码器 - 解码器注意力”层执行穿插注意力。这是因为查问 Q 来自前一个 Decoder 层,而 K 和 V 来自 Encoder 输入。循环单元在同一层执行这两种操作。换句话说:

循环单元同时进行自我留神 (编码) 和穿插留神(解码)!

程度与垂直模式

如图 5 所示。之前提到的循环单元有两种运作模式:

垂直(重叠): 在这种模式下,模型对输出嵌入执行自留神,对循环状态执行穿插留神。

程度(循环): 与垂直相同,模型在循环状态上执行自留神,在输出嵌入上执行穿插留神。

地位偏差

在图 5 中一个名为 Learned State id 的方框(浅黄色)。让咱们解释一下这是什么,以及为什么须要它。

循环单元之间的状态转移不是单个向量(例如 RNN),而是大量状态向量。因为对每个状态向量利用雷同的 MLP 层(一种规范做法),会导致状态向量无奈辨别。通过几个训练轮次后,它们往往会变得雷同。

为了避免这个问题,作者在状态向量中增加了一组额定的可学习的“状态 IDS”。作者称这种景象为功能性地位偏差。这相似于地位编码,一般 Transformer 将其利用于输出嵌入。Block-Recurrent Transformer 的作者将这种技术利用于循环状态向量,这就是为什么他们应用一个不同的名称以防止混同。

地位编码

Block-Recurrent Transformer 不会将惯例的地位编码利用于输出,因为它们在长序列中不太好。取而代之的是作者应用了 T5 体系结构中引入的驰名技巧[8]:它们在垂直模式下的输出嵌入中增加了地位绝对偏置向量。偏置向量是键和查问之间绝对间隔的学习函数。

门配置

循环单元与其 Transformer 模型之间的另一个区别是残差连贯的应用。

Block Recurrent Transformer 的作者尝试了以下配置:

  • 用门代替残差连贯。(如图 5 所示)。
  • fixed gateLSTM gate 之间进行抉择。

作者进行了几项试验以找到最佳配置。无关更多详细信息,请查看原始论文。

带有循环个性的滑动自注意力

Block Recurrent Transformer 的注意力机制能够说是革命性的摸索,可梳理以下概念:

  • 产生的 QK^TV 矩阵变为“线性化”操作。
  • 用 O(n)逐渐替换 O(n²)。
  • 能够循环调用。

前两个概念曾经在相干工作中被提出[6],[9]。因为它们的发现 Attention 实现了计算量的缩减,然而会十分长的文档中失去成果。Block Recurrent Transformer 将前两种思维与循环联合在一起,这一概念借鉴自传统的 RNN。

线性矩阵产生

在 Transformer 的生态系统中,注意力围绕着 3 个矩阵: 查问 Q、键 K 和值 v。

传统的注意力如下图所示:

Block-Recurrent Transformer 以不同的形式计算注意力评分:首先删除了 softmax 操作。而后依据 [9] 将其重新排列为 Q(K^TV)(如图 5 所示),并以线性化的形式计算。

滑动自注意力

给定长序列的 N 个令牌 s,一个滑动窗口利用了一个因果掩码,因而令牌 s 只能计入本身和先前的 W 令牌。(W 是块大小)。

咱们可视化留神矩阵如下:

图 6:单个训练步骤的优化注意力矩阵。只计算 2 个彩色图块外部的分数,而不是计算残缺矩阵。)

在图 6 中,一个窗口大小 W = 8 和序列 langth n = 16。在先前的训练步骤中计算并缓存了第一个 W 遮蔽令牌。其余的 N 个未遮蔽令牌来自以后输出。

输出序列中的每个令牌都以滑动形式间断地关注上一个 W = 8 的令牌。因而在每一行中都会有 W 次计算。矩阵的高度为 n(咱们句子中的长度)。总成本为 o(nw),而不是全副矩阵 O(n(w+n))。zheyang 绝对于序列 n 的老本是线性的,而不是二次!

在咱们的例子中,Attention 被用于两个大小为 Wx2W 的 tile。让咱们来剖析一下这一连串的事件:

  • 在第一个留神步骤中,输出句子的第一个 W 个令牌将解决前一个句子中最初缓存的 W 个键和值。
  • 在第二个留神步骤中,输出句子的最初 W 个令牌将关注输出句子的第一个 W 个令牌。
  • 这将完结咱们的训练步骤,并将输出句子的最初一个 w 键和值缓存,以用于下一个训练步骤。
  • 这种滑动模式就是为什么咱们称这种机制为滑动自我留神。

留神: 当我说令牌 X 关注令牌 Y 时,咱们并不是指令牌自身: 我指的是那些各自令牌的 K,Q,V!

循环时如何提供帮忙的

滑动自注意力 (非循环版本) 曾经在晚期论文 [6] [7] 中应用,不过有一些不同:

  • 在以前的版本中,输出的句子没有分块。应用简略的滑动自我留神的模型是一次获取所有的输出。这就限度了他们可能无效解决的信息量。
  • 后面训练步骤中应用的缓存 k 和 v 是不可微的——这意味着它们在反向流传期间不会更新。然而在循环版本中,滑动窗口有一个额定的劣势,因为它能够在多个块上反向流传梯度。
  • 原滑动自留神模型最顶层的实践承受域为 W *L,其中 L 为模型层数。在循环版本中,接管域实际上是有限的! 这就是为什么在近程内容中表现出色的起因。

试验后果

最初,对 Block-Recurrent Transformer 进行了测试。

应用的工作是自回归语言建模,指标是在给定一个句子的状况下预测下一个单词。

该模型在 3 个数据集上进行测试:PG19、arXiv 和 Github。它们都蕴含很长的句子。

作者测试了 Block-Recurrent Transformer,并应用 Transformer XL 作为基线。Block-Recurrent Transformer 配置为两种模式:

单循环模式: 作者应用了一个 12 层的 Transformer,只有循环在第 10 层。

循环模式: 应用雷同的模型,只是这一次第 10 层不只是循环输入给本人: 第 10 层的输入在解决下一个块时播送给所有其余层。因而,层 1 - 9 能够穿插解决输出,使模型更弱小,但在计算上更低廉。

这些模型应用 perplexity (语言模型的罕用度量规范) 进行评估。

对于那些不晓得的人:perplexity被定义为 P =2^L,其中 L 是惯例熵。

直观上讲在语言建模的环境中,能够这样思考 perplexity: 如果 perplexity 的值是 30,那么预测句子中的下一个单词就像猜对一个有 30 面骰子的后果一样不确定。perplexity 越低越好。

试验结果表明,Block-Recurrent Transformer 在复杂度和速度方面都显著优于 Transformer XL。

反馈模式优于单循环模式。然而作者指出,额定的性能晋升并不能补救额定的复杂性。

论文作者还尝试了各种配置,如增加或跳过门。无关更多信息,请查看原始论文[2]。

总结

Block-Recurrent Transformer 是一篇突破性的论文,利用传统的 RNN 递归来减少长文档中的 Transformer。

我强烈建议浏览原始论文 [2] 并应用本文作为辅助来帮忙了解。

因为这篇论文很新作者没有公布任何源代码,然而在 Github 上有一些非官方的实现,有趣味的能够自行搜寻

援用

  1. Dosovitskiy et al., An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale (2020)
  2. DeLesley Hutchins et al. Block Recurrent Transformers (March 2022)
  3. Jacob Devlin et al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (May 2019)
  4. A. Vaswani et al. Attention Is All You Need (Jun 2017)
  5. Kyunghyun et al. On the Properties of Neural Machine Translation: Encoder-Decoder Approaches
  6. Iz Beltagy et al. Longformer: The Long-Document Transformer, Allen Institute for Artificial Intelligence (2020)
  7. Zihang Dai et al. Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context (2019)
  8. Colin Raffel et al. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer (2019)
  9. Angelos Katharopoulos et al. Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention (2020)

https://avoid.overfit.cn/post/b813e4e85ab9457fa9553230109a37ae

作者:Nikos Kafritsas

正文完
 0