多头注意力机制(Multi-Head Attention)

多头注意力机制(Multi-Head Attention)是Transformer架构的关键组成部分,它增强了模型的表示能力,使其能够同时关注序列中的不同位置。多头注意力机制通过将输入分成多个子空间并在这些子空间上并行计算注意力,从而捕捉到不同的上下文信息。

多头注意力机制的步骤

1. 线性变换和分头

输入张量 X(形状为 (batch_size, seq_len, d_model))通过三个线性层转换为查询(Query),键(Key),和值(Value)矩阵。

这些线性变换分别使用参数矩阵W_Q,W_KW_V​,将输入转换成 Q, K, V。

Q = XW_Q, \quad K = XW_K, \quad V = XW_V

然后,将 Q, K, V 分成 h个头,每个头的维度为 d_k = d_{model} / h

Q_i, K_i, V_i = \text{split}(Q, K, V, h)

  • 这里的 split 表示将 Q, K, V 沿最后一个维度分割成 h份,每份的维度是 d_k

2. 计算注意力

  • 对于每个头,计算注意力分数。注意力分数的计算方式为:

\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

\text{Attention}(Q_i, K_i, V_i) = \text{softmax}\left(\frac{Q_i K_i^T}{\sqrt{d_k}}\right)V_i

  • 其中, \frac{Q_i K_i^T}{\sqrt{d_k}}计算了查询和键的点积,然后除以\sqrt{d_k}进行缩放,最后应用 softmax 函数得到注意力权重。

3. 连接和线性变换

  • 将每个头的输出连接起来,形成一个新的矩阵(形状为 (batch_size, seq_len, d_model))。

\text{Concat}(head_1, \dots, head_h)

  • 然后,通过一个线性层将连接后的矩阵变换回 d_{model}维度。
  • 公式: \text{MultiHead}(Q, K, V) = \text{Concat}(head_1, \dots, head_h)W_O
  • 其中W_O是输出线性层的权重矩阵。

多头注意力机制通过在不同子空间中并行计算注意力,捕捉到序列中不同位置的多样化信息,从而增强了模型的表示能力。

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值