今天给大家分享一篇文章,主题是关于一种专为长文档设计的全新Transformer模型——Longformer。相信很多朋友在处理自然语言处理(NLP)任务时都遇到过类似的难题:面对超长文本,传统模型往往需要将其拆分成多个短片段,既增加了复杂度,也可能丢失重要的上下文信息。那么,是否有一种方法能够直接处理长文本,同时保持计算效率?Longformer正是为了解决这一问题而诞生。接下来,让我们一起来了解它是如何通过创新的注意力机制以及强大的性能表现,突破传统Transformer的限制的!
老样子,我还是按照Paper的结构对这篇文章进行详细解析,感兴趣的可以自行阅读原文。
1. Abstract
基于Transformer的模型无法处理长序列,这是因为其自注意力机制的计算复杂度随着序列长度呈二次增长。为了解决这一限制,本文引入了Longformer,一种注意力机制,其计算复杂度随序列长度线性增长,从而能够轻松处理包含数千个token或更长的文档。Longformer的注意力机制可以直接替换标准的自注意力机制,并结合了局部窗口注意力和基于任务需求的全局注意力。基于此前关于长序列Transformer的研究,在字符级语言建模任务上对Longformer进行了评估,并在text8和enwik8数据集上取得了最先进的结果。与之前的大多数工作相比,本文对Longformer进行了预训练,并将其微调用于多种下游任务。经过预训练的Longformer在长文档任务上始终优于RoBERTa,并在WikiHop和TriviaQA数据集上创下了新的最先进成绩。最后,本文推出了Longformer-Encoder-Decoder (LED),这是支持长文档生成序列到序列任务的Longformer变体,并在arXiv摘要数据集上展示了其卓越的效果。
2. Introduction
Transformer(Vaswani 等,2017)在生成式语言建模(Dai 等,2019;Radford 等,2019)和判别式语言理解(Devlin 等,2019)等广泛的自然语言任务中取得了最先进的成果。这一成功部分归功于其自注意力机制,自注意力使网络能够从整个序列中捕获上下文信息。虽然这种机制非常强大,但自注意力的内存和计算需求随着序列长度的增长呈二次方增加,从而使得处理长序列变得不可行(或代价极高)。
为了解决这一限制,本文提出了 Longformer,一种经过修改的 Transformer 架构,其自注意力操作的计算复杂度随着序列长度线性增长,使其能够高效处理长文档(如图 1 所示)。这为长文档分类、问答(QA)和指代消解等自然语言任务提供了优势。在这些任务中,现有的方法通常会将较长的上下文划分或截短为更小的序列,以满足 BERT 风格的预训练模型通常的 512 个 token 限制。然而,这种划分可能会导致重要的跨片段信息丢失。为缓解这一问题,现有方法往往依赖于复杂的架构来处理这种信息交互。而本文提出的 Longformer 能够通过多层注意力机制构建整个上下文的表征,减少了对特定任务架构的依赖。