Transformer

介绍Transformer的基本网络结构

Posted by Leo on 2023-07-24
Estimated Reading Time 2 Minutes
Words 714 In Total

Transformer概述

  • 核心是seq2seq模型,能处理很多的问题;一般的seq2seq模型分成两个部分:encoderdecoder(编码器-解码器架构),encoder负责处理input sequence,把处理结果给decoder,由decoder决定输出什么样的sequence

    image-20230724190057869
  • encoder是Transformer的核心,将特征更好地提取出来,decoder在具体的任务中使用

  • encoder:比如输入一个由$n$个词组成的句子:$(x_{1},x_{2},…,x_{n})$,$x_{t}$是第t个字的向量形式,输出$(z_{1},z_{2},…,z_{n})$,其中$z_{t}$对应的是$x_{t}$的一个向量的表示,将原始输入变成机器学习可以理解的向量(即提取特征)

    transformer用的encoder是self-attention

    每一个encoder会分成很多个block,每一个block由很多层组成

    image-20230724191620332

    在真正的transformer中更加复杂,在加入positional encoding后,首先加入了残差连接(residual connection),再将输出结果做layer normalization,得到的输出才是全连接层的输入,再做一次residual和normalizaton得到最终block的输出,为了方便残差链接,限制每一层的输出维度为512

    (注:batch normalization是对一批样本的同一纬度特征做归一化;layer normalization是对单个样本的所有维度特征做归一化,对应这里是batch、sequence、feature三个维度,其中feature是一个词的向量表示(512),seq是你这一句话里有多少个词,batch是一共几句话,LN针对seq2seq这种每个batch的维度数量不一样的情况效果更好)

    image-20230724192419947

    最终的模型图:

    image-20230724192611448
  • decoder:介绍decoder中最常见的一种——Auto-regressive decoder(自回归)

    首先给decoder输入一个表示begin of sentence的特殊向量START,根据encoder给出的的输入向量输出第一个向量,做一个softmax,得到每一个汉字的概率(长度是汉字的数量),取最大值作为输出

    image-20230725105551614

    将第一个输出的向量作为第二个输出向量的输入向量(自回归,通过masked只能看到之前的输出),重复上面的步骤,依次得到最终的结果

    image-20230725105929978
    • 内部结构:

      image-20230725110844680

      去掉中间这一块和encoder几乎一样

      image-20230725110408862
      • Masked:在做self-attention时,只关注序列中当前元素左边的元素,因为右边的元素还未产生(encoder是并行,decoder是串行)

        image-20230725111426275
    • decoder如何决定输出sequence的长度:当输出END时,表示这个sequence要停止了

      image-20230725112211270
    • NAT(Non-autoregressive):

      image-20230725112839201
  • encoder和decoder是怎么连接的,也就是decoder怎么从encoder中挑出与我正要预测的向量关系最大的向量;上面被遮住的就是连接处,即Cross attention

    image-20230725113657182

    由decoder的attention产生$q$,由encoder的attention产生$k$和$v$,然后交叉做attention

    image-20230725114038510
  • Training:在decoder训练的时候,输入的是正确答案,计算交叉熵损失函数,是交叉熵最小(Teacher Forcing)

    tips:

    • Copy Mechanism

      image-20230725152216750

本着互联网开源的性质,欢迎分享这篇文章,以帮助到更多的人,谢谢!