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的全部信息去生成

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

posted @ 2024-03-19 16:34  adam12138  阅读(309)  评论(0)    收藏  举报