1. Transformer-XL架构的核心突破
在自然语言处理领域,传统Transformer模型面临着一个根本性限制:固定长度上下文窗口。想象你正在阅读一本小说,但每次只能记住最近的三页内容——这就是标准Transformer在处理长文本时的困境。2019年提出的Transformer-XL(XL意为extra long)通过两项关键创新解决了这个问题。
1.1 段级递归机制
标准Transformer将输入文本分割成固定长度的独立段进行处理,导致段与段之间完全割裂。Transformer-XL引入的段级递归机制,可以类比为人类阅读时的"短期记忆"系统。具体实现包含三个关键步骤:
- 隐藏状态缓存:处理当前段时,会缓存前一段的隐藏状态(即记忆)
- 跨段注意力:当前段的每个位置可以关注到前一段的所有位置
- 梯度截断:仅在段内进行反向传播,避免长距离梯度问题
这种机制使得模型能够学习到最长80%超过RNN、450%超过标准Transformer的依赖关系。在实际代码中,这体现为额外的key-value缓存:
python复制class TransformerXLBlock(nn.Module):
def __init__(self, d_model, n_head):
self.attention = RelativeMultiHeadAttention(d_model, n_head)
self.mem_len = config.mem_len # 通常设置为512或1024
def forward(self, x, mems):
# mems形状为[layer_num, batch_size, mem_len, d_model]
new_mems = []
hiddens = []
for i, layer in enumerate(self.layers):
new_h, new_mem = layer(x, mems[i] if mems is not None else None)
hiddens.append(ne
