多头注意力机制(Multi-Head Attention)是Transformer架构的关键组成部分,它增强了模型的表示能力,使其能够同时关注序列中的不同位置。多头注意力机制通过将输入分成多个子空间并在这些子空间上并行计算注意力,从而捕捉到不同的上下文信息。
多头注意力机制的步骤
1. 线性变换和分头:
输入张量 X(形状为 (batch_size, seq_len, d_model)
)通过三个线性层转换为查询(Query),键(Key),和值(Value)矩阵。
这些线性变换分别使用参数矩阵,
,
,将输入转换成 Q, K, V。
然后,将 Q, K, V 分成 h个头,每个头的维度为 。
- 这里的
split
表示将 Q, K, V 沿最后一个维度分割成 h份,每份的维度是。
2. 计算注意力:
- 对于每个头,计算注意力分数。注意力分数的计算方式为:
- 其中,
计算了查询和键的点积,然后除以
进行缩放,最后应用 softmax 函数得到注意力权重。
3. 连接和线性变换:
- 将每个头的输出连接起来,形成一个新的矩阵(形状为
(batch_size, seq_len, d_model)
)。
- 然后,通过一个线性层将连接后的矩阵变换回
维度。
- 公式:
- 其中
是输出线性层的权重矩阵。
多头注意力机制通过在不同子空间中并行计算注意力,捕捉到序列中不同位置的多样化信息,从而增强了模型的表示能力。