趋近智
标准的Transformer架构以固定长度、独立的块或窗口处理序列,但这种方式会遇到一个明显局限性,即上下文 (context)碎片化。在处理长度超出固定窗口限制的长文档或序列数据流时,模型必须将输入分成独立的分段进行处理。在处理新分段时,来自前序分段的信息通常会丢失,这阻碍了模型捕获跨越分段边界的长距离依赖关系的能力。
Transformer-XL(意为具有超长上下文的Transformer)通过引入分段级别的循环机制直接解决了这一限制。Transformer-XL不再孤立地处理每个分段,而是重复使用从先前分段计算得到的隐藏状态。
主要思想简单但有效。当模型处理一个分段(例如分段 )时,它会在每个层计算一系列隐藏状态,这与标准Transformer类似。这些隐藏状态随后会被缓存或存储在内存中。当模型移动到下一个分段 时,各层不仅可以关注当前分段 内的隐藏状态,还可以关注来自前一个分段 的缓存隐藏状态。
设 表示第 个分段中第 个Transformer层产生的隐藏状态序列,其中 是分段长度, 是隐藏维度。在计算下一个分段的隐藏状态 时,第 层接收源自 (当前分段下方层的输出)和 (前一个分段下方层的输出)的输入。
具体而言,分段 中层 的扩展上下文 (context)是通过将来自前一个分段的缓存状态与来自当前分段的状态沿着序列长度维度连接而形成的:
这里, 表示一个停止梯度操作,这意味着梯度不会通过缓存状态 反向传播 (backpropagation)。这很要紧:它防止了计算图变得过长,并避免了相关的优化困难。 运算符表示沿着序列长度维度的连接。
层 内的注意力机制 (attention mechanism)随后仅基于当前分段的表示 计算其查询 (),而键 () 和值 () 则源自扩展上下文 :
这使得当前分段 中的每个位置都能够关注其自身内部以及前一个分段 中的所有位置,有效地将每一步可用的上下文长度加倍,同时不跨分段边界传播梯度。
Transformer-XL 中的信息流。来自分段 的隐藏状态被缓存,并用作处理分段 的扩展上下文,同时不通过缓存反向传播梯度。
状态复用机制给标准位置编码(如第4章中描述的正弦或学习到的绝对嵌入 (embedding))带来了挑战。如果我们只是简单地将相同的绝对位置编码添加到每个分段,那么一个位置索引(例如,第10个词元 (token))将具有相同的编码,无论它是第一个分段的第10个词元还是第二个分段的第10个词元。这种位置歧义性使得模型难以区分跨分段的时间顺序。
Transformer-XL 通过采用一种相对位置编码方案来解决这个问题。它不编码词元的绝对位置 ,而是编码位于位置 的查询词元与位于位置 的词元之间的相对距离(或偏移)。这种相对信息被直接注入到注意力分数计算中。
在查询 和键 的标准自注意力 (self-attention)分数计算中,我们计算 。在带有相对位置编码的Transformer-XL中,这个计算被修改为包含仅依赖于相对距离 的项。具体公式涉及将键向量 (vector)中的绝对位置信息替换为相对位置嵌入。这确保了注意力机制 (attention mechanism)能够知晓词元之间的距离,而不受它们在可能非常长的、分段处理的序列中绝对位置的影响。
引入分段级别循环和相对位置编码 (positional encoding)带来了多项益处:
Transformer-XL 代表了使Transformer能够有效地处理更长序列的重要一步,为涉及长篇文档、文章或连续数据流的应用创造了途径,在这些应用中,保持长距离连贯性很要紧。尽管它引入了缓存状态的开销,但在建模能力和评估速度方面的益处对于特定任务通常会超过此成本。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造