Attention注意力机制的公式解析
P.S. 关于Self-Attention(自注意力机制)的更详细信息,可以看我的这一篇文章:Self-Attention机制详解:Transformer的核心引擎。
一、基本形式
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d ) V Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d}})V Attention(Q,K,V)=softmax(dQKT)V
二、组成部分解释
-
输入参数:
- Q (Query): 查询矩阵
- K (Key): 键矩阵
- V (Value): 值矩阵
- d: 键向量的维度
-
计算步骤:
a. 计算注意力分数:
Q K T d \frac{QK^T}{\sqrt{d}} dQKT- 将Q与K的转置相乘
- 除以缩放因子 d \sqrt{d} d以防止梯度消失
b. 归一化:
s o f t m a x ( Q K T d ) softmax(\frac{QK^T}{\sqrt{d}}) softmax(dQKT)- 使用softmax函数将分数转换为概率分布(关于
softmax
函数的相关信息可以参见:Softmax 函数详解) - 确保所有权重和为1
c. 加权求和:
- 将归一化后的权重与V相乘
- 得到最终的注意力输出
三、作用机制
-
相关性计算:
- Q K T QK^T QKT 计算查询和键之间的相关性
- 高相关性会得到更大的权重
-
缩放处理:
- d \sqrt{d} d用于缩放点积结果
- 防止维度d较大时softmax函数梯度消失
-
权重分配:
- softmax确保权重为正且和为1
- 实现对不同位置信息的软性选择
四、应用价值
-
信息筛选:
- 自动识别重要信息
- 忽略不相关信息
-
长距离依赖:
- 捕捉序列中的长距离依赖关系
- 克服传统RNN的局限性
-
并行计算:
- 支持并行处理
- 提高计算效率