🎙️ 语音朗读
当前: 晓晓 (温柔女声)
前言
注意力机制(Attention Mechanism)是深度学习领域的重大突破之一,尤其在Transformer架构中发挥着核心作用。本文将详细解析注意力机制的数学原理和实现细节。
注意力机制的起源
注意力机制最早在视觉领域提出,后来被引入到序列模型中。2017年的《Attention Is All You Need》将其发扬光大,成为现代深度学习的基石。
注意力机制的数学原理
Scaled Dot-Product Attention
标准的注意力机制定义为:
1 | Attention(Q, K, V) = softmax(QK^T / √d_k) V |
其中:
- Q(Query):查询向量
- K(Key):键向量
- V(Value):值向量
- d_k:键向量的维度
为什么需要缩放因子?
除以√d_k是为了防止点积过大导致softmax进入饱和区域:
1 | import torch |
多头注意力机制
多头注意力允许模型同时关注不同位置的不同子空间:
1 | class MultiHeadAttention(nn.Module): |
掩码机制
填充掩码(Padding Mask)
处理不同长度的序列:
1 | def create_padding_mask(seq, pad_idx=0): |
因果掩码(Causal Mask)
防止看到未来信息:
1 | def create_causal_mask(seq_len): |
注意力可视化
1 | import matplotlib.pyplot as plt |
注意力机制的类型
1. 自注意力(Self-Attention)
Query、Key、Value来自同一输入:
1 | # 自注意力 |
2. 编码器-解码器注意力(Cross Attention)
Query来自解码器,Key/Value来自编码器:
1 | # 交叉注意力 |
3. 双向注意力
BERT使用的双向注意力:
1 | # 双向注意力(无因果掩码) |
实际应用
注意力机制广泛应用于:
- 机器翻译:对齐源语言和目标语言
- 图像描述:关注图像的相关区域
- 语音识别:对齐音频和文本
- 推荐系统:建模用户-物品交互
总结
注意力机制通过动态加权聚合信息,解决了长距离依赖问题,是Transformer成功的关键。其变体(多头注意力、交叉注意力等)为各种深度学习任务提供了强大的建模能力。