从零理解 Attention 和 Transformer(学习笔记)

之前对 AI 的底层原理理解很模糊,一堆术语堆在一起分不清。今天从对话里一步步拆明白了。

主要卡点:

  1. 模型的"权重"到底是静态的还是动态的 → 两种都有
  2. Decoder-only 为什么不需要 Encoder → Decoder 自己就能看自己
  3. Attention 里的 Q、K、V 到底是什么 → 每个 token 乘三个矩阵算出来的
类型什么时候变作用
模型静态权重训完就固定模型的"知识",比如知道"的"后面常跟"名"
注意力权重每次输入动态算这句话里哪个词跟当前输出最相关

每个 token 变成向量后,乘三个矩阵(W_q、W_k、W_v),得到三样东西:

  • Q(查询):我要找什么信息
  • K(键值):我身上有什么标签
  • V(价值):我身上有什么信息

然后:当前位置的 Q × 每个位置的 K → 得出得分 → softmax 归一化 → 用归一化后的分数加权取 V → 最终输出。

关键是自己在注意力计算时能看自己,不是只看前面的词。

1
2
3
4
输入文字
   → Token Embedding + 位置编码
   → [Self-Attention(看全局)→ 前馈网络(消化信息)] × N 层
   → 线性层 → 预测下一个字

原始 Transformer 有 Encoder + Decoder,但聊天场景下输入和输出天然在一条序列里,Decoder 的 self-attention 自己就能回看所有 token,不需要 Encoder 额外"翻译"。

  • 缓存为什么便宜:每个 token 的 K、V 上轮已经算好了,直接复用不用重算
  • 多模态为什么多一个编码器:图像被打包成视觉 token 送进同一个 Transformer

相关内容