文章目录
多头自注意力机制(Multi-Head Self-Attention)
多头自注意力机制是 Transformer 中最核心的部分,它使得模型能够同时从不同的子空间捕捉输入序列的不同上下文信息,从而更好地理解和处理复杂的关系。这个机制是 Transformer 相比传统 RNN 和 LSTM 模型最大的创新之一。
核心概念
自注意力机制的核心思想是:对于输入的每一个词,我们都计算它与其他所有词之间的关系,并用这些关系加权来更新词的表示。
1. 自注意力机制(Self-Attention)
在自注意力机制中,我们会计算每个单词对其他所有单词的“注意力”分数,然后根据这些分数加权所有单词的表示,得到每个单词的上下文相关表示。
计算步骤:
- 对输入的每个单词生成三个向量:查询(Query)、键(Key)和值(Value)。
- 计算查询和键之间的相似度(通常是点积),用来衡量一个单词对其他单词的“关注”程度。
- 将这些相似度值进行softmax操作,得到每个单词对其他单词的注意力权重。
- 使用这些注意力权重对值(Value)进行加权求和,从而得到加权后的输出表示。
公式:
Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dkQKT)V
其中:
- Q Q Q:查询向量(Query)
- K K K:键向量(Key)
- V V V:值向量(Value)
- d k d_k dk:向量的维度,用于缩放相似度(防止值过大)
解释:
- 通过计算 查询(Q) 和 键(K) 之间的相似度,得到了每个词对其他词的关注度。
- softmax 操作使得关注度的值变得更易于解释,变成了概率分布。
- 最终将这些权重应用到 值(V) 上,得到加权后的输出。
2. 多头机制(Multi-Head Attention)
多头自注意力机制 进一步将多个不同的自注意力机制并行化,每个注意力头关注输入的不同方面。通过多头机制,模型能够从多个子空间中学习不同的上下文关系,从而捕捉到更多的信息。
步骤:
- 输入的查询(Q)、键(K)、值(V)分别通过多个不同的线性变换,得到多个“头”。
- 每个头都有自己的自注意力计算,得到多个输出。
- 最后将多个头的输出拼接起来,并通过一个线性变换,得到最终的输出表示。
公式:
Multi-Head Attention ( Q , K , V ) = Concat ( head 1 , head 2 , … , head h ) W O \text{Multi-Head Attention}(Q, K, V) = \text{Concat}(\text{head}_1, \text{head}_2, \dots, \text{head}_h) W^O Multi-Head Attention(Q,K,V)=Concat(head1,head2,…,headh)WO
其中:
- head i = Attention ( Q W i Q , K W i K , V W i V ) \text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V)