注意力是一种机制,允许句子中的每个单词"询问"所有其他单词:"为了理解我自己,我应该关注你多少?"
是的,字面意思。
每个单词生成一个"查询"(Query)。
每个单词也有一个"键"(Key)和一个"值"(Value)。
魔法在于它们如何关联。
想象你在教室里,老师要求你定义"银行"这个词。
你("银行")可以问所有同学:
每个同学都根据他们的键(Key)回复相关性分数。
然后,你从前几个最相关的同学那里获取回复(他们的值),将它们组合起来,形成你的上下文感知定义。
这就是注意力机制的本质。
每个单词被转换为三个向量表示:
🔹 简化过程:
看两个句子:
A) "我去银行存工资。"
B) "我坐在公园长椅上阅读。"
当模型处理句子A中的"银行"时:
在句子B中:
没有规则,没有词典!只有上下文注意力。
这是我们刚才描述的机制的技术名称。
公式(仅供参考,无需记忆):
Attention(Q, K, V) = softmax( (Q · K^T) / √d_k ) · V
其中:
Q · K^T = 查询和键的点积 → 相似性分数。√d_k = 缩放因子(用于数值稳定性)。softmax = 将分数转换为权重(总和为1)。· V = 按这些权重加权值。🔹 重要: 你不需要理解公式来使用Transformers。但你需要掌握概念:每个单词根据其与其他所有单词的关系重新定义自己。
选择一个有歧义的词(如"法庭"、"植物"、"火焰")。写两个句子,在其中它有不同的含义。然后,描述句子中哪些其他单词"应该"与它有高注意力,以及为什么。
单词: "银行"
Query: [0.8, -0.2, 0.5] → "寻找金融或地理上下文"
邻居单词:
- "存款" → Key: [0.9, 0.1, -0.3] → 高兼容性 → Value: [1.0, 0.8, ...]
- "公园" → Key: [-0.7, 0.6, 0.4] → 低兼容性 → Value: [0.2, 0.1, ...]
- "工资" → Key: [0.85, -0.1, 0.2] → 高兼容性 → Value: [0.9, 0.7, ...]
注意力权重(softmax后):
存款: 0.7
公园: 0.1
工资: 0.2
新"银行"向量 = 0.7 * Value_存款 + 0.1 * Value_公园 + 0.2 * Value_工资
→ 结果: 向量偏向"金融机构"
注意力不是魔法——它是一种优雅的数学机制,允许机器以上下文、动态和关系的方式理解语言。它是Transformer的核心。最重要的是:它是完全可并行化的!
现在我们理解了注意力,让我们看看如何从组件构建完整的Transformer:嵌入、位置和多头注意力。
✅ 到目前为止,我们已经涵盖了大约2小时的内容。
你想继续模块3:拼图碎片——嵌入、位置和多头注意力吗?
在那里,我们将深入探讨单词如何编码,为什么需要知道它们在句子中的位置,以及"多头注意力"如何同时理解多种类型的关系。
告诉我是否要继续——我将继续保持同样详细的程度、示例、类比和代码。
完美!我们继续以同样的详细程度、教学深度、日常类比和实践准备。让我们继续: