Transformer-XL
Transformer 的上下文窗口问题#在我们之前介绍 Transformer时我们提到了位置编码提到了因果掩码但并没有对数据本身展开太多。这里我们先补充一些 Transformer 对文本数据处理细节 展开 Transformer 的上下文窗口逻辑。1.1 长短不一的文本如何统一输入#我们知道注意力本身就是是矩阵运算假设一个 batch 中有三句话文本序列 Tokenize 后 Token 数量“I love AI” [“I”, “love”, “AI”] 3“Transformer is powerful” [“Transformer”, “is”, “powerful”] 3“Hi” [“Hi”] 1显然这种不规则长度根本无法直接组成矩阵。因此Transformer 会使用经典方法Padding填充来把所有序列补齐到同一个长度。例如补到当前 batch 的最长长度原始序列 Padding 后[I, love, AI] [I, love, AI][Transformer, is, powerful] [Transformer, is, powerful][Hi] [Hi, PAD, PAD]这里的 就是填充符 它没有任何语义仅仅用于对齐矩阵来满足模型输入要求。1.2 Attention 如何处理填充符#这里很容易产生一个问题既然填充符也进入了序列那模型会不会真的去关注这些“伪 token”答案是会如果不做额外处理Attention 会把填充符成正常 token 一样参与计算。这显然是无意义的。因此Transformer 引入 Attention Mask也就是注意力掩码它和我们之前提到的解码器阶段的因果掩码不同。它的作用就是在填充的同时生成一组掩码告诉模型输入的哪些位置是填充符不用计算。就像这样显然1 表示有效 token0 表示 PAD.随后在 Attention 内部计算完得到注意力分数后模型会根据掩码把 PAD 位置对应的分数变成这样在进行 Softmax 之时这样PAD 的注意力权重就会归零不污染真正的注意力信息。但是这只是解决了逻辑问题这里还有一个问题计算量问题。1.3 Transformer 如何处理长文本序列#在有了 PAD 后从理论上来说 Transformer 可以处理无限长的序列只要把该 batch 中的其他序列都填充至最长长度就好了。但显然这只是理论。原因在于注意力计算中每一个 token 都要计算和所有 token 的注意力分数,其复杂度为因此计算量会随着序列长度增加而暴涨得到结论Transformer 不可能无限扩展上下文。所以大多数 Transformer 都会设定一个固定长度上下文窗口例如512、1024、2048 等等这就是现在的AI模型记忆的最初形态。当序列长度超过这个窗口长度时Transformer 就会进行切段Segment。例如一个最大上下文窗口长度为的 Transformer如果输入了一篇长度为 1500 tokens 的长文章模型通常会将其切分为以下三段Segment A: [1 ~ 512] tokensSegment B: [513 ~ 1024] tokensSegment C: [1025 ~ 1500] tokens之后这三个 Segment 会只在自己的序列范围内计算注意力从而解决长序列带来的计算量问题。但这也同时带来了新的问题Segment A 中的 token无法看到 Segment B 和 Segment C 中的内容。因为它们不在一个上下文窗口里这就是“看到结尾忘了开头”的原因。这便是 Transformer-XL 的核心改进点同时作者提出了一种改进后的 RPE下面就来详细展开。2.Transformer-XL#现在我们已经理解了原始 Transformer 的核心问题上下文窗口是固定的不同 Segment 之间完全隔离。而 Transformer-XL 的核心思想其实非常直观既然当前窗口看不到历史内容那就把历史窗口缓存下来。下面来分点展开其详细逻辑2.1 记忆缓存 Memory#在展开这部分前我们要先强调一点设计同一个序列的 Segment A、B、C 不会出现在同一个 batch 内而是按顺序出现在前后不同 batch。现在我们来展开 Memory 的内容你就会明白这么设计的原因image.png如图所示我们知道序列数据进入 Transformer block 后会进行注意力计算、融合等处理得到编码信息进行下一步堆叠或其他处理而现在我们新增了一个缓存窗口我们会这这一批次的编码信息存入缓存窗口而下一批次的输出后就会把下一个批次的输出再存入其中。值得一提的是缓存窗口不一定要大于等于上下文窗口。如果设置缓存窗口为 256而上下文窗口是 512 那么只会切分编码信息的最后 256 部分进入缓存窗口。这一步我们是把现在的存下来其作用自然就是在下一步使用来实现“记忆功能”。2.2 Memory 如何参与下一轮 Attention#现在Memory 已经建立好了。接下来真正关键的问题来了历史编码信息到底是如何参与下一轮计算的在这里你会发现这种逻辑非常类似于 RNN 因此我们在这里也称 Memory 为上一轮的隐藏状态而其传递逻辑是这样的image.png这段是递归传递的核心我们来详细展开先回到 Attention 的核心公式我们之前说过Query表示“当前需要什么”Key表示“当前可以提供什么”Value表示“真正携带的信息”因此在当前批次中我们首先要使用自身信息来生成需求即:而为了实现记忆我们就要从当前和缓存中确认供给和真正信息即因此XL 的处理是现将当前批次信息和缓存进行拼接注意这是序列长度维度的拼接所以不会破坏的 Q/K/V 投影计算。展开一下对于其中token 数序列长度embedding 维度如果当前 segment而历史 memory拼接后的结构是这样的相当于memory token1memory token2…current token1current token2…就像把两段句子接起来。所以后面的 KV 投影计算是完全合法的这样在后续的归一化融合部分里当前 token 就可以同时注意当前 segment 和历史 memory实现跨 segment 的注意力。2.3 Segment-Level Recurrence 段级递归#到这里你会发现Transformer-XL 已经开始出现一种“循环结构”了。因为融合了上轮 memory 的当前 segment 的输出会成为下一轮的 memory继续和下一个 segment 融合在各个block 内相继进行这种机制就被称为Segment-Level Recurrence段级递归。image.png这里的“递归”并不是 RNN 那种 token-by-token 的时间递归而是在 Segment 层级上的递归。这种递归保留了 Transformer 的并行计算优势因为 segment 内部仍然是并行 Attention只有 segment 之间是递归的。2.4 Stop Gradient 停止梯度#前面我们已经把正向传播的框架建立完成但一个新的问题就出现了在这种设计里反向传播会让梯度会无限跨 segment 传播。而这会导致反向传播链无限增长训练极度缓慢出现类似 RNN 的长距离依赖问题。因此Transformer-XL 的应对措施是Stop Gradient停止梯度。含义是Memory 可以参与前向传播 但不会参与反向传播。即历史 memory 只作为“只读缓存” 当前 segment 才参与训练更新。image.png当然这也意味着 历史 memory 不会被后续 segment 反向修正。这便催生了后来的研究方向。3.Transformer-XL 里的位置编码问题#前面我们用 Memory 和段级递归解决了跨段信息传递的问题但这同样催生了一个新问题如何进行跨窗口的位置编码举个简单例子假设模型上下文窗口长度为 4一段长文本被切成了两个 segmentSegment 1 Segment 2Position 1 A EPosition 2 B FPosition 3 C GPosition 4 D H引入 Memory 后Segment 2 中的 token 可以看到 Segment 1 的编码信息。这时模型会面对这样一个问题位置 4 到底是指 D第一个 segment 的末尾还是 H第二个 segment 的末尾显然模型无法区分。因为这时的位置编码只依赖在 segment 内部的绝对位置不依赖在原始文本中的实际位置。当两个 segment 的位置编码范围完全相同时模型就出现了位置混淆这就是绝对编码在段级递归场景下的根本缺陷。

相关新闻

现代C++核心特性实战:从C++11到C++20的效率提升与工程实践

现代C++核心特性实战:从C++11到C++20的效率提升与工程实践

1. 项目概述:从“能用”到“好用”的现代C实战演进干了十几年C,从VC6.0的MFC时代一路摸爬滚打到C20,最大的感触就是:语言特性的演进,本质上是在解决我们日常编码中的“不爽”。早期C项目里,满屏的new/delet…

2026/7/29 21:16:57 阅读更多 →
C++适配器模式:解决接口不兼容问题的结构型设计模式

C++适配器模式:解决接口不兼容问题的结构型设计模式

1. 项目概述:为什么我们需要适配器模式?在C的世界里,尤其是在构建大型、复杂的软件系统时,我们常常会遇到一个令人头疼的问题:手头有一个功能强大、逻辑完善的类(或接口),但它提供的…

2026/7/31 5:49:31 阅读更多 →
Python Pygame启动动画开发指南:从原理到实战

Python Pygame启动动画开发指南:从原理到实战

1. 项目概述:为什么我们需要一个启动动画?在桌面应用、独立游戏或者一些工具软件的开发中,第一印象至关重要。用户双击图标后,如果直接弹出一个空白的窗口,或者程序需要几秒钟来加载资源,这段时间的“沉默”…

2026/7/31 2:05:45 阅读更多 →

最新新闻

如何快速上手WAS节点套件:3个核心模块解锁ComfyUI无限潜力

如何快速上手WAS节点套件:3个核心模块解锁ComfyUI无限潜力

如何快速上手WAS节点套件:3个核心模块解锁ComfyUI无限潜力 【免费下载链接】was-node-suite-comfyui An extensive node suite for ComfyUI with over 210 new nodes 项目地址: https://gitcode.com/gh_mirrors/wa/was-node-suite-comfyui WAS Node Suite是专…

2026/7/31 12:12:08 阅读更多 →
如何永久保存微信聊天记录:WeChatMsg工具的完整指南

如何永久保存微信聊天记录:WeChatMsg工具的完整指南

如何永久保存微信聊天记录:WeChatMsg工具的完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatM…

2026/7/31 12:12:08 阅读更多 →
SciDownl:学术文献获取的技术革命与效率突破

SciDownl:学术文献获取的技术革命与效率突破

SciDownl:学术文献获取的技术革命与效率突破 【免费下载链接】SciDownl An unofficial api for downloading papers from SciHub via DOI, PMID, title 项目地址: https://gitcode.com/gh_mirrors/sc/SciDownl 在当今科研领域,文献获取效率直接影…

2026/7/31 12:12:08 阅读更多 →
有录网在2026留学服务榜单中的表现剖析

有录网在2026留学服务榜单中的表现剖析

在竞争激烈的留学服务市场中,有录网凭借其专业的服务、丰富的案例积累和稳定的团队,在2026留学服务榜单中脱颖而出。下面从多个方面对有录网的表现进行剖析。服务团队:分工协作保障稳定性有录网采用顾问、文书、申请、签证等岗位分工协作的服…

2026/7/31 12:12:08 阅读更多 →
Chrome文本替换终极指南:3分钟掌握网页内容批量编辑神器

Chrome文本替换终极指南:3分钟掌握网页内容批量编辑神器

Chrome文本替换终极指南:3分钟掌握网页内容批量编辑神器 【免费下载链接】chrome-extensions-searchReplace 项目地址: https://gitcode.com/gh_mirrors/ch/chrome-extensions-searchReplace 你是否曾面对网页上需要修改的几十处相同文本而感到束手无策&…

2026/7/31 12:12:08 阅读更多 →
CTF流量分析终极指南:如何用CTF-NetA在5分钟内找到隐藏的Flag

CTF流量分析终极指南:如何用CTF-NetA在5分钟内找到隐藏的Flag

CTF流量分析终极指南:如何用CTF-NetA在5分钟内找到隐藏的Flag 【免费下载链接】CTF-NetA CTF-NetA是一款专门针对CTF比赛的网络流量分析工具,可以对常见的网络流量进行分析,快速自动获取flag。 项目地址: https://gitcode.com/gh_mirrors/c…

2026/7/31 12:11:08 阅读更多 →

日新闻

物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:34 阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:34 阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:34 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻