Transformer 中 QKV 流向全解析(含注意力机制箭头图示)

QKV 是什么?

在 Attention 机制中,我们通过 Query(查询) 与一组 Key-Value(键-值)对 计算注意力权重,然后用这些权重对 Value 进行加权求和,从而输出当前时刻关注上下文的结果。


Transformer 中注意力模块分布

Transformer 结构中含有三种注意力机制,每个机制都会涉及 Q、K、V 的构建和使用:

  1. 编码器自注意力(Encoder Self-Attention)

  2. 解码器自注意力(Decoder Self-Attention)

  3. 编码器-解码器注意力(Encoder-Decoder Attention)


编码器中的注意力机制(Encoder Self-Attention)

位置:每个 Encoder Layer 内的 Multi-Head Self-Attention 子层

输入:编码器输入(embedding 或上层输出),记作 X

  • Q = X × W_Q:当前词想要“查询”的内容

  • K = X × W_K:当前词能“提供”的信息

  • V = X × W_V:当前词携带的实际信息

因为是 自注意力(Self-Attention),所以 Q、K、V 都是来自同一个输入。

           [Encoder Input X]
                 │
     ┌───────────┴───────────┐
     ▼                       ▼
 Linear(W_Q)           Linear(W_K, W_V)
     ▼                       ▼
     Q  ------------------>  K
                             │
                             ▼
                           Attention
                             │
                             ▼
                             V

解码器中的注意力机制(Decoder Self-Attention)

位置:每个 Decoder Layer 的第一层 Multi-Head Self-Attention 子层

输入:解码器已生成的词(embedding 或上层输出),记作 Y

  • Q = Y × W_Q

  • K = Y × W_K

  • V = Y × W_V

同样是 自注意力机制,Q、K、V 均来自 Y
注意:此处需要 mask 掩码,防止看到未来词。

          [Decoder Input Y]
                 │
     ┌───────────┴───────────┐
     ▼                       ▼
 Linear(W_Q)           Linear(W_K, W_V)
     ▼                       ▼
     Q  ------------------>  K
                             │
                             ▼
                           Masked Attention
                             │
                             ▼
                             V

解码器中的编码器-解码器注意力机制(Encoder-Decoder Attention)

位置:每个 Decoder Layer 的第二层 Multi-Head Attention 子层

输入:

  • 解码器当前输入 Y(当前时间步的 query)

  • 编码器输出 X_enc(作为 memory 提供上下文)

  • Q = Y × W_Q(来自解码器的当前输出)

  • K = X_enc × W_K(来自编码器输出)

  • V = X_enc × W_V(来自编码器输出)

这是典型的 跨注意力机制(Cross-Attention)。解码器在“查询”编码器输出中哪些内容有用。

       [Decoder Hidden Y]             [Encoder Output X]
               │                              │
         Linear(W_Q)                 Linear(W_K), Linear(W_V)
               │                              │
               ▼                              ▼
               Q  ----------------------->    K
                                                │
                                                ▼
                                             Attention
                                                │
                                                ▼
                                                V

多头注意力机制(Multi-Head Attention)中的 Q、K、V 计算细节

在每个注意力模块中,会有 num_heads 个独立的头,每个头都有自己的一套 W_Q、W_K、W_V:

Q = input @ W_Q      # [batch, seq_len, d_model] @ [d_model, d_k]
K = input @ W_K
V = input @ W_V

然后每个 head 分别进行注意力计算,再合并回去(Concat),再接一个线性变换。


总结对照表

注意力类型Q 来源K 来源V 来源是否 Mask
编码器自注意力编码器输入 X编码器输入 X编码器输入 X
解码器自注意力解码器输入 Y解码器输入 Y解码器输入 Y✅ 是
编码器-解码器注意力解码器输入 Y编码器输出 X编码器输出 X
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值