精读笔记:Longformer — 长文档 Transformer

论文信息
- 标题:Longformer: The Long-Document Transformer
- 作者:Iz Beltagy, Matthew E. Peters, Arman Cohan
- 机构:Allen Institute for AI(AI2,艾伦人工智能研究院)
- 发表时间:2020 年 4 月(arXiv: 2004.05150)
- 原文链接:https://arxiv.org/abs/2004.05150


阅读地图

本笔记按以下顺序展开,建议第一次读按顺序来:

  1. 背景理解:先读"为什么长文档是难题",建立直觉
  2. Abstract:30 秒摸清论文的一句话贡献
  3. Introduction:了解问题的来龙去脉
  4. 注意力方法(核心!):三种模式逐一精读,这是全文精华
  5. 实验结果:看数字,验证方法有没有真正奏效
  6. 总结:一张图回顾全篇

先读这段:为什么长文档是根本难题?

在读论文之前,先用一个比喻理解核心矛盾。

标准 Transformer 的自注意力(Self-Attention)机制,要求序列中每一个词都和其他所有词两两计算一次相关性分数。比如一个句子有 512 个词,就要计算 512 × 512 = 26 万次配对;如果有 4096 个词,就要算 4096 × 4096 ≈ 1680 万次配对。

这就是 O(n²) 复杂度——序列长度 n 翻倍,计算量和内存消耗翻四倍。用专业术语说:时间复杂度和空间复杂度都是序列长度的平方级别。

实际后果:在一张 48GB 显存的高端 GPU 上,标准 BERT 只能处理约 512 个词。一旦超过这个长度,显存直接爆掉,无法训练,也无法推理。可是现实世界的文档——法律合同、学术论文、医疗病历——动辄数千乃至数万个词。这就造成了"长文档处理"的根本瓶颈。

Longformer 的解法:用三种特别设计的注意力模式,把复杂度从 O(n²) 降到 O(n)(线性),让处理数万词长度的文本成为可能。


Abstract(摘要)精译

原文(核心英文句)
"Transformer-based models are unable to process long sequences due to their self-attention operation, which scales quadratically with the sequence length. To address this limitation, we introduce the Longformer with an attention mechanism that scales linearly with sequence length, making it easy to process documents of thousands of tokens or longer."

翻译
基于 Transformer 的模型由于自注意力操作随序列长度呈二次方增长,因此无法处理长序列。为解决这一局限,我们提出 Longformer,其注意力机制随序列长度线性扩展,从而可以轻松处理数千个 token 甚至更长的文档。

讲解
这两句话就是全文的核心贡献。"quadratically"(二次方)是问题,"linearly"(线性)是解法。论文后续所有工作都是在围绕"怎么从 O(n²) 变成 O(n)"展开。


原文(核心英文句)
"Longformer's attention mechanism is a combination of a windowed local-context self-attention and an end task motivated global attention that encodes inductive bias about the task."

翻译
Longformer 的注意力机制是局部上下文窗口自注意力面向特定任务的全局注意力的组合,后者对任务编码了归纳偏置(inductive bias)。

讲解
这句话揭示了方法的两个组件:
- 局部窗口注意力:每个词只和附近的词交流(高效)
- 全局注意力:少数特殊位置可以和所有词交流(灵活)

"归纳偏置"(inductive bias)是 ML 术语,意思是根据任务特点,提前为模型设计一些"先验倾向"。比如分类任务中,[CLS] 标记理应汇聚全文信息,所以赋予它全局注意力权限,就是一种归纳偏置。


原文(核心英文句)
"We achieve state-of-the-art results on character-level language modeling with BPC of 1.10 on text8 and 1.00 on enwik8. We also pretrain Longformer and finetune it on a variety of downstream tasks, consistently outperforming RoBERTa on long document tasks and achieving new state-of-the-art results on WikiHop and TriviaQA."

翻译
我们在字符级语言建模任务上取得了最优成绩,在 text8 上 BPC 达到 1.10,在 enwik8 上达到 1.00。我们还对 Longformer 进行预训练,并在多种下游任务上微调,在长文档任务上一致优于 RoBERTa,并在 WikiHop 和 TriviaQA 上取得了新的最优成绩。

讲解
- BPC(Bits Per Character):字符级语言模型的评估指标,表示模型预测每个字符平均需要多少比特。数值越低越好,代表模型对文本的预测越准确、越有把握。
- RoBERTa:Facebook 2019 年发布的强大预训练语言模型,是当时长文档任务的强基线。能稳定超越 RoBERTa,说明 Longformer 的改进是实打实的。
- WikiHop / TriviaQA:两个需要跨段落、跨文档推理的问答基准,正是长上下文能力的试金石。


Introduction(引言)精译

第一段:问题背景

原文(核心英文句)
"Transformers have achieved state-of-the-art results in a wide range of natural language tasks including generative language modeling and discriminative language understanding. This success is partly due to the self-attention component which enables the network to capture contextual information from the entire sequence. While powerful, the memory and computational requirements of self-attention grow quadratically with sequence length, making it infeasible (or very expensive) to process long sequences."

翻译
Transformer 在自然语言处理的众多任务中取得了最优成绩,包括生成式语言建模和判别式语言理解。这一成功部分归功于自注意力组件,它使网络能够从整个序列中捕获上下文信息。然而,尽管功能强大,自注意力的内存和计算需求随序列长度呈二次方增长,使得处理长序列变得不可行(或代价极高)。

讲解
这段话用三步逻辑描述了一个"既然……但是……"的故事结构:
1. Transformer 很厉害(建立读者信心)
2. 其核心是自注意力能看到全局上下文(解释为什么厉害)
3. 但自注意力的代价是 O(n²),长序列就崩了(点出根本矛盾)


第二段:现有解决方案的局限

原文(核心英文句)
"Existing approaches for long document NLP use sliding windows or chunking strategies to process long texts in segments, losing important cross-partition information."

翻译
现有的长文档 NLP 方法使用滑动窗口或分块策略分段处理长文本,但会丢失跨段落的重要信息。

讲解
在 Longformer 之前,处理长文档的"土方法"是把文档切碎:
- 方法 A:截断,只保留前 512 个词,后面扔掉
- 方法 B:分块,把文档切成几段,分别处理,但段与段之间信息断掉了

举个例子:一篇 4000 词的法律合同,第 3800 词引用了第 50 词的定义条款——分块处理根本无法捕捉这种远距离依赖。Longformer 就是为了解决这个问题而生的。


第三段:Longformer 的定位

原文(核心英文句)
"We focus on the transfer learning setting; we pretrain Longformer and finetune it on document-level NLP tasks including text classification, QA, and coreference resolution."

翻译
我们专注于迁移学习设置:预训练 Longformer 并在文档级 NLP 任务上进行微调,包括文本分类、问答(QA)和共指消解(coreference resolution)。

讲解
- 迁移学习(Transfer Learning):先在大规模语料上预训练一个通用模型,再针对特定任务微调(finetune)。BERT、RoBERTa 都是这个范式。Longformer 也走这条路,因此可以直接和 RoBERTa 做公平对比。
- 共指消解(Coreference Resolution):判断文章中哪些词语指代同一个实体。比如"李明去了北京,在那里住了三天","他"指代"李明"。这类任务需要跨越长距离的上下文理解。


第四段:主要贡献概览

原文(核心英文句)
"The attention pattern of Longformer includes a combination of local windowed attention and global attention. Specifically, the sliding window attention uses a fixed-size window around each token where each token attends to its w/2 tokens on each side; the global attention is applied to a few pre-selected tokens that attend to all tokens and all tokens attend to them."

翻译
Longformer 的注意力模式结合了局部窗口注意力和全局注意力。具体而言,滑动窗口注意力为每个 token 使用固定大小的窗口,每个 token 关注其两侧各 w/2 个 token;全局注意力应用于少数预选 token,这些 token 关注所有 token,所有 token 也关注它们。

讲解
这段话提前剧透了方法的核心结构,等我们精读方法章节时会深入展开每一个细节。先记住两个关键词:局部窗口(大多数 token 的规则)+ 全局 token(少数特权 token 的规则)。


方法章节:注意力模式精读

重要提示:这是全文最核心的章节,建议反复阅读,直到能用自己的话讲清楚三种模式为止。

大会类比(理解三种注意力的直觉)

想象一个有 1000 人参加的大型学术会议。每个人都想了解其他人的想法。


2.1 滑动窗口注意力(Sliding Window Attention)

术语解释
- Sliding Window(滑动窗口):一个固定大小的"视野框",沿序列滑动,每次只关注框内的词。
- w:窗口大小,即每个 token 两侧各看多少个 token,总共看 w 个相邻 token。

原文(核心英文句)
"Given the importance of local context, our attention pattern employs a fixed-size window attention surrounding each token. Using multiple stacked layers of such windowed attention results in a large receptive field, where top layers have access to all input information."

翻译
鉴于局部上下文的重要性,我们的注意力模式为每个 token 采用固定大小的窗口注意力。通过多层叠加这种窗口注意力,最终形成一个大感受野,使得顶层能够访问所有输入信息。

讲解
关键思路:虽然每层只看附近,但多层叠加后信息可以"接力传递"。

举例:窗口大小 w=4,每个 token 看自己两侧各 2 个词。
- 第 1 层:token A 知道了 ±2 范围内的信息
- 第 2 层:token A 通过邻居"接力",间接知道了 ±4 范围内的信息
- 第 ℓ 层:感受野扩展到 ℓ × w

这和卷积神经网络(CNN)通过多层小卷积核逐渐扩大感受野的思路完全一致。


原文(核心英文句)
"The computation complexity of this pattern is O(n × w), which scales linearly with input sequence length n."

翻译
这种模式的计算复杂度为 O(n × w),随输入序列长度 n 线性扩展。

讲解
复杂度对比
| 注意力类型 | 复杂度 | n=4096 时的计算量(w=512) |
|-----------|--------|--------------------------|
| 标准自注意力 | O(n²) | 约 1680 万次操作 |
| 滑动窗口 | O(n×w) | 约 200 万次操作 |

w 是窗口大小,是一个小常数(如 512),与 n 无关。因此无论序列多长,计算量只线性增长。


原文(核心英文句)
"In practice, w can be different for each layer to balance efficiency and model capacity, e.g. using small w for lower layers and larger w for higher layers similar to how CNN receptive fields expand with depth."

翻译
在实践中,w 可以在每一层中不同,以平衡效率和模型容量,例如低层使用较小的 w,高层使用较大的 w,这与 CNN 感受野随深度增加而扩展的方式类似。

讲解
这是一个工程细节:低层关注精细的局部特征(小窗口),高层综合更广泛的语义(大窗口)。这和人阅读文章的方式很像——先看单词的语法角色(局部),再理解段落语义(全局)。


2.2 膨胀滑动窗口(Dilated Sliding Window)

术语解释
- Dilated(膨胀/空洞):这个词来自图像处理领域的"空洞卷积"。"膨胀"的意思是在窗口内的采样点之间插入"间隙",从而在不增加计算量的前提下扩大视野。
- d(dilation,膨胀率):相邻采样点之间跳过的 token 数量。d=1 时等同于普通滑动窗口;d=2 时每隔 1 个 token 采样一次。

原文(核心英文句)
"To further increase the receptive field without increasing computation, the sliding window can be 'dilated'. This is analogous to dilated CNNs where the window has gaps of size dilation d."

翻译
为了在不增加计算量的前提下进一步扩大感受野,可以对滑动窗口进行"膨胀"。这类似于空洞 CNN,窗口中存在大小为膨胀率 d 的间隙。

讲解
直观图示(假设 w=4,d=2):

普通滑动窗口(d=1):我看的位置是 ... [前2] [前1] [当前] [后1] [后2] ...

膨胀窗口(d=2):我看的位置是 ... [前4] [前2] [当前] [后2] [后4] ...(跳过中间的)

同样只看 4 个位置,但视野范围翻了一倍!


原文(核心英文句)
"Assuming a fixed d and w for all layers, the receptive field is ℓ × d × w, which can reach tens of thousands of tokens even for small values of d."

翻译
假设所有层的 d 和 w 固定,感受野为 ℓ × d × w,即使 d 取较小值,感受野也能达到数万个 token。

讲解
举个数字感受一下:假设 ℓ(层数)= 12,d(膨胀率)= 4,w(窗口大小)= 512:
- 感受野 = 12 × 4 × 512 = 24,576 个 token

这意味着顶层的 token 理论上可以"感知到"序列中约 24K 范围内的信息,而每层的计算量仍然是 O(n×w)。


原文(核心英文句)
"For multi-headed attention, using different dilation configurations per head improves performance by allowing some heads to focus on local context while others attend over longer context without dilation."

翻译
对于多头注意力,为每个注意力头设置不同的膨胀配置,可以提升性能——允许部分注意力头聚焦于局部上下文,而其他头则在更大范围内(无膨胀)进行注意力计算。

讲解
多头注意力(Multi-head Attention):标准 Transformer 不是只用一个注意力,而是同时用多个(如 12 个)不同参数的注意力头,捕获不同类型的依赖关系。

Longformer 利用这一机制:不同注意力头采用不同膨胀率,有的专注近处细节,有的负责远距离依赖,分工合作,互补不足。


2.3 全局注意力(Global Attention)

术语解释
- Global Token(全局 token):被赋予特殊权限的 token,可以和序列中所有 token 相互注意力计算。
- Symmetric(对称):全局 token 既能看到所有人,所有人也能看到全局 token——这是双向的。

原文(核心英文句)
"The combination of local (sliding window) and global attention is powerful, but not flexible enough to learn task-specific representations. For most NLP tasks, task-specific input is represented as a special token (e.g. [CLS] token for classification) or a combination of question/task tokens."

翻译
局部(滑动窗口)与全局注意力的组合虽然强大,但对学习任务特定的表征来说灵活性仍不足。对于大多数 NLP 任务,任务相关的输入以特殊 token 的形式呈现(例如分类任务中的 [CLS] token),或以问题/任务 token 的组合形式呈现。

讲解
仅有滑动窗口有一个问题:信息虽然可以通过多层"接力"传播,但这个过程比较慢,而且对"全文汇总"类的任务不够友好。

例如分类任务:模型最终需要 [CLS] token 代表整篇文章的语义。如果 [CLS] 只能用滑动窗口看附近的词,它就无法在一次前向传播中直接汇聚全文信息。


原文(核心英文句)
"We add 'global attention' on a few pre-selected input locations. A token with a global attention attends to all tokens across the sequence, and all tokens in the sequence attend to it."

翻译
我们在少数预先选定的输入位置添加"全局注意力"。具有全局注意力的 token 关注序列中的所有 token,而序列中的所有 token 也关注它。

讲解
这就是前面"主持人类比"的正式描述:
- 全局 token(主持人)→ 看所有人的状态
- 所有普通 token(与会者)→ 也能看到主持人的状态

这种双向、对称的信息流是关键:主持人不只是"广播",也在"倾听",并把全场信息反馈给每个人。


原文(核心英文句)
"Since the number of such tokens is small relative to and independent of n, the complexity of the combined local and global attention is still O(n)."

翻译
由于这类 token 的数量相对于 n 来说较小且与 n 无关,因此局部与全局注意力组合的复杂度仍为 O(n)。

讲解
为什么加了全局注意力还是 O(n)?

设全局 token 数量为 g(通常 g 很小,如 1 个 [CLS],或问题中的几十个 token)。
- 全局 token 的计算量:每个全局 token 看 n 个词 → g × n
- g 是常数,与 n 无关,所以 g × n 仍然是 O(n)

关键点:全局 token 的数量不随文档长度增长。一篇 1000 词的文章有 1 个 [CLS],一篇 100,000 词的文章也只有 1 个 [CLS]。因此复杂度保持线性。


原文(核心英文句)
"This is not a universal solution and is instead task-specific: [CLS] token for classification, question tokens for question answering, no global tokens for coreference resolution."

翻译
这并非通用解决方案,而是任务特定的:分类任务使用 [CLS] token,问答任务使用问题 token,共指消解任务则不使用全局 token。

讲解
不同任务,全局 token 的选择不同——这正是前面提到的"归纳偏置":
- 分类(如情感分析):[CLS] 负责总结全文,所以给它全局权限最合理
- 问答(如 QA):问题的每个词都需要在全文中找答案,所以问题 token 全部设为全局
- 共指消解:找到文中相互指代的词,主要靠上下文对比,不需要特殊的全局 token


2.4 全局注意力的线性投影

原文(核心英文句)
"We use two sets of projections, Qs, Ks, Vs to compute attention scores of sliding window attention, and Qg, Kg, Vg to compute attention scores for the global attention. The additional projection matrices add a small number of parameters but, more importantly, allow the global attention to play a different role than the local attention."

翻译
我们使用两套投影矩阵:Qs、Ks、Vs 用于计算滑动窗口注意力的注意力分数;Qg、Kg、Vg 用于计算全局注意力的注意力分数。额外的投影矩阵增加了少量参数,但更重要的是,它允许全局注意力扮演与局部注意力不同的角色。

讲解
这是一个实现细节:全局注意力和局部注意力用的是不同的参数矩阵(Q/K/V)。这样两种注意力可以独立学习,互不干扰,全局注意力能学到"全局汇聚"的能力,局部注意力学"精细感知"的能力。

这两套参数的初始化方式很聪明:从滑动窗口的参数复制过来,这样模型在开始微调时,全局注意力的行为和局部注意力接近,再随训练逐渐分化——平稳、稳健。


2.5 实现:如何高效计算

原文(核心英文句)
"Standard deep learning operations libraries do not support banded matrix multiplication. We therefore implement three versions of the sliding window attention: a loop-based slow implementation for testing, a chunk-based fast implementation for training, and a custom CUDA kernel for production."

翻译
标准深度学习操作库不支持带状矩阵乘法。因此,我们实现了三个版本的滑动窗口注意力:用于测试的基于循环的慢速实现、用于训练的基于分块的快速实现,以及用于生产环境的自定义 CUDA 核函数。

讲解
为什么需要特殊实现?

普通矩阵乘法(GEMM)计算的是两个完整矩阵相乘,而滑动窗口注意力只需要计算矩阵中的"对角带状"部分——大部分位置直接忽略不计。GPU 的标准 cuBLAS 库没有这种"带状矩阵乘法"的原语,所以作者团队需要自己写 CUDA 核函数(使用 TVM 编译器),才能把这个效率优势真正在硬件上落地。

三种实现版本
- Longformer-loop(循环版):用 Python 循环实现,正确但极慢,只用于功能验证
- Longformer-chunk(分块版):把序列切成有重叠的块再拼接,速度快但内存消耗约为最优实现的 2 倍,用于预训练
- Longformer-cuda(CUDA 版):自定义内核,最省内存、最快速,用于生产部署


实验结果精读

3.1 字符级语言建模(Autoregressive Language Modeling)

原文(核心英文句)
"We evaluate on the text8 and enwik8 datasets, each with 100M characters from Wikipedia. We achieve a new state-of-the-art on both text8 and enwik8 using the small models with BPC of 1.10 and 1.00, respectively."

翻译
我们在 text8 和 enwik8 数据集上进行评估,每个数据集包含来自维基百科的 1 亿个字符。使用小型模型,我们在 text8 和 enwik8 上分别以 1.10 和 1.00 的 BPC 取得了新的最优成绩。

讲解
为什么先做字符级语言建模?

字符级语言建模要求模型处理极长序列(本实验评估时序列长度达 32,256 个字符!),是测试长上下文建模能力的天然场景。

小型模型(41M 参数)结果对比

模型 text8 BPC↓ enwik8 BPC↓
Longformer(小,41M) 1.10 1.00
Adaptive Span(38M) 1.11 1.02
BP-Transformer(39M) 1.11 1.02

以相近参数量超越了此前最优模型,证明 Longformer 的注意力机制设计本身就带来了更好的建模能力,而不是靠堆参数取胜。


原文(核心英文句)
"We train Longformer in 5 phases with increasing sequence lengths starting at 2,048 and ending at 23,040 tokens. This staged training helps the model gradually adapt to longer contexts."

翻译
我们分 5 个阶段训练 Longformer,序列长度从 2,048 逐步增加到 23,040 个 token。这种分阶段训练有助于模型逐步适应更长的上下文。

讲解
课程学习(Curriculum Learning):先学简单(短序列),再学难(长序列),这是机器学习训练中的常用技巧。这里"简单"= 短序列 2048 tokens,"难"= 长序列 23040 tokens。直接从最长序列开始训练容易不稳定,分阶段更健壮。


原文(核心英文句)
"An ablation study shows that using increasing window size from lower to higher layers (BPC 1.21) works better than a fixed window size (BPC 1.23) or decreasing window size (BPC 1.24)."

翻译
消融实验表明,从低层到高层使用递增的窗口大小(BPC 1.21)比固定窗口大小(BPC 1.23)或递减窗口大小(BPC 1.24)表现更好。

讲解
消融实验(Ablation Study):通过去掉或改变某个组件,观察性能变化,从而确认每个设计选择的贡献。

这里验证了"低层小窗口、高层大窗口"的设计选择:低层捕捉局部语法,高层整合大范围语义,符合认知直觉,也经过数据验证。


3.2 预训练与微调

原文(核心英文句)
"We continue pretraining from the RoBERTa released checkpoint, while only making the minimal changes necessary to support Longformer's attention mechanism. We found that copying the 512 position embeddings from RoBERTa multiple times to initialize position embeddings for longer positions works better than random initialization."

翻译
我们从 RoBERTa 发布的检查点继续预训练,只进行支持 Longformer 注意力机制所必需的最小改动。我们发现,通过多次复制 RoBERTa 的 512 个位置嵌入来初始化更长位置的位置嵌入,比随机初始化效果更好。

讲解
位置嵌入(Position Embedding):Transformer 本身不感知词的位置顺序,需要额外加入位置编码。RoBERTa 的位置嵌入只覆盖 0~511 位置。Longformer 需要处理 4096 个 token,就需要 0~4095 的位置嵌入。

初始化技巧:与其随机初始化 512~4095 的位置嵌入,不如把 RoBERTa 的 0~511 复制多遍(0→511, 512→1023 = 0→511 的复制,1024→1535 = 再复制一遍……)。原因:研究发现 BERT 系模型有强烈的"倾向于关注局部上下文"的偏好——复制位置嵌入保留了这种局部偏好,而随机初始化会破坏它,导致训练不稳定。

预训练配置
- 语料:65 亿 token(书籍 + 维基百科 + 新闻 + 故事)
- 序列长度:4096 个词条(是 BERT 的 8 倍)
- 训练步数:65K 梯度更新步
- 批大小:64,每步处理约 262,144 个 token
- 窗口大小:512(与 RoBERTa 计算代价相当)


3.3 下游长文档任务

原文(核心英文句)
"We evaluate Longformer on a number of document-level NLP tasks and consistently show that Longformer outperforms RoBERTa when the task requires access to long contexts."

翻译
我们在多项文档级 NLP 任务上评估 Longformer,始终表现出:当任务需要访问长上下文时,Longformer 优于 RoBERTa。

讲解
"consistently"(一致地)是一个重要的词,说明结果并不偶然——在不同类型的长文档任务上都能超越 RoBERTa,表明改进是系统性的,而非仅在某个特定数据集上碰运气。


原文(核心英文句)
"Longformer-base consistently outperforms RoBERTa-base across all tasks. The improvement is particularly large on Hyperpartisan (87.4 → 94.8, F1) and WikiHop (72.4 → 75.0, Accuracy), both of which require reasoning over long documents."

翻译
Longformer-base 在所有任务上始终优于 RoBERTa-base。在 Hyperpartisan(87.4 → 94.8,F1 值)和 WikiHop(72.4 → 75.0,准确率)上提升尤为显著,这两个任务都需要对长文档进行推理。

讲解
任务简介
- Hyperpartisan(超党派新闻分类):判断新闻文章是否带有极端党派立场。文章平均 705 个词,部分极长。长上下文能力帮助模型读完整篇文章做判断,提升幅度高达 7.4 个百分点。
- WikiHop:多跳问答,需要在多个维基百科段落之间"跳跃"推理才能找到答案,平均上下文约 1535 个词,且往往需要跨段落整合信息。


下游任务完整对比表(Longformer-base vs RoBERTa-base,开发集)

任务 RoBERTa-base Longformer-base 提升 评估指标 平均文档长度
WikiHop 72.4 75.0 +2.6 准确率 ~1535 词条
TriviaQA 74.3 75.2 +0.9 F1 ~6589 词条
HotpotQA 63.5 64.4 +0.9 Joint F1 ~1316 词条
OntoNotes(共指) 78.4 78.6 +0.2 Avg F1 ~506 词条
IMDB(情感分析) 95.3 95.7 +0.4 准确率 ~300 词条
Hyperpartisan 87.4 94.8 +7.4 F1 ~705 词条

讲解
规律一目了然:文档越长、需要越多跨段推理的任务,Longformer 的提升越大。IMDB 情感分析大部分文档很短,所以提升幅度只有 0.4 个百分点;而 Hyperpartisan 需要全文理解,提升就有 7.4 个百分点。这正是作者设计 Longformer 的初衷的有力佐证。


原文(核心英文句)
"Longformer-large achieves new state-of-the-art on WikiHop (81.9 vs 78.3 previous SOTA) and TriviaQA (77.3 vs 73.3 previous SOTA) at the time of submission."

翻译
在提交时,Longformer-large 在 WikiHop(81.9 vs 此前最优 78.3)和 TriviaQA(77.3 vs 此前最优 73.3)上取得了新的最优成绩。

讲解
WikiHop 提升 3.6 个百分点,TriviaQA 提升 4.0 个百分点——这是相当显著的突破。值得注意的是,TriviaQA 平均文档长度高达 6589 个词条(95th 百分位达 17,126),正是标准 BERT(512 上限)完全无法处理的场景,而 Longformer 在这里的大幅领先证明了长上下文建模的实际价值。


3.4 Longformer-Encoder-Decoder(LED)

原文(核心英文句)
"For sequence to sequence tasks such as summarization, we introduce the Longformer-Encoder-Decoder (LED), where the encoder uses Longformer's local+global attention, and the decoder uses full self-attention over the encoded tokens."

翻译
对于摘要生成等序列到序列任务,我们引入了 Longformer-Encoder-Decoder(LED),其中编码器使用 Longformer 的局部+全局注意力,解码器对编码后的 token 使用完整的自注意力。

讲解
LED 是 Longformer 在生成任务上的扩展版本。标准 T5/BART 的编码器对长文档同样力不从心,而 LED 把高效注意力用在编码器端(处理长输入),解码器端输出序列通常较短,可以保留全注意力。这一设计后来影响了 LongT5 等模型。


相关工作与附录(一句话带过)

相关工作:论文介绍了此前处理长序列的方法,包括 Sparse Transformer(OpenAI,稀疏注意力)、BP-Transformer(二叉树式分层注意力)、Adaptive Span(自适应注意力范围)等,Longformer 的区别在于专注迁移学习场景并提供预训练权重。

附录:包含实现的更多技术细节(CUDA kernel 的 TVM 实现)、各任务的超参数设置,以及更多消融实验,感兴趣的读者可直接查阅原文附录。


全文核心思想总结

一张图回顾三种注意力模式

序列(每个方块代表一个 token):
□ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □

1. 标准自注意力(O(n²)):
   ↔ 每个 token 和所有 token 连线 → 复杂度爆炸

2. 滑动窗口注意力(O(n·w)):
   每个 token 只看附近 w 个邻居
   □ □ [■ ■ ★ ■ ■] □ □ □ □ □ □ □ □ □
                ↑ 当前 token(★)只看中括号内的词

3. 膨胀滑动窗口(O(n·w),但感受野 × d):
   □ □ [■ · ■ · ★ · ■ · ■] □ □ □ □ □
                ↑ 跳跃采样,扩大视野

4. 全局注意力(少数 token 看全部):
   ★ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □
   ↑ 全局 token(如 [CLS])和所有 token 双向连接

核心贡献一览

组件 作用 复杂度贡献
滑动窗口注意力 高效局部上下文建模 O(n·w)
膨胀滑动窗口 扩大感受野,无额外计算 O(n·w)
全局注意力 任务特定的全文信息汇聚 O(n·g),g 为常数
组合总复杂度 线性扩展 O(n)

Longformer 的历史意义

Longformer(2020)是"高效 Transformer"(Efficient Transformers)浪潮中的里程碑之作,和同期的 BigBird、Reformer、Linformer 等共同证明了:O(n²) 不是不可逾越的屏障,通过精心设计的稀疏注意力模式,完全可以在保持强大表达能力的同时实现线性复杂度。

它的影响直接延伸到:
- LongT5(Google, 2022):在 T5 基础上融入 Longformer 的思路
- LED(Longformer-Encoder-Decoder):长文档摘要的实用工具
- 现代长上下文 LLM(如 GPT-4 128K、Claude 200K):虽然路线不同(改用 FlashAttention + 位置编码改进),但解决的是同一个根本问题,都站在 Longformer 等工作的肩膀上


精读笔记完
覆盖章节:Abstract、Introduction(核心段落)、方法章节(全部段落)、实验结果(字符级 LM、预训练、下游任务)
原文来源:arXiv 2004.05150,Allen Institute for AI,2020