当前位置:   article > 正文

Transformer的前世今生 day10(Transformer编码器、解码器)

Transformer的前世今生 day10(Transformer编码器、解码器)

前情提要

ResNet(残差网络)

  • 由于我们加更多层,更复杂的模型并不总会改进精度,可能会让模型与真实值越来越远,如下:
    在这里插入图片描述
  • 我们想要实现,加上一个层把并不会让模型变复杂,即没有它也没关系,于是我们将残差块加入快速通道来实现,如下:
    • g(x)作为激活函数的输入,x作为模型的输入,f(x)为加上的层的输出,那么原本g(x) = f(x)
    • 加入残差块x后,g(x) = f(x) + x,表明即使f(x)没有得出很好的结果,那我也可以直接用x来作为激活函数的输入,绕过f(x)
      在这里插入图片描述
  • 残差块使很深的网络更加容易训练,因为我们总可以走快速通道让模型忽略掉某些层,即我们可以先训练容易的层

Transformer编码器

  • 编码器包括两个子层:Self-Attention、Feed Forward,缩略图如下:
    在这里插入图片描述
  • 每一个子层的传输过程中都会经过 残差网络 + 归一化,编码器详细图如下:
    在这里插入图片描述
  • 流程为:
    1. 从Thinking得到绿色的x1(通过one-hot、Word2Vec来得到简易版的词向量),
    2. 由于下一步的Self-Attention没有位置关系,所以要先叠加一个位置编码得到黄色的x1,
    3. 输入Self-Attention中,让 x1 与 x1、x2拼接起来的一句话做注意力,得到z1(x1做完自注意力后的词向量,表征的仍然是Thinking,z1拥有了位置特征、句法特征、语义特征),
    4. 经过残差网络+归一化,(残差网络可以避免梯度消失,当w3(w2(w1x+b1)+b2)+b3,如果w1、w2、w3特别小,那么w3(w2(w1x+b1)+b2) = 0,x就消失了,而经过一个残差网络后,w3(w2(w1x+b1)+b2)+b3+x,在最末尾加上x,就算前面的x消失了,还有最后一个x兜底。归一化可以避免梯度爆炸,类似softmax之前需要除一个数,防止结果不合理),得到了深粉色的z1
    5. 经过Feed Forward(前馈传播,通过Feed Forward中的激活函数做非线性变换),由于之前的每一步都在做线性变换(wx+b),而线性变换的叠加永远是线性变换,如果不加非线性变换,那么模型拟合不了复杂函数,
    6. 再经过残差网络+归一化,得到r1(Thinking的新的词向量)
  • 综上:Transformer编码器最终得到了一个更加优秀的词向量

Transformer解码器

  • 解码器会接收编码器生成的词向量,然后通过这个词向量去生成翻译的结果,缩略图如下:
    在这里插入图片描述
  • 解码器层的Self-Attention是masked Self-Attention,因为在训练阶段,我们知道真实的完整结果是什么,但是在测试阶段,我们的结果是一个一个生成的,如果不做masked,那么测试和训练阶段就不匹配,如下:
  • Encode-Decoder Attention是为了解决Self-Attention只能处理Q、K、V同源,而编码器-解码器注意力的Q、K、V不同源,且编码器提供K、V,解码器提供了Q,如下:
    在这里插入图片描述
  • 由于最后的Feed Forward只是生成词向量,所以还需要Linear层来转换词向量为词典维度,最后通过softmax层来得到最大概率的词
    在这里插入图片描述
    在这里插入图片描述

参考文献

  1. 16 Transformer 的编码器(Encodes)
  2. 17 Transformer 的解码器(Decoders)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/339379
推荐阅读
相关标签
  

闽ICP备14008679号