AI 1 分钟阅读

Attention 机制的数学直觉

Self-Attention 公式

Transformer 的核心是 Scaled Dot-Product Attention:

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

其中:

  • QRn×dkQ \in \mathbb{R}^{n \times d_k} — Query 矩阵
  • KRn×dkK \in \mathbb{R}^{n \times d_k} — Key 矩阵
  • VRn×dvV \in \mathbb{R}^{n \times d_v} — Value 矩阵
  • dkd_k — Key 的维度

为什么需要缩放

dkd_k 较大时,QKTQK^T 的方差会随维度增长,导致 softmax 进入梯度极小的饱和区。除以 dk\sqrt{d_k} 起到归一化作用。

代码实现

import torch
import torch.nn.functional as F

def self_attention(Q, K, V):
    d_k = Q.size(-1)
    scores = torch.matmul(Q, K.transpose(-2, -1)) / (d_k ** 0.5)
    attn = F.softmax(scores, dim=-1)
    return torch.matmul(attn, V)

这是一个简单的示例,展示了 Attention 的核心计算过程。