Transformer的前世今生 day07(Masked Self-Attention、Multi-Head Self-Attention)

Masked Self-Attention 掩码自注意力

  • 由于NLP中的生成模型,是一个一个的生成单词, 所以为了让自注意力也实现这个过程,就设计了掩码自注意力
    • 掩码:在自注意力机制中,每个输入位置都会与其他位置进行注意力计算,并计算出一个加权和。而掩码的作用是将不相关或无效的位置的注意力权重设置为0,从而将模型的关注点限定在有效的位置上。如:将未来位置的注意力权重被设置为0,以防止模型在生成当前位置时依赖未来的信息,从而达到生成模型,一个一个生成单词的效果
      在这里插入图片描述
  • 如果只是自注意力机制,那么模型会知道这句话完整的样子,但是掩码自注意力,模型是分批次得到这句话,最后一次才得到完整的一句话,概率分布如下:·
    在这里插入图片描述

Multi-Head Self-Attention

  • Self-Attention是Attention的一个具体做法,即规定Q、K、V同源。注意力机制的目的是为了得到一个比初始的词向量拥有更多信息的新词向量Z
  • Multi-Head Self-Attention的目的是为了得到一个比Z拥有更多信息的新Z’
  • 多头指多层、多个。多头的个数用h表示,一般h=8,通常我们使用的是8头自注意力,在此,我们将输入X分割为8块,经过一系列变换后,得到 Z 0 Z_0 Z0 - Z 7 Z_7 Z7 ,然后把 Z 0 Z_0 Z0 - Z 7 Z_7 Z7 拼接起来,做一次线性变换,改变维度,得到与输入词向量X相同维度的Z‘词向量,因为如果不进行线性变换,那么拼接之后的维度会非常巨大,而词向量维度不匹配会有很多问题
    在这里插入图片描述
  • 机器学习的本质:y = σ \sigma σ(wx+b),即用线性变换和非线性变换,把一个不合理的东西变得合理
  • 非线性变换的本质:改变空间上的位置坐标。由于任何一个点都可以在维度空间上找到,所以我们可以通过某个手段,让一个位置不合理的点,变得合理。
  • 词向量的本质:将独热编码(不合理),通过Word2Vec、ELMO、Attention、Multi-Head Attention来得到合理的点,如(11,222,33)
    Word2Vec、(15,3,2)ELMO、(124,2,32)Attention、(1231,3,23)Multi-Head Attention
  • Multi-Head Attention:将输入X分成8块,这样原先在一个位置上的不合理的X,去了空间上的8个位置,通过对8个点进行寻找合适的位置,从而可以找到更合适的位置。
    • 但是对于词向量来说,h的个数不是越大越好,如果h为100,那么可能其中有80多个是没用的,经过实验,8是比较好的个数
  • 以下为流程图:
    在这里插入图片描述
  • 给一句话,通过ELMO、Word2Vec、Attention等来获得输入词向量x,之后乘以8套 W Q W^Q WQ W K W^K WK W V W^V WV,得到8套 Q Q Q K K K V V V,每套 Q Q Q K K K V V V可以得到一个 Z Z Z,将8个 Z Z Z进行拼接,最后经过一个线性变换后得到与输入词向量相同维度的Z’
  • 通过8个位置来寻找合适的位置点,从而可以找到能表示更多信息,更合理的词向量
  • PS:交叉注意力:K和V近似相等,但是Q不和K、V同源

参考文献:

  1. 12 Masked Self-Attention(掩码自注意力机制)
  2. 13 Multi-Head Self-Attention(从空间角度解释为什么做多头)

相关推荐

  1. chatGPT前世今生

    2024-03-26 23:56:01       56 阅读
  2. WinForm前世今生

    2024-03-26 23:56:01       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 23:56:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 23:56:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 23:56:01       82 阅读
  4. Python语言-面向对象

    2024-03-26 23:56:01       91 阅读

热门阅读

  1. 2024.3.25力扣(1200-1400)刷题记录

    2024-03-26 23:56:01       35 阅读
  2. 力扣438---找到字符串中所有字母异位词

    2024-03-26 23:56:01       41 阅读
  3. 使用Spring ORM和MyBatis简化数据库访问

    2024-03-26 23:56:01       37 阅读
  4. 13、Spring CLI中的特殊命令

    2024-03-26 23:56:01       44 阅读
  5. LeetCode1047:删除字符串中的所有相邻重复项

    2024-03-26 23:56:01       44 阅读
  6. Python 命名规则

    2024-03-26 23:56:01       41 阅读
  7. __init__.py 的作用

    2024-03-26 23:56:01       43 阅读
  8. vue3之动态路由

    2024-03-26 23:56:01       35 阅读
  9. Python networkx库中,G.add_edge方法的原理和使用方法

    2024-03-26 23:56:01       37 阅读
  10. 【CSP试题回顾】201912-2-回收站选址(优化)

    2024-03-26 23:56:01       39 阅读
  11. My SQL 子查询

    2024-03-26 23:56:01       46 阅读
  12. MySQL写shell的问题

    2024-03-26 23:56:01       41 阅读