算法面试之transformer的Mask和并行性

1.Mask 掩码

由于在实现多头注意力时需要考虑到各种情况下的掩码,因此在这里需要先对这部分内容进行介绍。在Transformer中,主要有两个地方会用到掩码这一机制。
第1个地方就是Attention Mask,用于在训练过程中解码的时候掩盖掉当前时刻之后的信息;
第2个地方便是对一个batch中不同长度的序列在Padding到相同长度后,对Padding部分的信息进行掩盖。
padding mask 在所有的 scaled dot-product attention 里面都需要用到,而 sequence mask 只有在 decoder 的 self-attention 里面用到。

1.1 Attention Mask

算法面试之transformer的Mask和并行性_第1张图片
在训练过程中对于每一个样本来说都需要这样一个对称矩阵来掩盖掉当前时刻之后所有位置的信息
也就是对于一个序列,在 time_step 为 t 的时刻,我们的解码输出应该只能依赖于 t 时刻之前的输出,而不能依赖 t 之后的输出
产生一个下三角矩阵。把这个矩阵作用在每一个序列上

1.2 Padding Mask

由于在网络的训练过程中同一个batch会包含有多个文本序列,而不同的序列长度并不一致。因此在数据集的生成过程中,就需要将同一个batch中的序列Padding到相同的长度。但是,这样就会导致在注意力的计算过程中会考虑到Padding位置上的信息。
算法面试之transformer的Mask和并行性_第2张图片
通过在生成训练集的过程中记录下每个样本Padding的实际位置;然后再将注意力权重矩阵中对应位置的权重替换成负无穷,经softmax操作后对应Padding位置上的权重就变成了0,从而达到了忽略Padding位置信息的目的。

2.并行性

6个 encoder 之间是串行,每个 encoder 中的两个子模块之间是串行,子模块自身是可以并行的,注意力层和前馈神经层这两个子模块单独来看都是可以并行的,不同单词之间是没有依赖关系的
https://zhuanlan.zhihu.com/p/157884112?from_voters_page=true

上一篇:算法面试之transformer的Attention和多头自注意力机制
下一篇:算法面试之Embedding

注:本专题大部分内容来自于总结,若有侵权请联系删除。

你可能感兴趣的:(算法面试,transformer,自然语言处理,nlp)