一、点积注意力机制和加性注意力机制
1. 点积注意力机制(Dot-Product Attention)
原理
-
通过计算**查询向量(Query)和键向量(Key)**的点积(内积)得到注意力分数:
Attention(Q,K,V)=softmax(QK⊤dk)VAttention(Q,K,V)=softmax(dkQK⊤)V-
dkdk 是键向量的维度。
-
缩放因子 1dkdk1:防止点积值过大导致梯度消失。
-
特点
-
高效:点积计算复杂度为 O(n2d)O(n2d)(nn 是序列长度,dd 是维度),适合大规模并行计算。
-
问题:当 dkdk 较大时,点积值的方差会随维度增大而增加,导致 softmax 的梯度极小(接近 one-hot 分布)。
-
解决方案:引入缩放因子 dkdk,平衡点积值的量级。
应用场景
-
Transformer 的默认注意力机制(缩放点积注意力)。
-
适用于高并行化任务(如机器翻译、文本生成)。
2. 加性注意力机制(Additive Attention)
原理
-
通过一个可学习的神经网络计算查询和键的相似度:
Attention(Q,K,V)=softmax(MLP(Q⊕K))VAttention(Q,K,V)=softmax(MLP(Q⊕K))V-
⊕⊕ 表示拼接(concatenation)。
-
MLP 通常为单层全连接网络 + 激活函数(如 tanhtanh)。
-
特点
-
灵活:通过神经网络学习复杂的相似度模式。
-
稳定性:对高维 dkdk 不敏感,避免点积值过大问题。
-
缺点:计算复杂度更高(需训练额外参数),并行效率较低。
应用场景
-
早期序列到序列模型(如 RNN + 注意力)。
-
需要复杂交互建模的任务(如某些对话系统)。
3. 关键对比
特性 | 点积注意力 | 加性注意力 |
---|---|---|
计算效率 | 高(纯矩阵运算) | 低(需训练神经网络) |
参数复杂度 | 无额外参数 | 需训练 MLP 参数 |
对高维 dkdk 的鲁棒性 | 需缩放因子,否则梯度消失 | 天然稳定 |
表达能力 | 线性相似度 | 非线性相似度(更灵活) |
4. 选择建议
-
优先点积注意力:
-
需要高效计算(如 Transformer)。
-
输入维度 dkdk 适中或已应用缩放因子。
-
-
考虑加性注意力:
-
输入维度 dkdk 极高且无法有效缩放。
-
任务需要复杂非线性交互建模。
-
5. 示例说明
-
点积注意力的问题:
当 dk=1000dk=1000 时,点积值的方差可能极大(如均值为 0,方差为 1000),softmax 后几乎只有一个位置有显著权重,导致梯度消失。 -
加性注意力的优势:
通过 MLP 的 tanhtanh 函数将相似度限制在 [−1,1][−1,1] 范围,避免量级爆炸。
参考文献
-
点积注意力:Vaswani et al. (2017), Attention Is All You Need(Transformer 原始论文)。
-
加性注意力:Bahdanau et al. (2015), Neural Machine Translation by Jointly Learning to Align and Translate(早期注意力机制)。
二、为什么dk值越大,会引起提取消失
1. 数学背景:点积的方差随维度增长
假设查询向量 Q 和键向量 K的每个元素是独立同分布的随机变量,均值为 0,方差为 1(例如从标准正态分布中采样)。
2. Softmax 函数对极端输入值的敏感度
Softmax 函数定义为:
3. 梯度消失的原因
Softmax 的梯度计算公式为:
结果:梯度几乎全部消失,模型无法通过反向传播更新参数。
4. 缩放因子 dk的作用
5. 实际影响
当未使用缩放因子且 dk=1000 时:
-
注意力权重接近 one-hot:模型只能关注一个位置,丢失上下文信息。
-
梯度消失:参数更新停滞,模型无法学习有效的注意力模式。
-
训练失败:损失函数不再下降,模型性能严重受限。
总结
-
问题根源:高维点积导致注意力分数方差过大,softmax 饱和。
-
解决方案:通过 dk 缩放点积,控制方差为 1。
-
直观理解:将点积的“温度”(数值范围)降低,使 softmax 保持合理的概率分布。
这一机制是 Transformer 成功处理高维向量的关键设计之一。