自注意力机制原理
时间: 2025-03-30 22:08:40 浏览: 39
### 自注意力机制的工作原理
自注意力机制(Self-Attention Mechanism)是一种用于捕获序列数据中长距离依赖关系的技术,在深度学习模型中广泛应用。它通过计算输入序列中的每一对位置之间的关联程度来动态调整权重分配,从而增强模型对重要信息的关注能力。
#### 计算过程
在自注意力机制中,输入向量被线性变换为三个不同的表示形式:查询(Query)、键(Key)以及值(Value)。这些表示形式分别由可训练参数矩阵 \( W_Q \), \( W_K \),和 \( W_V \) 进行映射得到[^2]:
\[ Q = XW_Q, K = XW_K, V = XW_V \]
其中 \( X \) 是输入张量。接着,通过点积操作计算 Query 和 Key 的相似度得分,并将其除以 \( \sqrt{d_k} \) (\( d_k \) 表示 Key 向量的维度),随后应用 Softmax 函数获得归一化的权重分布:
\[ Attention(Q,K,V) = softmax\left(\frac{QK^T}{\sqrt{d_k}}\right)V \]
这一公式定义了标准的缩放点积注意力机制(Scaled Dot-Product Attention),能够高效处理大规模的数据集并提升模型性能。
#### 多头注意力结构
为了进一步提高表达能力,多头注意力(Multi-head Attention)引入多个独立的注意力子层平行工作。每个子层执行上述相同的注意计算流程,但拥有各自独立的学习参数集合。最终将各头部的结果拼接起来并通过另一个全连接网络投影回原始空间尺寸完成整个模块的功能实现:
```python
class MultiHeadedAttention(nn.Module):
def __init__(self, h, d_model, dropout=0.1):
super(MultiHeadedAttention, self).__init__()
assert d_model % h == 0
self.d_k = d_model // h
self.h = h
self.linears = clones(nn.Linear(d_model, d_model), 4)
self.attn = None
self.dropout = nn.Dropout(p=dropout)
def forward(self, query, key, value, mask=None):
...
```
以上代码片段展示了如何构建一个多头注意力类实例化对象的过程。
阅读全文
相关推荐


















