Longformer
探索 Longformer 架构如何高效处理长数据序列。了解稀疏注意力如何克服 NLP 和计算机视觉中的内存限制。
Longformer 是一种专门的 深度学习 架构,旨在高效处理长数据序列,克服传统模型的局限性。Longformer 最初是为了解决标准 Transformer 的限制而提出的,因为标准 Transformer 通常受内存限制,难以处理超过 512 个 token 的序列。Longformer 采用了改进的 注意力机制。通过将计算复杂度从二次降低到线性,这种架构使 AI 系统能够在单次处理中分析完整文档、冗长的文字记录或复杂的遗传序列,而无需截断输入。
注意力瓶颈问题#
要理解 Longformer 的重要性,必须审视 BERT 和早期 GPT-3 模型等前代模型的局限性。标准 Transformer 使用一种“自注意力”操作,其中每个标记(单词或单词的一部分)都会关注序列中的其他所有标记。这会产生二次方计算成本;序列长度加倍时,GPU 所需的内存会增加到原来的四倍。因此,大多数标准模型都会对输入大小施加严格限制,通常迫使数据科学家将文档切分成更小且彼此不连贯的片段,从而导致上下文信息丢失。
Longformer 通过引入 稀疏注意力 解决了这一问题。它不采用完整的全连接方式,而是结合了窗口化局部注意力和全局注意力:
- 滑动窗口注意力: 每个 token 只关注其紧邻的 token。它能够捕捉局部上下文和句法结构,类似于 卷积神经网络(CNN) 处理图像的方式。
- 膨胀滑动窗口: 为了在不增加计算量的情况下扩大 感受野,窗口可以加入间隔,使模型能够看到文本中距离更远的内容。
- 全局注意力: 特定的预选 token(例如分类 token
[CLS])会关注序列中的所有其他 token,同时所有 token 也会关注这些预选 token。这确保模型能够保留对整个输入的高层理解,以完成 文本摘要 等任务。
实际应用#
同时处理数千个 token 的能力为 自然语言处理(NLP) 及其他领域开辟了新的可能性。
1. 法律和医疗文档分析#
在法律和医疗等行业,文档很少篇幅短小。法律合同或患者的病历可能长达数十页。传统的 大型语言模型(LLM) 需要将这些文档拆分,这可能导致模型错过第 1 页中的条款与第 30 页中的定义之间的重要关联。Longformer 能够一次性对完整文档执行 命名实体识别(NER) 和分类,确保全局上下文影响对特定术语的解读。
2. 长文本问答(QA)#
当问题的答案需要综合一篇长文章中分散的信息时,标准 问答 系统往往难以应对。通过将完整文本保留在内存中,基于 Longformer 的模型可以执行多跳推理,将不同段落中的事实联系起来,生成全面的答案。这对于自动化技术支持系统和学术研究工具至关重要。
关键术语辨析#
- Longformer 与 Transformer 的比较: 标准 Transformer 使用完整的 $N^2$ 注意力机制,精确度高,但处理长输入时计算成本昂贵。Longformer 使用稀疏的 $N$ 注意力机制,以极少的理论容量损失换取巨大的效率提升,从而支持 4,096 个或更多 token 的输入。
- Longformer 与 Transformer-XL 的比较: 两者都能处理长序列,但 Transformer-XL 依靠循环机制(缓存之前的状态)来记忆过去的片段。Longformer 原生地一次性处理整个长序列,从而简化了在 Ultralytics Platform 等平台上的并行训练。
- Longformer 与 BigBird 的比较: 这两种架构非常相似,开发时间也大致相同。两者都使用稀疏注意力机制来实现线性扩展。BigBird 除滑动窗口外,还引入了特定的随机注意力组件。
实现概念#
虽然 Longformer 是一种架构,而不是特定的函数,但了解如何为长上下文模型准备数据至关重要。在 PyTorch 等现代框架中,这通常涉及管理超出标准限制的 嵌入。
以下示例演示了如何为长上下文场景创建一个模拟输入张量,并将其与 YOLO26 等标准检测模型中通常使用的尺寸进行对比。
import torch
# Standard BERT-like models typically cap at 512 tokens
standard_input = torch.randint(0, 30000, (1, 512))
# Longformer architectures can handle significantly larger inputs (e.g., 4096)
# This allows the model to "see" the entire sequence at once.
long_context_input = torch.randint(0, 30000, (1, 4096))
print(f"Standard Input Shape: {standard_input.shape}")
print(f"Long Context Input Shape: {long_context_input.shape}")
# In computer vision, a similar concept applies when processing high-res images
# without downsampling, preserving fine-grained details.与计算机视觉的相关性#
Longformer 最初是为文本设计的,但其背后的原理也影响了 计算机视觉。将注意力限制在局部邻域内的概念,与视觉任务中的局部化操作类似。Vision Transformer(ViT)也面临类似的扩展问题,因为高分辨率图像中的像素数量(或图像块数量)可能非常庞大。源自 Longformer 稀疏注意力的技术被用于提升 图像分类 和 目标检测 的效率,帮助 YOLO26 等模型在处理细致视觉数据时保持较高速度。
如需进一步了解架构细节,AllenAI 发布的 Longformer 原始论文 提供了深入的基准测试和理论依据。此外,这类大型模型的高效训练通常受益于 混合精度 和先进的 优化算法 等技术。









