Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Transformer-XL

Transformer-XL 会缓存前一个文本片段的隐藏状态并使用相对位置,使语言模型能够跨片段保留上下文。

Transformer-XL 是一种Transformer语言模型,它会缓存前一文本片段的隐藏状态,并让下一个片段对这些状态进行注意,从而在固定长度的文本片段之间传递上下文。卡内基梅隆大学和 Google Brain 的 Zihang Dai、Zhilin Yang 及其同事在 ACL 2019 上发表的论文《Transformer-XL:超越固定长度上下文的注意力语言模型》中介绍了该模型。使用固定片段训练的普通 Transformer 将每个片段视为独立的上下文窗口,因此无法看到当前片段开头之前的内容;作者将这个问题称为上下文碎片化。Transformer-XL 学到的依赖关系比循环神经网络(RNN)长 80%,比普通 Transformer 长 450%。

片段级循环#

模型处理一个片段时,每一层都会将缓存的前一片段隐藏状态与当前片段的隐藏状态拼接起来。查询只来自当前片段,而键和值则涵盖两个片段;梯度会在缓存处停止传播,因此每个片段的训练成本保持不变。下面通过 PyTorch 中的单个注意力层展示这种模式:

import torch
from torch import nn

torch.manual_seed(0)
seg_len, dim = 4, 16
attn = nn.MultiheadAttention(dim, num_heads=2, batch_first=True)
hidden = torch.randn(1, 3 * seg_len, dim)  # hidden states for three consecutive segments

memory = torch.empty(1, 0, dim)  # nothing is cached before the first segment
for i, segment in enumerate(hidden.split(seg_len, dim=1), start=1):
    # Queries come from the current segment; keys and values also cover the cached one
    context = torch.cat([memory, segment], dim=1)
    out, weights = attn(segment, context, context)
    print(f"Segment {i}: {weights.shape[1]} queries attend over {weights.shape[2]} positions")
    # Cache this segment for the next one; detach() stops gradients as in Transformer-XL
    memory = segment.detach()

第一个片段中的 4 个查询只能看到该片段的 4 个 token,之后每个片段中的查询都能看到 8 个 token:当前片段的 4 个,加上缓存的 4 个。由于某个片段第 n 层读取的是前一个片段第 n − 1 层的缓存状态,每增加一层,感受范围就会多延伸一个片段;当片段长度为 N 且层数为 L 时,范围约为 N × L 个 token:

缓存还能加快评估速度。普通 Transformer 逐个预测 token 时,每生成一个新 token 都必须重新计算整个窗口;Transformer-XL 则会复用缓存状态,因此评估速度最高可提升 1,800 多倍。当脚本逐帧向 model.track() 传递视频时,Ultralytics YOLO26 跟踪也会遇到相同的碎片化问题:persist=True 会在调用之间保留跟踪器状态,因此每个物体在相邻帧中都能保持相同的 ID。

相对位置编码#

复用缓存状态会破坏绝对位置编码:缓存片段的第一个 token 和当前片段的第一个 token 会带有相同的位置嵌入。Transformer-XL 改为根据查询和键的内容,以及两者距离的正弦编码来计算每个注意力分数,并使用两个跨位置共享的可学习偏置向量,分别表示内容和位置。由于分数仅取决于距离,模型在评估时可以关注比训练时更长的缓存。旋转位置嵌入(RoPE)也会让注意力分数取决于相对位置,大多数当前的大型语言模型(LLM)都在使用这种方法。

成果与影响#

Transformer-XL 在五项基准测试中取得了新的最先进结果:在 enwik8 上达到每字符 0.99 bit,在 text8 上达到 1.08 bit;在 WikiText-103、One Billion Word 和 Penn Treebank 上的困惑度分别为 18.3、21.8 和 54.5,且无需微调。该模型仅在 WikiText-103 上训练,就能生成数千个 token 长、连贯性尚可的新文章。多位相同作者提出的 XLNet 基于 Transformer-XL 架构进行自然语言理解预训练;DeepMind 的压缩 Transformer 则通过压缩旧记忆而不是丢弃旧记忆来扩展缓存。

  • 长短期记忆网络(LSTM):逐个 token 更新一个隐藏状态,因此较早的信息必须经过中间的每一步才能传递到当前。
  • Longformer:通过窗口注意力和全局注意力,一次读取整篇包含 4,096 个 token 的文档,无需循环处理。
  • KV 缓存:在生成过程中存储较早 token 的键和值,避免重复计算。Transformer-XL 的记忆也用于训练,并在片段边界处停止梯度传播。
  • 状态空间模型(SSM):将完整历史信息压缩到固定大小的状态中。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来