大家好,今天和各位分享一下 Transformer 中的 Decoder 部分涉及到的知识点:计算 self-attention 时用到的两种 mask。
本文是对前两篇文章的补充,强烈建议大家先看一下:
1.《Transformer代码复现》:https://blog.youkuaiyun.com/dgvv4/article/details/125491693
2.《Transformer中的Encoder机制》:https://blog.youkuaiyun.com/dgvv4/article/details/125507206
1. Decoder 的 self-attention 中的 mask
本节介绍的 mask 对应模型结构图中的位置:
如下图,decoder 的 self-attention 中使用的 mask 是一个下三角矩阵,当 decoder 预测第一个单词时,给它的输入是一个特殊字符 x1,当 decoder 预测第二个位置时,给它的输入是特殊字符 x1 和目标序列的第一个单词 x2
下面举一个例子:
encoder的输入: i love you
decoder的输入: /f 我 爱 你
此时的 decoder 是由4个词组成的向量,Mask 是一个 4*4 大小的矩阵
当 decoder 预测第一个单词 '我' 时, decoder 的输入是一个特殊字符 '/f',mask为[1,0,0,0]
当 decoder 预测第二个单词 '爱' 时, decoder 的输入是一个特殊字符 '/f' 和第一个单词 '我',mask为[1,1,0,0]