专栏名称: 机器学习初学者
号主黄博Github全球排名前90,3.6万Star!致力于为初学者提供学习路线和基础资料,公众号可以当作随身小抄,文章很全,建议收藏!点击菜单可以进入学习!
目录
相关文章推荐
发现新西兰  ·  突发!新西兰央行行长辞职!利率走势受关注! ·  5 天前  
发现新西兰  ·  连开5枪,仅判9个月居家,“因为童年悲惨” ·  5 天前  
51好读  ›  专栏  ›  机器学习初学者

【深度学习】彻底搞懂,Transformer !!

机器学习初学者  · 公众号  ·  · 2025-02-28 14:32

正文

今儿咱们聊一下,Transformer中的Query-Key-Value 矩阵计算与注意力权重生成,还想了一个自认为比较美的标题:手撕Query-Key-Value矩阵的数学之美。

好了,下面咱们聊聊 Transformer 中 Query-Key-Value 矩阵计算与注意力权重生成的原理,以及一个手算例子。

在一次聚会中,每个人都有三张卡片:

  • Query 卡片 :代表“我想知道和谁聊得来”,相当于提出问题;
  • Key 卡片 :代表“我是谁”,用来标记每个人的特性;
  • Value 卡片 :代表“我的真实信息或观点”。

在 Transformer 中,每个词(或 token)都会经过三个不同的线性变换,分别得到 Query、Key 和 Value 向量。

接下来,我们拿某个词的 Query 去与所有词的 Key 进行匹配(计算点积),匹配得分越高,说明这两个词的“特性”越接近。

为了让这些得分更稳定,还会除以一个缩放因子(Key 向量的维度平方根),然后再经过 softmax 得到一组概率,也就是注意力权重。

最后,用这些权重对所有词的 Value 进行加权求和,就得到了这个词的新表示——它综合了其他词对它的影响。

细节原理

输入及线性变换

设输入矩阵为 (每一行对应一个词的嵌入向量),通过三个不同的线性变换得到:

其中 是模型学习到的参数矩阵。

注意力权重的计算

  1. 相似度计算
    对于任意一个词 的 Query 向量 ,计算它与所有词的 Key 向量 的点积:

  2. 缩放
    为了防止点积值过大(尤其在高维空间中),将结果除以缩放因子

    其中 是 Key 向量的维度。

  3. 归一化(softmax)
    将缩放后的得分经过 softmax 函数,得到注意力权重:

    这表示词 对词 的关注程度。

加权求和生成输出

用注意力权重对所有词的 Value 向量加权求和,得到词 的输出表示:

用矩阵形式表达整个注意力层:

推理总结

  • 输入转换 :将输入嵌入 转换为 Query、Key、Value 三个向量。
  • 相似度计算与缩放 :用 Query 与 Key 做点积并除以
  • 归一化 :通过 softmax 得到归一化的注意力权重。
  • 信息聚合 :用这些权重对 Value 向量进行加权求和,输出综合上下文信息的表示。

手撕计算

假设我们有两个词,令它们的嵌入向量维度为 2,为了简化计算,我们令所有线性变换矩阵 均为单位矩阵(即直接让 )。

设定输入

令两个词的输入向量为:

因此:

设 Key 向量维度 ,则缩放因子为

计算 Q 与 K 的点积

计算 得:

缩放后的得分矩阵为:

计算注意力权重(softmax)

对每一行分别计算 softmax:

对于第一行

  • 计算指数:

  • 求和:
  • 得到注意力权重:

对于第二行 (过程类似):

  • 得到注意力权重:

加权求和生成输出

用注意力权重对 Value 向量求和:

  • 第一个词的输出

    其中 ,

  • 第二个词的输出







请到「今天看啥」查看全文