注意力机制让模型动态关注输入的不同部分,Self-attention 处理序列内部关系,Cross-attention 处理跨序列交互。
Self-attention(自注意力)
同一序列内部元素间的信息交互,每个元素根据与其他元素的关系更新表示。
计算步骤:
- 线性变换得到 Q、K、V
- 计算注意力权重:$\text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)$
- 加权求和:输出 = 权重 × V
作用:捕捉全局依赖、支持并行计算
Cross-attention(交叉注意力)
两个不同序列间的信息交互,查询序列通过 Q 向键值序列寻求信息。
应用:
- 多模态任务(图像-文本)
- Encoder-Decoder 架构(机器翻译)
注意力机制对比
| 类型 | 描述 | 应用场景 |
|---|---|---|
| Self-attention | 同一序列内部交互 | Transformer、BERT |
| Cross-attention | 跨序列交互 | 多模态、Encoder-Decoder |
| Multi-Head | 多头并行捕捉不同子空间 | 所有 Transformer |
| Additive | 前馈网络计算权重 | Bahdanau Attention |
| Hard | 离散选择,不可微 | 图像标注 |
| Soft | 连续加权,可微 | NMT、图像描述 |
| Global | 与所有键交互 | 短序列任务 |
| Local | 局部窗口内交互 | 长序列任务 |
| Sparse | 选择部分键值对 | 超长序列 |
Scaled Dot-Product Attention
$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V$$
$\sqrt{d_k}$ 防止点积过大导致梯度消失。
张芷铭的个人博客
Comments