分为编码和解码两个过程
selef-attention就是拆解对照表,计算各个零部件的权重,标明互相间的关系。
前馈网络就是根据这些权重变一次形状。
decoder除了self-attention和前馈网络还多了一层,encoder-decoder attention。
encoder-decoder attention作用就是在组装的时候,不光要考虑自己,还要兼顾拆解时候的整体信息。
落实到机器翻译上,就是在解码的时候,每个词不光要看已经翻译的内容,还要考虑encoder中上下文的信息。
每个self-attention又会分解为多个部分,这就是传说中的multi-head attention。就跟拆解过程一样,
首先:用算法把单词向量化,嵌入位置信息,变成统一长度。
encoder把x作为输入,通过self-attention和前馈网络,发送到下一个编码器,其中self-attention就是一个零件自查表, 通过权重标明相互关系,嵌入上下文信息。
每个输入向量先嵌入位置信息,然后分别乘以三个训练好的向量Q,K,V,再用每个单词的Q向量,
再用Q向量和K向量相乘
然后通过归一化,用softmax函数过滤掉不相干的单词,乘以V向量加权求和,得到输出向量Z。
这个过程中Q、K、V三个向量起到的作用,非常像数据库中的Query,Key、Value散步操作。
用矩阵语言来描述上述的过程。
在multi-head attention中,使用了不同的权重矩阵Q、K、V
各个模块如何协同工作的?
解码器的输出是个向量,如何变成单词呢?
这就是线性层和softmax层的工作了