趋近智
理解训练好的Transformer模型如何进行预测,与优化其训练速度或内存使用同等重要。分析注意力权重分布能够帮助我们了解模型的内部推理过程。通过它,我们能观察模型在处理特定标记时,将注意力集中在输入序列的哪些部分。这种做法对于调试、验证模型行为以及弄清模型是学到了有意义的关联还是依赖于虚假相关性非常有帮助。
大多数现代深度学习框架都提供了机制来访问模型中的中间激活,包括注意力权重。具体方法取决于所使用的框架以及Transformer模型的实现方式。常见的方法包括:
forward传递: 修改模型的forward方法(或等效方法),使其在返回主要输出的同时也返回注意力权重。如果您能控制模型的源代码,这通常很简单。Attention层)上。这些钩子可以在正向或反向传播过程中捕获模块的输出(或输入),而无需永久修改模型代码。output_attentions=True),可以指示模型返回注意力权重。无论采用哪种方法,目标都是获取注意力概率矩阵,这些矩阵通常是在每个注意力头内部的softmax操作之后计算得到的。对于标准的多头注意力层,输出的注意力权重通常具有[batch_size, num_heads, sequence_length_query, sequence_length_key]的形状。对于自注意力,sequence_length_query和sequence_length_key是相同的(即输入序列长度)。对于解码器中的交叉注意力,sequence_length_key对应于编码器输出序列长度。
假设您已经获取了批处理中单个样本的特定层和头的注意力权重。结果张量,我们称之为attention_probs,可能具有[num_heads, seq_len, seq_len]的形状。我们可以选择一个特定的头进行可视化,从而得到一个形状为[seq_len, seq_len]的二维矩阵。
可视化这些二维注意力矩阵最常用的方法是使用热力图。热力图中的每个单元格 (i,j) 表示从第i个查询标记到第j个键标记的注意力权重。值越高(颜色越亮)表示注意力越强。
考虑一个简单的输入句子:“The quick brown fox jumps”。我们来可视化第一层、第一个头的自注意力权重。
# 使用Matplotlib/Seaborn的Python代码
# 假设'attention_matrix'是一个[seq_len, seq_len]的numpy数组
# 假设'tokens'是一个字符串列表:["The", "quick", "brown", "fox", "jumps"]
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
# 示例注意力数据(请替换为实际提取的权重)
# 行:查询标记(源自)
# 列:标记(指向)
attention_matrix = np.random.rand(5, 5)
# 使对角线略微加强以增加真实感
np.fill_diagonal(attention_matrix, attention_matrix.diagonal() + 0.3)
# 对行进行归一化,使其总和为1(如softmax输出)
attention_matrix /= attention_matrix.sum(axis=1, keepdims=True)
tokens = ["The", "quick", "brown", "fox", "jumps"]
seq_len = len(tokens)
plt.figure(figsize=(7, 6))
sns.heatmap(attention_matrix, xticklabels=tokens, yticklabels=tokens, cmap="viridis", annot=True, fmt=".2f")
plt.xlabel("标记(指向)")
plt.ylabel("查询标记(源自)")
plt.title("自注意力权重(第一层,第一个头)")
plt.xticks(rotation=45)
plt.yticks(rotation=0)
plt.tight_layout()
plt.show()
这是使用Plotly进行网页可视化的一个示例,显示了相同句子的注意力权重。
热力图显示了标记之间的注意力分数。行代表生成查询的标记,列代表生成键/值的标记。更亮的单元格表示更高的注意力分数。
在分析这些可视化时,寻找重复出现的模式:
[CLS]、[SEP]、[BOS]、[EOS]等特殊标记的注意力情况。有时,[CLS]标记(在类似BERT的模型中)会汇总整个序列的信息,显示出广泛的注意力。在解码器中,标记通常会关注前一个句子或片段的[EOS](序列结束)标记。尽管富有洞察力,但注意力可视化并非对模型行为的明确解释。
分析注意力权重是一种实用技术,可帮助您定性地了解Transformer模型。它通过帮助您理解模型如何处理信息来补充定量评估指标,这对于构建更有效和可靠的系统至关重要。这种做法有助于确认复杂机制(如学习到的位置嵌入、层归一化策略或特定优化器)是否带来了合理的内部表示和信息流。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造