[NLP论文]Longformer: The Long-Document Transformer论文翻译及理解

摘要

基于Transformer的模型由于自注意力操作不能处理长序列,自注意力操作是序列长度的二次方。为了定位这个限制,我们提出一种Longformer的方法,它使用的注意力机制能够随着序列长度线性增长,使得能够很容易的处理具有数千或者更长token的文档。Longformer的注意力机制可以使用任务驱动的全局注意力来随时替换典型的自注意力机制。

我们使用字符级语言模型来评估Longformer,并在text8 和 enwik8上获得SOTA结果。同RoBERTa相比,我们的Longformer模型在长文本上的效果始终优于它。

最后,我们提出了Longformer-Encoder-Decoder(LED),一个Longformer的变形,用来支持长文本生成seq2seq任务,并在arXiv的摘要数据集上证明它的有效性。

Longformer

传统的自注意力机制,其时间复杂度为O(n ^ 2),空间复杂度为O(n),这里提出了一种新的注意力模式,其时间复杂度同输入序列长度成线性比例,使其对于长序列更有效。具体方法是,使用“注意模式”来稀疏化完整的自注意矩阵,该模式制定了一对相互关注的输入位置。(个人理解:事实上时间复杂度应该是O(m * n^2),m是向量维度,如768)

注意模式

1、滑窗:用一个固定大小的滑窗来关注每一个token附近的信息。使用多层堆叠的窗口注意力会导致大的接受范围,但是顶层可以利用所有输入的位置信息,并能构建包含所有信息的表征,类似CNN。

给定一个固定的窗口大小w,一个token两侧分别关注w/2长度的token,则计算复杂度变为O(n * w)。如果有L层的话,则顶层的接受范围大小是L * w(假设w大小对于所有的层是固定的)。我们可以在每一层使用不同的w来平衡效率和模型表征能力。

2、伸缩滑窗(dilated sliding window):想扩充接受范围,但又不想增加计算量,可以使用伸缩滑窗。假设所有的层都有一个固定的d和w,则可接受的范围是L * d * w,这样即使一个很小的d值,都能接受到数以千计的tokens。(d的值到底是啥?

在multi-head注意力里,每个注意力都计算一个不同的注意力分数。我们发现every head中不同的dilation config的设置会提升性能,通过允许一部分注意力不使用dilation来集中注意力到局部上下文,而其他的注意力使用dilation来关注更长的上下文。

3、全局注意(Global Attention):在MLM中,模型使用局部上下文信息来预测被遮掩的词,对于分类,模型聚合整个句子的表征到一个特殊的token([CLS])中。对于QA,问题和文本会连接在一起让模型通过自注意力来比较问题和文本。

在我们的情况下,滑窗和伸缩滑窗不够灵活,不能处理特定任务表征。因此,我们在一些预先选择好的输入位置上增加“全局注意”。更重要的是,我们使得这些注意操作是对称的:一个有全局注意的token,关注序列中的所有token,同时,序列中的所有token也都会关注它。

全局注意的应用举例如下:在分类中,全局注意用于[CLS]这个token,而在QA中,全局注意用于所有的问题token中。因为全局注意标记的数量相对于序列长度n来说很小且独立于n,因此局部注意和全局注意的复杂度仍然是O(n)。

全局注意的线性映射:原始的注意力计算公式为
$$
Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V
$$

这里我们使用两组映射,$Q_s,K_s,V_s$计算滑窗注意的注意力分数,$Q_g,K_g,V_g$来计算全局注意的注意力分数。新增的映射提供了为不同注意力建模的灵活性,这对于下游任务的最佳性能至关重要。其中,两组映射的Q,K,V使用相同的初始值。

自回归语言模型

1、注意模式:在较低的层使用小的窗口size,而在较高的层上增加窗口size。这样做的结果是,最顶层的layers会学习到整个序列的更高层级的表征,而较低的层则抓取局部信息。同时,这样做也会平衡效率和性能。但是在较低的层上我们不会使用伸缩滑窗,这样做可以最大化其学习和利用当前局部信息的能力。而对于更高的层,我们只在2个头上(on 2 heads)上使用少量的递增伸缩值。这给了模型在不牺牲局部上下文信息的情况下直接处理惩处token的能力。

2、实验设置

  • 训练:字符集语言模型(character-level LM)

    理想情况下,我们想用当前GPU内存能训练的最大窗口size和序列长度来训练模型。然而,我们发现模型在学会利用更长的信息之前先要进行大量的梯度更新来学习局部信息。考虑到这点,我们使用一个暂存的训练步骤,这里我们可以增加注意窗口size和序列长度来跨越多个训练阶段。尤其,在第一阶段我们用一个短序列长度和小的窗口size,然后在之后的每个阶段,我们翻倍加大序列长度和窗口size,然后让学习率减半。这会加快训练,而保证慢的部分(最长的序列和窗口size)能持续运行到最后。

    我们训练了5个阶段,序列初始长度是2048,最后一个阶段的序列最终长度是23040。

  • 评估:我们使用序列长度是32256来评估。我们将数据集拆分为32256、步长为512的重叠序列,并报告序列上最后512个token的性能。

预训练和微调

在文本集上训练Longformer,并针对6个任务微调它,包括分类,QA和指代消解。最终的模型可以处理长度为4096的序列(是BERT的8倍)。

我们使用MLM来预训练Longformer,目标是发现序列中随机遮掩的tokens。由于MLM的预训练过程昂贵,我们基于RoBERTa来预训练,这样可以最小的改变来支持Longformer的注意力机制。注意到我们的注意力模式可以应用在任何预训练的transformer模型中,却不需要更改模型结构。

  • 注意力模式:使用滑窗注意力,窗口size设为512,因此同RoBERTa一样的计算量。
  • 位置编码:RoBERTa使用学习的最大位置为512的绝对位置编码。为了支持更长的文本,我们增加另外的位置编码来支持4096长度的位置。在长度为4096的序列中,我们多次复制RoBERTa的长度为512的序列的位置编码进行位置编码的初始化。使用该方法进行初始化能够保存除了分区边界以外的局部结构。
  • 连续MLM预训练:我们使用fairseq在长文本集上预训练Longformer。我们训练两个size的模型,一个基本模型和一个大模型。每个模型的训练参数都是:长度为4096的序列、65K的梯度更新,batch size 64,最大学习率是3e-5,线性warmup为500步。
  • 冻结RoBERTa权重:预训练Longformer时我们会冻结所有的RoBERTa权重,之训练新的位置编码。这样设置的东西是为了能够完美保留RoBERTa在短文本上的性能,这个设置获得1.850的BPC值,但是如果所有的权重都参与训练的话,会获得更高的值1.705。

任务

baseline是一个基于RoBERTa的模型,它将上下文分解为最长的片段,将每个片段单独传递给RoBERTa,并连接已激活部分进行进一步处理。

  • QA(问答)

    使用两阶段:先选择最大程度相关段落,然后把他们传进第二阶段进行答案提取。每个阶段都连接问题和文本为一个序列,把它传进Longformer中,然后使用特定任务的预测层。我们用多任务的方法训练模型,这样就能联合预测relevant paragraphs,evidence sentences,answer spans and question types(yes/no/span)。

  • 指代消解

    在这个任务中没有使用全局注意力。

Longformer-Encoder-Decoder(LED)

为了促进seq2seq学习对长序列建模,我们提出一个Longformer变体,它同时使用编码解码的Transformer,但是却用有效的Longformer的局部+全局注意力模式来代替编码器中的完整的自注意力机制。解码器使用完整的自注意力机制来解码完整的已编码的tokens和之前已经解码的位置信息。我们叫这个模型为LED。我们用BART来初始化LED参数,用层数和隐藏层大小来获取准确的BART架构。唯一的不同是LED能处理更长的输入序列,我们将位置编码增加到16K(BART只有1K的tokens),而且我们重复复制BART的位置编码(1K)16次,来获取LED的初始的位置编码。

我们使用arXiv摘要数据集来评估LED在摘要任务上的能力。LED的编码器阅读文本,解码器生成输出的摘要。编码器使用窗口大小为1024的局部注意力,并在第一个token上使用全局注意力。解码器使用完全的原始的注意力机制来解码全部的编码和之前的解码位置。如同经典的seq2seq模型,LED使用teacher forcing在标注的训练摘要上,并在推理上使用beam search。

LED在摘要上略优于BigBird(注意,BigBird摘要模型虽然支持序列长度为4000,但是它始于并基于Pegasus模型进行预训练,Pegasus是一个专门为文本摘要设计和预训练的模型)。在没有预训练或者特定任务的初始化参数时,LED却能略优于BigBird,足以证明LED的优越性。

结论

Longformer提出一个注意力模式,能够结合线性比例与序列长度的局部和全局信息。预训练的Longformer在长文本上由于RoBERTa,并且在WikiHop和TriviaQA数据集上取得SOTA。同时,基于Longformer提出的LED,在arXiv长文本摘要任务上取得SOTA。未来,我们会研究更多的预训练模型,尤其是LED,增加其序列长度,并探索其他可能从我们模型上获益的任务。

posted @ 2021-01-11 20:49  justDoIT&  阅读(1359)  评论(0编辑  收藏  举报