Longformer
定义
Longformer 是一种基于 Transformer 架构的预训练语言模型,专为处理长度远超常规编码器上限的文本文档而设计[1]。此类模型的总称在中文语境中常写作长文本 Transformer 模型,其核心是用稀疏化的注意力模式取代对全部词元两两计算的自注意力,把复杂度从序列长度的平方项降为线性项[3][1]。
它只包含编码器部分,属于仅编码器结构,可直接替换 BERT、RoBERTa 等模型的自注意力层,属于即插即用式的改法[1][4]。作者在论文中还给出带解码器的扩展版本 Longformer-Encoder-Decoder(LED),用于长文档生成式任务[1]。
原理
标准自注意力令每个词元与序列中所有词元计算相关性,注意力分数矩阵规模为 $n \times n$,其中 $n$ 为序列长度,故时间与显存开销为 $O(n^2)$[5]。Longformer 按预设的注意力模式只计算部分词元对的分数,使计算量变为 $O(n \times w)$,$w$ 为平均窗口宽度[6]。
局部窗口注意力是主要成分:每个词元只与左右各半个窗口内的邻居交互,公开发布的模型中窗口总宽为 512,即左右各 256 个词元[2][7]。由于多层堆叠可以像卷积网络扩大感受野那样扩大覆盖范围,$l$ 层、窗口为 $w$ 时可覆盖 $l \times w$ 个词元,顶层因此仍能间接获得全序列信息[2][5]。此外还有膨胀滑动窗口,即被关注位置之间留出间隔,以同等计算量看到更远的内容,作者仅在其字符级语言模型的部分上层注意力头中启用该形式[2]。
全局注意力用于补足窗口之外的信息通路:少数由任务指定的词元关注整个序列,同时所有位置也关注这些词元,形成对称结构,并且它们使用独立的查询、键和值投影[6]。在实现中,哪些位置享有全局注意力由运行时给定的掩码张量指定,取 0 表示仅局部关注,取 1 表示全局关注[6]。词元的选择依任务而定,分类任务通常用 [CLS],问答任务则用问题中的词元[2]。
flowchart LR
A[输入词元序列] --> B[局部滑动窗口注意力]
A --> C[全局注意力: 少量任务指定词元]
B --> D[按注意力模式拼接的稀疏注意力矩阵]
C --> D
D --> E[多层堆叠, 感受野逐步扩大]
E --> F[上下文表示]
发展历程
论文《Longformer: The Long-Document Transformer》由 艾伦人工智能研究所 的 Iz Beltagy、Matthew E. Peters 与 Arman Cohan 撰写,2020 年 4 月 10 日提交到预印本平台 arXiv,编号 2004.05150;同年 12 月 2 日发布的第 2 版新增了 LED 模型[1]。
作者的做法是从 RoBERTa 的检查点出发继续预训练:把 RoBERTa 学到的 512 个位置嵌入复制 8 次以覆盖 4096 个位置,再在长文档上做掩码语言模型训练[2]。训练完成后,模型在长文档任务上稳定优于 RoBERTa,并在 WikiHop、TriviaQA 两个问答基准上刷新了当时的最好成绩,其字符级语言模型也在 text8 和 enwik8 上取得新结果[1]。第 2 版引入的 LED 在 arXiv 论文摘要数据集上得到验证[1]。
此后该模型被 Hugging Face 的 Transformers 库收录,通过全局注意力掩码接口调用;围绕通用预训练版本还出现了面向特定语料的衍生模型,例如以大规模临床文本预训练的 Clinical-Longformer,在命名实体识别、问答、文档分类等 10 项任务上做过评估[2]。
应用
长文档问答是论文重点验证的场景,模型可把问题与多篇材料拼接后一次读入,无需先检索再分段[1]。在中文专利文献中,有方案将 Longformer 用作长文本编码器,与条件随机场模型组合构建实体词提取模型,从而避免切分长文本造成片段间无法交互、信息丢失的问题[8]。
抽取式摘要研究中,Longformer-base-4096 被用作编码器,结构为 12 层、隐藏维度 768,用于在 PubMed、arXiv 等长文档数据集上为句子打分并挑选摘要句。生成式摘要则使用 LED,其设计前提是输入很长而输出摘要相对较短,可处理的输入上限可达 16384 个词元[9]。
在医学信息学领域,微调后的 Longformer 被用于从癌症病理报告中切分出诊断、临床病史等章节,相关研究报告了各章节的提取效果[10]。软件工程方向的表示学习研究也把 Longformer 与 RoBERTa、CodeBERT 等模型并列比较,并将最大输入长度设为 1024[11]。
局限
窗口注意力只保留局部连接,远距离信息需要经过多层间接传递,因此单个注意力头并不直接建模任意两个远隔词元的关系[5]。有研究对长距离指代等任务进行测试后指出,Longformer 加长上下文编码并未在远距离指代上带来收益,与短上下文模型相比反而更容易受距离影响[12]。
公开发布版本的输入上限为 4096 个词元,超出仍需截断或另行处理,与后续出现的更长上下文模型相比并非无限[2]。另有研究发现,在统一预训练条件下,简单的局部窗口注意力即可与包括 Longformer 在内的多种高效注意力方法相竞争,去掉窗口重叠也能取得相近的下游效果,说明窗口重叠等设计并非必需[13]。
就 LED 而言,其长处在于读取超长输入,假设解码端输出不必很长;实践分析显示它能够处理多达 16K 的输入词元,却不能生成同为 16K 的词元输出,对长报告类文本的结尾位置识别也仍有困难[9]。工程上,稀疏注意力通常需要配套的自定义算子才能获得实际的速度与显存收益,论文亦提到其实现包含定制的 CUDA 核[7]。
参见
-
Transformer —— Longformer 所基于并在其自注意力层上做稀疏化改造的基础架构。
-
RoBERTa —— Longformer 的预训练起点,位置嵌入与训练方式均沿用其设置。
-
BigBird —— 同年提出的另一类稀疏注意力长文本模型,在窗口与全局注意力之外加入随机连接。
-
BERT —— 受 512 词元输入上限约束的编码器,是长文本模型要解决的问题来源。
-
自注意力机制 —— Longformer 以线性复杂度的稀疏版本替换的核心计算组件。
参考资料
- Longformer: The Long-Document Transformer [引用日期2026-10-29]
- Longformer:面向长文档的 Transformer | Ultralytics [引用日期2026-10-29]
- Python中稀疏Transformer架构解析:Longformer与BigBird实践指南 [引用日期2026-10-29]
- arxiv.org 上的网页 [引用日期2026-10-29]
- # Longformer: The Long-Document Transformer(2020) [引用日期2026-10-29]
- Longformer [引用日期2026-10-29]
- Longformer: The Long-Document Transformer - License: arXiv [引用日期2026-10-29]
- CN113807095A(PDF) [引用日期2026-10-29]
- 2022.fnp-1(PDF) [引用日期2026-10-29]
- OpenLB Open Library of Bioscience [引用日期2026-10-29]
- acm.org 上的网页 [引用日期2026-10-29]
- The NLP Task Effectiveness of Long-Range Transformers [引用日期2026-10-29]
- aclanthology.cn 上的网页 [引用日期2026-10-29]