自然语言处理---Transformer机制详解之Multi head Attention详解

1 采用Multi-head Attention的原因

  • 原始论文中提到进行Multi-head Attention的原因是将模型分为多个头, 可以形成多个子空间, 让模型去关注不同方面的信息, 最后再将各个方面的信息综合起来得到更好的效果.
  • 多个头进行attention计算最后再综合起来, 类似于CNN中采用多个卷积核的作用, 不同的卷积核提取不同的特征, 关注不同的部分, 最后再进行融合.
  • 直观上讲, 多头注意力有助于神经网络捕捉到更丰富的特征信息.

2 Multi-head Attention的计算方式

  • Multi-head Attention和单一head的Attention唯一的区别就在于, 其对特征张量的最后一个维度进行了分割, 一般是对词嵌入的embedding_dim=512进行切割成head=8, 这样每一个head的嵌入维度就是512/8=64, 后续的Attention计算公式完全一致, 只不过是在64这个维度上进行一系列的矩阵运算而已.
  • 在head=8个头上分别进行注意力规则的运算后, 简单采用拼接concat的方式对结果张量进行融合就得到了Multi-head Attention的计算结果.
  • Multi-Head Attention是利用多个查询,来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分,然后再进行拼接。

3 Multi-Head Attention的作用

  • 多头注意力的机制进一步细化了注意力层,通过以下两种方式提高了注意力层的性能:
    • 扩展了模型专注于不同位置的能力。当多头注意力模型和自注意力机制集合的时候,比如翻译“动物没有过马路,因为它太累了”这样的句子的时候,想知道“它”指的是哪个词,如果能分析出来代表动物,就很有用。
    • 为注意力层提供了多个“表示子空间”。对于多头注意力,不仅有一个而且还有多组Query/Key/Value权重矩阵,这些权重矩阵集合中的每一个都是随机初始化的。然后,在训练之后,每组用于将输入Embedding投影到不同的表示子空间中。多个head学习到的Attention侧重点可能略有不同,这样给了模型更大的容量。自然语言处理---Transformer机制详解之Multi head Attention详解_第1张图片

4 小结

  • Transformer架构采用Multi-head Attention的原因.
    • 将模型划分为多个头, 分别进行Attention计算, 可以形成多个子空间, 让模型去关注不同方面的信息特征, 更好的提升模型的效果.
    • 多头注意力有助于神经网络捕捉到更丰富的特征信息.
  • Multi-head Attention的计算方式.
    • 对特征张量的最后一个维度进行了分割, 一般是对词嵌入的维度embedding_dim进行切割, 切割后的计算规则和单一head完全一致.
    • 在不同的head上应用了注意力计算规则后, 得到的结果张量直接采用拼接concat的方式进行融合, 就得到了Multi-head Attention的结果张量.
  • Multi-Head Attention的作用
    • 扩展了模型专注于不同位置的能力
    • 为注意力层提供了多个“表示子空间”

你可能感兴趣的:(自然语言处理,自然语言处理,transformer,人工智能)