这个attention是有mask的,因为解码的时候,每个token只能看到它自己,还有它前面的token。所以这个mask是一个对角线的形状: 2. src_attn:输入一个start token,然后变成q。k和v分别来自于encoder编码的embedding(memory,也就是encoder的输出向量)。这里的src_mask是一个全为1的mask(和None一样)。所有就是解码输入的to...
因为这个attention矩阵是句子A和句子B造的attention矩阵,用 attetion矩阵 再去 矩阵乘 句子A,则是个完整的attention效果, 也就是attention矩阵一行里如果mask掉一部分词,就等于缺少那部分词的信息。(目前理解)
其作用是用于计算loss并且反向传播。而当预测时,模型已经训练完了,参数已固定,不再计算loss以及反向传...
第一层decoder的qkv全是shifted ground truth,但是它们都会加mask屏蔽未来的输入信息,所以实际上decoder...
Decoder相比于encoder额外增加了cross-attention的模块,并且在自注意力机制中加入了mask,防止当前位置看到未来的信息。 模型的具体组成如图1所示。下面具体介绍几个重要的模块: Attention 模块: Transformer采用了Query-Key-Value(QKV) 组成的注意力机制,其计算公式如下所示。为了缓解softmax 在计算时产生的梯度消失问...
你观察训练时的decoder就知道了,self attention在decoder里qkv全来自上一层(不是上一时刻,上一时刻就变rnn了)decoder状态,第一层decoder的qkv全是shifted ground truth,但是它们都会加mask屏蔽未来的输入信息,所以实际上decoder会被训练为任意时刻只接受之前时刻的信息,其他时刻无论通过self attention获得多大的权重,最...
从源码来看:训练的时候是用的向后移一位的ground truth。测试的时候,是先生成第一个位置的输出,然后...
只不过Transformer的Encoder是6个Block,每个block都有一个self-attention和一个FFN;Decoder也有6个block...
可以看一下The Illustrated Transformer中The Decoder Side的部分,主要看那两个动图
在模型训练的时候,虽然有decode端的输入,但是decode端的输入是有mask的,也就是说,虽然decode端输入了...