Hugging Face 阅读,2021年2月 – 长程 Transformer

Hugging Face 阅读,2021年2月,长程 Transformer

Efficient Transformers论文中的高效Transformer分类

由Teven Le Scao、Patrick Von Platen、Suraj Patil、Yacine Jernite和Victor Sanh合著。

每个月,我们会选择一个专题进行研究,阅读最近发表的四篇相关论文。然后,我们会撰写一篇简短的博客文章,总结它们的研究结果、共同趋势以及我们在阅读后的后续工作中遇到的问题。2021年1月的第一个专题是稀疏性和修剪,2021年2月我们讨论了Transformer中的长程注意力。

引言

在2018年和2019年大型Transformer模型的兴起之后,出现了两个快速发展的趋势,以降低它们的计算需求。首先,条件计算、量化、蒸馏和修剪等方法使得在计算受限的环境中可以进行大模型的推理;我们在上一篇读书小组文章中已经提到了这一点。研究界随后转向降低预训练成本。

特别是,一个问题成为了这些努力的核心:相对于序列长度,Transformer模型在内存和时间上的成本呈二次增长。为了能够高效地训练非常大的模型,2020年涌现了大量论文来解决这个瓶颈,并将Transformer的序列长度扩展到了一开始在NLP领域中的默认512或1024。

这个专题从一开始就是我们研究讨论的重要部分,我们的Patrick Von Platen已经专门撰写了一个由四部分组成的系列文章介绍了Reformer。在这个读书小组中,我们不会试图涵盖每种方法(因为有太多了!),而是将重点放在四个主要想法上:

  • 自定义注意力模式(使用Longformer)
  • 循环(使用Compressive Transformer)
  • 低秩近似(使用Linformer)
  • 核近似(使用Performer)

如果想了解更详细的内容,请参阅Efficient Transformers: A Survey和Long Range Arena。

总结

Longformer – 长文档Transformer

Iz Beltagy、Matthew E. Peters、Arman Cohan

Longformer通过将传统的自注意力替换为窗口化/局部/稀疏(与Sparse Transformers(2019)相似)注意力和与序列长度线性扩展的全局注意力,解决了Transformer的内存瓶颈问题。与以前的长程Transformer模型(例如Transformer-XL(2019),Reformer(2020),Adaptive Attention Span(2019))不同,Longformer的自注意力层被设计为标准自注意力的替代,因此可以利用预训练的检查点进行进一步的预训练和/或在长序列任务上进行微调。

标准的自注意力矩阵(图a)与输入长度呈二次增长:

来自Longformer的图

Longformer针对自回归语言建模、编码器预训练和序列到序列任务使用不同的注意力模式。

  • 对于自回归语言建模,通过将因果自注意力(如GPT2)替换为扩张的窗口自注意力(图c),可以获得最佳结果。在这种注意力模式下,假设序列长度为n,窗口长度为w,内存消耗从n^2降低到wn,即在w<<n的假设下,与序列长度呈线性增长。
  • 对于编码器预训练,Longformer将双向自注意力(如BERT)替换为局部窗口化和全局双向自注意力的组合(图d)。这将内存消耗从n^2降低到wn+gn,其中g是全局注意的令牌数量,同样与序列长度呈线性增长。
  • 对于序列到序列模型,只有编码器层(如BART)被局部和全局双向自注意力的组合替换(图d),因为对于大多数序列到序列任务,只有编码器处理非常大的输入(例如摘要)。因此,内存消耗从n_s^2+n_snt+n_t^2降低到wn_s+gn_s+n_snt+n_t^2,其中n_s和n_t分别是源(编码器输入)和目标(解码器输入)的长度。为了使Longformer编码器-解码器模型高效,假设n_s远大于n_t。

主要发现

  • 作者提出了扩张窗口自注意力机制(图c),并证明与只有窗口/稀疏自注意力机制(图b)相比,它在语言建模方面取得了更好的结果。窗口大小随着层数的增加而增加。这种模式在下游基准测试中的表现进一步超越了先前的架构(如Transformer-XL或自适应跨度注意力)。
  • 全局注意力允许信息在整个序列中流动,并将全局注意力应用于任务驱动的标记(例如QA中的问题标记,用于句子分类的CLS标记)可以在下游任务中获得更强的性能。使用这种全局模式,Longformer可以成功地应用于在迁移学习环境中的文档级自然语言处理任务。
  • 标准预训练模型可以通过简单地将标准自注意力替换为本文提出的长程自注意力,并在下游任务上进行微调来适应长距离输入。这避免了针对长距离输入的昂贵预训练。

后续问题

  • 扩张窗口自注意力的增加尺寸(通过层次结构)与计算机视觉中增加堆叠CNN的感受野的发现相呼应。这两个发现之间有什么关联?可转移的学习是什么?
  • Longformer的编码-解码架构对于不需要长目标长度(例如摘要)的任务效果很好。然而,在需要长目标长度的长距离序列到序列任务中(例如文档翻译,语音识别等),它会如何工作,特别是考虑到编码器-解码器模型的交叉注意力层?
  • 在实践中,滑动窗口自注意力依赖于许多索引操作,以确保对称的查询-键权重矩阵。这些操作在TPU上非常慢,这凸显了这种模式在其他硬件上的适用性问题。

用于长距离序列建模的压缩变压器

Jack W. Rae, Anna Potapenko, Siddhant M. Jayakumar, Timothy P. Lillicrap

Transformer-XL(2019)表明,在内存中缓存先前计算的层激活可以提升语言建模任务(例如enwik8)的性能。该模型不仅关注当前的n个输入标记,还可以关注过去的n m个标记,其中n m是模型的内存大小。Transformer-XL的内存复杂度为O(n^2 + n n_m),这表明对于非常大的n m ,内存成本可能会显著增加。因此,当缓存的激活数量大于n m时,Transformer-XL必须最终丢弃过去的激活。压缩变压器通过添加一个额外的压缩内存来有效地缓存本来最终会被丢弃的过去的激活。这样,模型可以学习到更好的长程序列依赖关系,从而可以访问更多过去的激活。

来自压缩变压器的图片

选择一个压缩因子c(在图示中为3),以决定过去激活被压缩的速率。作者尝试了不同的压缩函数f c,例如最大/平均池化(无参数)和1D卷积(可训练层)。压缩函数通过时间反向传播或局部辅助压缩损失进行训练。除了长度为n的当前输入之外,该模型还关注常规内存中的n m个缓存激活和n c m个压缩内存激活,从而允许l ×(n m + c n c m)的长时序依赖关系,其中l是注意层的数量。这将通过额外的l × c × n c m标记增加Transformer-XL的范围,并且内存成本为O(n^2 + n n_m + n n_{cm})。实验在强化学习、音频生成和自然语言处理方面进行。作者还介绍了一个名为PG19的新的长程语言建模基准。

主要发现

  • 压缩Transformer在语言建模的困惑度上明显优于最先进的技术,尤其是在enwik8和WikiText-103数据集上。特别是,在建模长序列上出现的稀有词汇时,压缩内存起到了至关重要的作用。
  • 作者们表明,该模型通过越来越多地关注压缩内存而不是常规内存来保留显著信息,这与更早的记忆被较少访问的趋势相悖。
  • 所有的压缩函数(平均池化、最大池化、1D卷积)产生了类似的结果,证实了内存压缩是一种有效的存储过去信息的方式。

后续问题

  • 压缩Transformer需要一种特殊的优化方案,其中有效批次大小逐渐增加,以避免较低学习率导致的性能显著下降。这种影响尚不为人所理解,需要进行更多的分析。
  • 与BERT或GPT2等简单模型相比,压缩Transformer有更多的超参数:压缩率、压缩函数和损失、常规和压缩内存大小等。目前尚不清楚这些参数是否能够很好地推广到不同任务(除了语言建模之外)或类似学习率一样,使训练变得非常脆弱。
  • 有趣的是,探索常规内存和压缩内存,以分析通过长序列记忆了哪些信息。揭示最显著的信息可以为减少维持完整的令牌级序列的冗余的方法(如Funnel Transformer)提供指导。

Linformer:具有线性复杂性的自注意力

Sinong Wang,Belinda Z. Li,Madian Khabsa,Han Fang,Hao Ma

目标是将自注意力相对于序列长度 n n n 的复杂性从二次减少到线性。本文观察到注意力矩阵是低秩的(即它们不包含 n × n n × n n × n 价值的信息),并探索使用高维数据压缩技术构建更高效的内存Transformer的可能性。

所提出方法的理论基础基于Johnson-Lindenstrauss引理。假设在高维空间中有 m m m 个点。我们希望将它们投影到低维空间,同时保持数据集的结构(即点之间的相互距离)并具有误差边界 ε \varepsilon ε 。Johnson-Lindenstrauss引理指出,我们可以选择一个小的维度 k ∼ 8 log ⁡ ( m ) / ε 2 k \sim 8 \log(m) / \varepsilon^2 k ∼ 8 lo g ( m ) / ε 2 并通过尝试随机正交投影在多项式时间内找到适合的投影到 Rk 。

Linformer通过学习注意力上下文矩阵的低秩分解将序列长度投影到较小的维度。然后,可以巧妙地重新编写自注意力的矩阵乘法,从而无需计算和存储大小为 n × n n × n n × n 的矩阵。

标准Transformer:

Attention ( Q , K , V ) = softmax ( Q ∗ K ) ∗ V \text{Attention}(Q, K, V) = \text{softmax}(Q * K) * V Attention ( Q , K , V ) = softmax ( Q ∗ K ) ∗ V

              (n * h)                (n * n)   (n * h)

Linformer:

LinAttention ( Q , K , V ) = softmax ( Q ∗ K ∗ W K ) ∗ W V ∗ V \text{LinAttention}(Q, K, V) = \text{softmax}(Q * K * W^K) * W^V * V LinAttention ( Q , K , V ) = softmax ( Q ∗ K ∗ W K ) ∗ W V ∗ V

              (n * h)                (n * d)   (d * n)   (n * h)

主要发现

  • 自注意力矩阵是低秩的,这意味着它的大部分信息可以通过其前几个最高特征值恢复,并且可以用低秩矩阵逼近。
  • 很多工作都致力于降低隐藏状态的维度。本文表明,通过学习投影来减少序列长度可以成为一种强有力的替代方法,同时将自注意力的内存复杂性从二次减少到线性。
  • 增加序列长度不会影响Linformer的推理速度(时钟时间),当Transformer具有线性增长时。此外,Linformer的自注意力不会影响收敛速度(更新次数)。
Figure taken from Linformer

后续问题

  • 尽管投影矩阵在各层之间是共享的,但这里提出的方法与约翰逊-林登斯特劳斯定理相矛盾,该定理指出随机正交投影就足够了(在多项式时间内)。随机投影在这里是否有效?这让人想起了Reformer,它在局部敏感哈希中使用随机投影来降低自注意力的内存复杂度。

用Performers重新思考注意力

Krzysztof Choromanski,Valerii Likhosherstov,David Dohan,Xingyou Song,Andreea Gane,Tamas Sarlos,Peter Hawkins,Jared Davis,Afroz Mohiuddin,Lukasz Kaiser,David Belanger,Lucy Colwell,Adrian Weller

目标(再次!)是将自注意力的复杂度相对于序列长度n n n)从二次降低到线性。与其他论文不同的是,作者指出自注意力的稀疏性和低秩性先验在其他模态(语音、蛋白质序列建模)中可能不成立。因此,本文探索了在没有任何关于注意力矩阵的先验知识的情况下降低自注意力的内存负担的方法。

作者们观察到,如果我们可以通过softmax( softmax ( Q × K ) × V \text{softmax}(Q × K) × V softmax ( Q × K ) × V )来执行矩阵乘法K × V K × V K × V,那么我们就不需要计算大小为n x n n x n n x n的Q x K Q x K Q x K矩阵,这是内存瓶颈。他们使用随机特征映射(也称为随机投影)来近似softmax:

softmax ( Q ∗ K ) ∼ Q ’ ∗ K ’ = ϕ ( Q ) ∗ ϕ ( K ) \text{softmax}(Q * K) \sim Q’ * K’ = \phi(Q) * \phi(K) softmax ( Q ∗ K ) ∼ Q ’ ∗ K ’ = ϕ ( Q ) ∗ ϕ ( K )

其中 p h i phi p h i 是一个非线性适当的函数。然后:

Attention ( Q , K , V ) ∼ ϕ ( Q ) ∗ ( ϕ ( K ) ∗ V ) \text{Attention}(Q, K, V) \sim \phi(Q) * (\phi(K) * V) Attention ( Q , K , V ) ∼ ϕ ( Q ) ∗ ( ϕ ( K ) ∗ V )

从2000年代初的机器学习论文中获得启发,作者引入了FAVOR+(快速正交随机正(+)特征)的过程,用于找到自注意力矩阵的无偏或几乎无偏估计,具有均匀收敛和低估计方差。

主要发现

  • FAVOR+过程可用于高精度地近似自注意力矩阵,而无需对注意力矩阵的形式进行任何先验设定,使其适用于标准自注意力的替代,并在多个应用和模态中取得强大的性能。
  • 关于如何以及如何不近似softmax的非常全面的数学研究突显了在深度学习时代开发的原理方法的相关性。
  • FAVOR+还可以应用于高效建模除softmax之外的其他可核化注意力机制。

后续问题

  • 即使对注意机制的近似是紧密的,小错误也会在变压器层中传播。这引发了使用FAVOR+作为自注意力的近似来微调预训练网络的收敛性和稳定性的问题。
  • FAVOR+算法由多个组件组合而成。目前还不清楚这些组件中哪些对性能有最大的经验影响,特别是考虑到本文中考虑的各种模态。

阅读小组讨论

预训练的基于Transformer的自然语言理解和生成模型的发展令人印象深刻。使这些系统在生产环境中高效运行已经成为一个非常活跃的研究领域。这强调了我们在方法论和实践两方面仍有很多需要学习和构建的内容,以实现高效和通用的基于深度学习的系统,特别是对于需要对长程输入进行建模的应用。

上述四篇论文提供了不同的方法来处理自注意力机制的二次内存复杂度,通常通过将其减少为线性复杂度。Linformer和Longformer都依赖于一个观察结果,即自注意力矩阵不包含 n × n n × n n × n 的信息量(注意力矩阵是低秩和稀疏的)。Performer提供了一种基于原则的方法来近似softmax注意力核函数(以及任何可核化的超过softmax的注意力机制)。Compressive Transformer提供了一种基于递归的建模长程依赖关系的正交方法。

这些不同的归纳偏好在计算速度和训练设置之外的泛化方面都有影响。特别是,Linformer和Longformer在不同的权衡方面有所区别:Longformer明确设计了自注意力的稀疏注意力模式(固定模式),而Linformer学习了自注意力矩阵的低秩矩阵分解。在我们的实验中,Longformer比Linformer效率低,并且目前高度依赖于实现细节。另一方面,Linformer的分解仅适用于固定上下文长度(在训练时固定),无法适应更长的序列而不需要特定的适应性。此外,它无法缓存先前的激活值,而这在生成设置中非常有用。有趣的是,Performer在概念上是不同的:它学习近似softmax注意力核函数,而不依赖于任何稀疏性或低秩假设。对于不同数量的训练数据,这些归纳偏好之间的比较问题仍然存在。

所有这些工作都强调了自然语言中长程输入建模的重要性。在工业界,常常会遇到需要以高效和稳健的方式对非常长的序列进行建模的用例,例如文档翻译、文档分类或文档摘要。最近,零样例启动(类似于GPT3)也成为标准微调的一种有前途的替代方法,增加样例数量(从而增加上下文大小)稳定地提高性能和稳健性。最后,在其他模态,如语音或蛋白质建模中,通常会遇到超过标准512个时间步长的长序列。

对长输入进行建模不与对短输入进行建模相对立,而应从更短到更长序列的连续性的角度考虑。Shortformer、Longformer和BERT提供了证据,表明在短序列上训练模型,并逐渐增加序列长度会加速训练并提高下游性能。这一观察符合这样一个直觉:当数据量较少时,获得的长程依赖关系可能依赖于偶然的相关性,而不是稳健的语言理解。这与Teven Le Scao在语言建模上进行的一些实验相呼应:在低数据范围内,LSTMs是比Transformer更强的学习器,并在规模较小的语言建模基准测试(如Penn Treebank)上提供更好的困惑度。

从实际角度来看,位置嵌入的问题也是一个关键的方法论方面,涉及计算效率的权衡。相对位置嵌入(在Transformer-XL中引入,Compressive Transformers中使用)具有吸引力,因为它们可以很容易地扩展到尚未见过的序列长度,但与此同时,相对位置嵌入在计算上是昂贵的。另一方面,绝对位置嵌入(在Longformer和Linformer中使用)对于长度超过训练时的序列来说不太灵活,但在计算上更高效。有趣的是,Shortformer通过将位置信息添加到自注意力机制的查询和键中,而不是将其添加到令牌嵌入中,引入了一种简单的替代方法。该方法称为位置注入注意力,并且已被证明既高效又产生强大的结果。

@Hugging Face 🤗:长程建模

Longformer的实现和相关的开源检查点可通过Transformers库和模型中心获取。Performer和Big Bird(基于稀疏注意力的长程模型)目前正在作为我们的模型调用计划的一部分进行开发,该计划旨在让社区参与其中,以促进开源贡献。如果您曾经想过如何为transformers做出贡献,但不知道从何开始,我们将非常高兴收到您的来信!

对于进一步阅读,我们推荐查看Patrick Platen的有关Reformer的博客、Teven Le Scao的关于Johnson-Lindenstrauss近似的帖子、Efficient Transfomers: A Survey和Long Range Arena: A Benchmark for Efficient Transformers。

下个月,我们将介绍自学方法和应用。三月见!