• Attention & Transformer


    Attention & Transformer

    seq2seq; attention; self-attention; transformer;

    1 注意力机制在NLP上的发展

    1. Seq2Seq,Encoder,Decoder

      image-20200915094229730
    2. 引入Attention,Decoder上对输入的各个词施加不同的注意力 https://wx1.sbimg.cn/2020/09/15/9FZGo.png

      image-20200915093758556
    3. Self-attention,Transformer,完全基于自注意力机制

      image-20200915094135383
    4. Bert,双向Transformer,mask

    5. XLNet,自回归语言模型,自动编码语言模型,摒弃遮盖

    2 注意力机制

    以机器翻译为例;Seq2Seq架构;

    2.1 RNN + RNN

    1. Encoder处理输入序列,得到上下文CONTEXT(一个向量,代表源文信息);Decoder处理CONTEXT逐项生成输出序列。

    2. RNN在每个时间步接收两个输入

      • 隐状态:上一个时间步传递来的;Decoder的初始隐状态为编码阶段的最后一个隐状态
      • 词向量输入:Encoder为输入序列的对应位置的词向量;Decoder为上一个时间步的输出(第一个时间步的输入为Start)
    3. 上下文向量定长,模型难处理长句

    2.2 RNN+RNN+Attention

    1. Encoder 向 Decoder 传递更多的数据,不止传递编码阶段的最后一个隐藏状态,而是传递所有隐藏状态。

    2. Decoder增加额外步骤,根据隐状态之间的相关性对不同的隐藏状态打分

      • 为每个编码器隐状态打分;softmax加权;求和

      • 打分后的Encoder隐状态加权后与当前Decoder隐状态结合,作为当前时间步的隐状态输入

      • Decode 过程中不同的步骤回关注于不同 Encoder 的隐状态

        image-20200915101128928

    3 Transformer

    Attention Is All You Need; self-attention;

    3.1 概述

    • 仍然由encoder和Decoder组成,完全基于自注意力机制,不使用RNN。
    • 编码器和解码器都是一组编码/解码组件组成,原论文使用了6个
    image-20200915132658479

    3.2 Encoder 解码器

    • 编码器由两个子层:自注意力层(见3.3节)、全连接神经网络
    image-20200915133309916
    • 每个编码器组件结构相同,但不共享权重。

    3.3 自注意力机制

    自注意力机制全景图

    1. 词嵌入 word embedding

      • 发生在最底部的编码器;输入数据[batch_size, word_embedding_size, seq_len];完成嵌入后作为输入经过编码器;每个位置的词并行经过编码器,速度比RNN快。
      image-20200915134438789
      • 并行运算未考虑到顺序关系,通过位置编码(positional encoding)使词嵌入包含位置信息。

        image-20200915141816592
      • 位置编码方式:sin、cos

    2. 自注意力计算

      1. 三个参数W((W^Q), (W^K),(W^V))与输入的向量相乘得到:查询向量q,键向量k,值向量v;新向量维度小于嵌入向量的维数

      2. 对于一个输入向量,将其q向量与其他词的k向量相乘计算分数;分数高则关系密切

      3. 将分数缩放(避免梯度弥散);通过softmax操作转化为概率。

      4. 将每个词的v向量用上一步的softmax概率加权求和;得到该输入向量的 z值

        image-20200915135415802
      5. 234步骤 以矩阵的形式,对多个输入向量并行求z,得到Z矩阵

        image-20200915140326166
    3. 多头机制

      • 为关注曾提供了多个表示子空间;拓展了模型专注于不同层面的能力

      • 有多组qkv的权重矩阵;e.g. 使用8个关注头则每个编码器解码器会得到8组Z

      • 将所有的Z连接起来和一个权重矩阵(W^O)相乘,得到捕捉了所有注意力头的Z矩阵,再将其输入到接下来的全连接层。

    3.4 Decoder 解码器

    1. 结构:自注意力,encoder-decoder attention,全连接层

    2. 自注意力层:仅对输出序列中之前的位置;在softmax之前,把将来生成的位置设置为-inf

    3. encoder-decoder attention

      • 在自注意力层、全连接神经网络之间加入了一个encoder和decoder之间的注意力层,类似seq2seqRNN模型中的注意力。

      • 最后一个Encoder的输出,转换为K和V的集合,每个decoder在其encoder-decoder attention层中使用这些KV。

      • 工作方式与多头注意力类似,区别在于是从Encoder Stack的输出中获取KV。

    4. 经过N层decoder,最终的输出通过线性层和softmax层得到输出的词

    3.5 细节补充

    • 残差和归一化 解码器编码器都有

    • image-20200915144157226
    原文发表于快刀切草莓君的个人网站 http://zrawberry.com
  • 相关阅读:
    分享一个详情页
    ES6初探,变量的声明
    ES6初探,什么是ES6
    提问回顾
    个人阅读&个人总结
    结对项目-数独程序扩展
    个人作业Week3-案例分析
    个人作业Week2-代码复审
    个人作业1
    【个人项目】数独
  • 原文地址:https://www.cnblogs.com/Zaaachary/p/Attention_Transformer.html
Copyright © 2020-2023  润新知