Transformer模型是什么?( 三 )


预测
可以在训练的过程中使用并且并行化训练,即将正确的单词序列 ( I have a cat) 和对应输出 (I have a cat ) 传递到。那么在预测第 i 个输出时,就要将第 i+1 之后的单词掩盖住,注意 Mask 操作是在 Self- 的之前使用的,下面用 0 1 2 3 4 5 分别表示 " I have a cat " 。
第一步:是的输入矩阵和Mask矩阵,输入矩阵包含 " I have a cat" (0, 1, 2, 3, 4) 五个单词的表示向量,Mask是一个 5×5 的矩阵 。在Mask可以发现单词 0 只能使用单词 0 的信息,而单词 1 可以使用单词 0, 1 的信息,即只能使用之前的信息 。
输入矩阵与 Mask 矩阵
第二步:接下来的操作和之前的 Self- 一样,通过输入矩阵X计算得到Q,K,V矩阵 。然后计算Q和KT的乘积QKT 。
Q乘以K的转置
第三步:在得到QKT之后需要进行,计算score,我们在之前需要使用Mask矩阵遮挡住每一个单词之后的信息,遮挡操作如下:
之前 Mask
【Transformer模型是什么?】得到之后在上进行,每一行的和都为 1 。但是单词 0 在单词 1, 2, 3, 4 上的score 都为 0 。
第四步:使用与矩阵V相乘,得到输出Z,则单词 1 的输出向量Z1是只包含单词 1 信息的 。
Mask 之后的输出
第五步:通过上述步骤就可以得到一个 Mask Self- 的输出矩阵Zi,然后和类似,通过 Multi-Head拼接多个输出Zi然后计算得到第一个 Multi-Head的输出Z,Z与输入X维度一样 。
5.2 第二个 Multi-Head
block 第二个 Multi-Head变化不大,主要的区别在于其中 Self- 的K, V矩阵不是使用 上一个block 的输出计算的,而是使用 的编码信息矩阵 C计算的 。
根据的输出C计算得到K, V,根据上一个block 的输出Z计算Q(如果是第一个block 则使用输入矩阵X进行计算),后续的计算方法与之前描述的一致 。
这样做的好处是在的时候,每一位单词都可以利用到所有单词的信息 (这些信息无需Mask) 。
5.3预测输出单词
block 最后的部分是利用预测下一个单词,在之前的网络层我们可以得到一个最终的输出 Z,因为 Mask 的存在,使得单词 0 的输出 Z0 只包含单词 0 的信息,如下:
之前的 Z
根据输出矩阵的每一行预测下一个单词:
预测
这就是block 的定义,与一样,是由多个block 组合而成 。
6.总结