深度学习进阶(二十一)跨窗口的 RPE

📅 2026/6/26 3:21:47
深度学习进阶(二十一)跨窗口的 RPE
为什么要提出跨窗口的 RPE#1.1 正余弦绝对编码的局限#我们还是用上一篇的例子来展开这个问题假设模型上下文窗口长度为 4一段长文本被切成了两个 segmentSegment 1Segment 2Position 1AEPosition 2BFPosition 3CGPosition 4DH引入 Memory 后Segment 2 中的 token 可以看到 Segment 1 的编码信息。但模型无法区分位置 4 到底是指 D第一个 segment 的末尾还是 H第二个 segment 的末尾。那可不可以这样利用正余弦的无限外推能力直接让位置编码跨 segment 递增不就行了Segment 1 用位置 1~4Segment 2 用位置 5~8但问题在于正余弦位置编码虽然可以理论上无限生成却并不意味着模型真的具备无限长度泛化能力。要理解这一点我们需要明白的是PE 只是帮助学习的一环。注意力真正的学习是词嵌入、位置编码、QKV 矩阵等综合实现的这些实际上都是在训练长度范围内形成的。假设模型训练的上下文长度为 512那么模型长期接触的位置范围其实只有 0 ~ 512它会在这个空间内形成比较稳定的分布。但如果采用跨 segment 递增出现了一个 PE(512000)模型没有在这种位置分布上训练过导致无法泛化。从专业名词上说这叫extrapolation degradation外推退化。这时就像让一个每天练习正常考试题的学生没有任何防备的去做竞赛题。巨大的差异会直接影响原本已经稳定的“解题思路”。从而导致KQV 矩阵投影异常、注意力得分漂移等问题。总结来说就是强行使用看似合理实际却不适配的配件表面上解决了问题但实际却带来了更多 bug。因此单纯使用全局递增的绝对位置编码实际上并不能真正跨段的长上下文建模。1.2 可学习绝对编码的局限#相比正余弦绝对编码可学习绝对编码的局限就更明显了完全没有外推能力。展开来说Transformer 中的可学习绝对位置编码本质上其实是一张位置查找表当我们设置上下文长度为 512 时 它就为每个位置初始化一组向量作为位置编码并注入在反向传播中不断更新。它不是位置越大自动推导而只是“训练时记住了这个位置应该长什么样”。所以当采用跨 segment 递增出现了一个 PE(512000但可学习绝对编码只到PE512。而要增加就又回到了最初的窗口大小和计算量问题。最终可学习绝对位置编码因为本质上无法支持无限长度扩展不适用于 Transformer-XL 。1.3 原始 RPE 的局限#在原始 RPE中我们介绍了 Shaw 等人提出的相对位置编码引入可学习的 和 分别加到 Key 和 Value 上。从逻辑上说相对位置天然就是跨窗口的但过去的水救不了现在的火原始 PRE 存在两个待优化问题可学习的相对位置表有长度限制。如果训练时最大相对距离是 10而需要分段的长序列相对距离可能达到几千这时候查表查不到只能截断信息丢失严重。K/V 加法注入的方式过于粗糙。它只是简单地把位置信息线性叠加到语义表示上无法形成更丰富的交互。因此Transformer-XL 并没有直接用原始 RPE而是重新设计了一套相对位置编码方案。2.正余弦相对位置编码#现在我们知道了 Transformer-XL 必须使用 RPE 在正式展开其注入逻辑前我们需要先了解 Transformer-XL 本身对编码逻辑的设计正余弦相对位置编码。一个问题是“继续沿用原始 RPE 的相对位置表不可以吗”就像这样相对距离编码-1-2-3原因就是我们上面提到的可学习的相对位置表有长度限制外推能力不足。于是 Transformer-XL 做了一个非常关键的决定重新使用正余弦函数生成相对编码。具体来说对于相对距离Transformer-XL 会直接使用正余弦函数生成对应位置编码公式本身的计算逻辑和原始 Transformer的正余弦绝对编码没有任何区别只是把绝对位置 变成了相对距离 。假设位置编码维度维度公式计算结果最终得到这就是 “相对距离为 -2” 对应的相对位置编码它完善了长序列中的位置编码相比绝对编码具有更好的泛化性。不过这里需要注意的是这种编码仍然存在上面提到的正余弦绝对编码的局限。因为模型中的QKV 投影矩阵、Attention 模式等本质上仍然是在有限上下文范围内训练得到的不能通过单独的编码设计就完全解决这些问题。因此也催生了后续的更多改进。3. 跨窗口的 RPE#现在我们通过正余弦相对位置编码解决了原始 RPE 可学习的相对位置表有长度限制的问题一下个问题就是K/V 加法注入的方式过于粗糙。而 Transformer-XL 的做法并不是继续修补原始 RPE而是重新推导 Relative Attention 的计算形式。还是先回忆一下普通 Self-Attention 公式其中计算注意力分数的部分是但问题在于原始的它只包含“内容”没有真正包含“位置关系”所以原始 RPE 才会把 RPE 注入到 Attention 中。而现在这部分再次被重新改写为这也是 Transformer-XL 最核心的 Relative Attention 公式。看起来很复杂但它其实只是把“内容”和“位置”进行了分开建模。我们分点来看3.1 内容项和位置项#