Transformer (为什么用掩码,为什么用编码器)
2024.3.19 Transformer (为什么用掩码,为什么用编码器)
1.为什么Decoder需要Mask
机器翻译:源语句(我爱中国),目标语句(I Love China)
为了解决训练阶段和测试阶段的gap(不匹配)
训练阶段:解码器会有输入,这个输入是目标语句,就是I Love China,通过已经生成的词去让解码器更好的生成(每一次都会把所有信息告诉解码器)
测试阶段:解码器也会有输入,但是此时,测试的时候是不知道目标语句是什么的,这个时候每生成一个词,就会多一个词放入目标语句中,每次生成的时候,都是已经生成的词(测试阶段只会把已经生成的词告诉解码器)
为了解决这个gap,Masked Self-Attention就登场了,在训练阶段,就做Masked
为什么Encoder给予Decoders的是K、V矩阵
Q来源于解码器,K=V来源于编码器
Q是查询变量,Q是已经生成的词
K=V是源语句
当我们生成这个词的时候,通过已经生成的词和源语句做自注意力,就是确定源语句中哪些词对接下来的词的生成更有作用,首先她就能找到当前生成的词
我 爱 ----->中国
通过部分(生成的词)去全部(源语句)里面挑重点
若Q是源语句,K,V是已经生成的词,源语句去已经生成的的词里找重点,找信息,已经生成的词里面没有下一个词
解决了以前的seq2seq框架的问题
Lstm做编辑器(得到词向量C),再用Lstm做解码器做生成
用这种方法去生成词,每一次生成词,都是通过C的全部信息去生成
很多信息对于当前生成词而言都是没有意义的
浙公网安备 33010602011771号