• 19 Transformer 解码器的两个为什么(为什么做掩码、为什么用编码器解码器注意力)



    Transformer 的编码器和解码器

    img

    问题一:为什么 Decoder 需要做 Mask

    机器翻译:源语句(我爱中国),目标语句(I love China)

    为了解决训练阶段和测试阶段的 gap(不匹配)

    训练阶段:解码器会有输入,这个输入是目标语句,就是 I love China,通过已经生成的词,去让解码器更好的生成(每一次都会把所有信息告诉解码器)

    测试阶段:解码器也会有输入,但是此时,测试的时候是不知道目标语句是什么的,这个时候,你每生成一个词,就会有多一个词放入目标语句中,每次生成的时候,都是已经生成的词(测试阶段只会把已经生成的词告诉解码器)

    为了匹配,为了解决这个 gap,masked Self-Attention 就登场了,我在训练阶段,我就做一个 masked,当你生成第一个词,我啥也不告诉你,当你生成第二个词,我告诉第一个词

    img

    问题二:为什么 Encoder 给予 Decoders 的是 K、V 矩阵

    Q来源解码器,K=V来源于编码器

    Q是查询变量,Q 是已经生成的词

    K=V 是源语句

    当我们生成这个词的时候,通过已经生成的词和源语句做自注意力,就是确定源语句中哪些词对接下来的词的生成更有作用,首先他就能找到当前生成词

    我爱中国

    通过部分(生成的词)去全部(源语句)的里面挑重点

    Q 是源语句,K,V 是已经生成的词,源语句去已经生成的词里找重点 ,找信息,已经生成的词里面压根就没有下一个词

    解决了以前的 seq2seq 框架的问题

    lstm 做编码器(得到词向量 C),再用 lstm 做解码器做生成

    用这种方法去生成词,每一次生成词,都是通过 C 的全部信息去生成

    很多信息对于当前生成词而言都是没有意义的

    用 Pytorch 去构建 Transformer 的源码()

  • 相关阅读:
    Day9
    Day9
    Day9
    洛谷 P1896 [SCOI2005]互不侵犯
    洛谷 P1879 [USACO06NOV]玉米田Corn Fields
    Day9
    最大m段子段和 Day9
    jsp内置对象-application对象
    jsp内置对象-session对象
    jsp内置对象-response对象
  • 原文地址:https://www.cnblogs.com/nickchen121/p/16470765.html
Copyright © 2020-2023  润新知