Transformer的核心——注意力机制

Transformer的核心——注意力机制 本文是作者本人学习深度学习的理解如有错误劳烦指出让我改正文章目录前言一、注意力机制的动机三个直观例子1. 一词多义三个 mole2.精细化修饰从 Tower 到 Miniature Eiffel Tower每一步周围的词都在拉扯这个向量的含义。3.长距离信息传递Transformer 的最终预测完全基于序列最后一个向量。它必须通过层层注意力把整个上下文窗口中所有相关信息都编码进来。二、单头注意力一步步拆解1.Query查询—— 提出问题2. Key键—— 回应查询3.点积 Softmax → 注意力模式4.Masking掩码—— 不能偷看未来这就是因果掩码Causal Masking——信息只能从前往后流动。5.Value值—— 实际传递的信息6.加权求和 → 更新嵌入三、多头注意力多个视角并行1.为什么需要多个头上下文影响含义的方式远不止一种2.多头配置(以GPT3.0为例)总结前言为什么同一个词 “mole”在 “鼹鼠”、“摩尔”、“痣” 三种语境下模型能自动区分答案就藏在注意力机制里。一、注意力机制的动机三个直观例子1. 一词多义三个 “mole”“American shrew mole” → 一种鼹鼠“One mole of carbon dioxide” → 摩尔化学计量单位“Take a biopsy of the mole” → 痣医学用语2.精细化修饰从 “Tower” 到 “Miniature Eiffel Tower”初始 “Tower” → 指向高大建筑物方向前面出现 “Eiffel” → 注意力将向量推向巴黎、钢铁、法国方向再前面出现 “miniature” → 进一步推离高大靠向微缩模型每一步周围的词都在拉扯这个向量的含义。3.长距离信息传递想象你给模型输入整本侦探小说最后一句话是 “Therefore the murderer was ____”。那个空白位置的向量必须跨越几十页的上下文从前面所有人名中回忆起谁是凶手。Transformer 的最终预测完全基于序列最后一个向量。它必须通过层层注意力把整个上下文窗口中所有相关信息都编码进来。二、单头注意力一步步拆解以 “A fluffy blue creature roamed the verdant forest.” 为例。假设我们追踪形容词如何更新名词 “creature” 的含义。注意力机制的核心流程分五步每个 token 的嵌入↓① 生成 Query查询向量—— “我在找什么”② 生成 Key 键向量 —— “我能提供什么”③ Q·K 点积 Softmax → 注意力模式④ 生成 Value值向量 —— “如果被选中传递什么信息”⑤ Value 加权求和 → ΔE → 加到原嵌入1.Query查询—— 提出问题每个 token 的嵌入向量 E 与一个可训练的查询矩阵 Wᴏ 相乘得到查询向量 Q名词 “creature” 的 Q 向量像是在问 —— 我前面有形容词吗2. Key键—— 回应查询同样每个 token 通过键矩阵 Wᴋ 产生键向量 K键向量和查询向量处于同一个低维空间。直觉上形容词 “fluffy” 的 K 向量像是在回应 —— “是的我是形容词我在前面”3.点积 Softmax → 注意力模式计算所有查询向量与所有键向量的点积dot product得到一个 n × n 的网格。点积衡量两个向量的对齐程度——值越大表示这个词与那个词越相关。然后对网格逐列做 SoftmaxSoftmax 将每列变成合法的概率分布0~1列和为 1。除以查询空间维度的平方根是为了数值稳定性——防止点积值太大导致 Softmax 输出过于极端梯度消失。这个归一化后的网格就是注意力模式Attention Pattern——它告诉我们每个词应该从其他词那里听多少。4.Masking掩码—— 不能偷看未来训练时有一个巧妙的设计对每个位置模型同时预测下一个 token。比如输入 “A fluffy blue creature roamed…”位置 1 预测位置 2位置 1~2 预测位置 3位置 1~3 预测位置 4…一把前向传播同时训练所有位置——效率极高。但有个问题后面的 token 不能影响前面的 token否则等于看了答案再答题。做法很简单——在 Softmax 之前把注意力网格的上三角区域全部设为 负无穷这列依然归一化。这就是因果掩码Causal Masking——信息只能从前往后流动。5.Value值—— 实际传递的信息有了谁关注谁的权重网格后还需要真正的内容来更新嵌入。通过值矩阵 Wᴠ 产生值向量 V值向量与嵌入向量同维因为它要直接加到嵌入上。直觉理解值向量回答了 —— “如果我被选中去更新其他词我应该往它的嵌入里加什么”6.加权求和 → 更新嵌入用注意力权重对值向量加权求和得到变化量 ΔE最后加到原始嵌入上“creature” 的新嵌入向量就从泛化含义变成了包含 “fluffy” 和 “blue” 形容词信息的精炼含义。三、多头注意力多个视角并行1.为什么需要多个头上下文影响含义的方式远不止一种模式例子形容词 → 名词“fluffy creature”语法结构暗示“they crashed the car”跨句关联“Harry” 前面提到 “wizard” → Harry Potter复杂语义推理“Queen, Sussex, William” “Harry” → Prince Harry一个注意力头只能学一种模式。所以要多头并行。2.多头配置(以GPT3.0为例)GPT-3 每个注意力块有 96 个头每个头有独立的Wᴏ查询矩阵Wᴋ键矩阵V↓ V↑值矩阵对所有 96 个头各自独立计算产生 96 份 ΔE 提案最后全部加总。总结本文主要是讲解Transformer的核心机制注意力机制这只是粗略的讲解具体的实现以及公式在文章内未提及可以去翻阅资料查询对应的公式和实现代码等。