作者:业余爱好者 | 来源:互联网 | 2023-08-20 08:04
Transformer是一个用于翻译的模型。由N个结构完全相同的encoder和N个结构完全相同的decoder组成。**Encoder**而Encoder部分又可分为3个部分:
Transformer是翻译的模式。 由n个结构完全相同的编码器(训练时n个编码器参数独立训练)和n个结构完全相同的解码器(训练时n个解码器参数独立训练)组成。 其中“n”可以自己设定,论文给出的一个参考值是6。
Transformer模型框架:
将Transformer进一步细分为编码器和解码器部分。
**
编码器* *
编码器部分分为三个部分:输入部分、注意力机制和前馈神经网络。
输入部分有两个:1.embedding 2.位置嵌入
为什么需要位置代码?
在RNN中,输入参数u、隐藏参数w和输出参数v是一组参数,RNN的所有time steps共享一组u、w和v参数。 例如,如下图所示,如果按时间轴展开左图,则可以看到右边对于每个time step U、w和v而不是Ut-1、Ut和Ut 1是相同的。 因此,RNN被称为循环神经网络。
另一方面,Transformer具有并行化,不是像RNN那样一个单词一个单词按顺序处理,而是一个词一个单词一起处理。 这样做虽然加快了速度,但忽略了单词之间的位置信息。 例如,有些单词在前面,有些单词在后面。公式理解:pos是词在文中的位置,2i和2i 1分别表示偶数位置和奇数位置,偶数位置采用sin公式计算,奇数位置采用cos公式计算。 例如,下一个单词“爱”,如果其位置代码向量为512维,则对于每个偶数维使用上图的sin式进行计算,对于每个奇数维使用上图的cos式进行计算。 最终得到了512维的位置代码矢量。
“爱”一词的最终代码向量是位置代码嵌入式(shape相同,根据位置相加)
注意力机制注意力机制的输入需要q、k、v三个矩阵,计算q和k的相似度,除以一个超参数得到相似的概率分布,最后与v矩阵相乘。 在Transformer中如何计算q、k和v?
经过位置代码和嵌入式,我们获得了单词“Thinking”的嵌入式。 你如何获得q、k、v? 如上图所示,只需分别与WQ、WK、WV (首先初始化参数矩阵,训练并更新其中的参数)相乘即可。 单词“Machine”也是同样的操作。 下图显示了计算Attention的过程。
上图中的红框显示上一步中获得的查询、密钥和值向量。 紫框的计算公式如下。
其中,x是一个句子中所有单词的embedding矩阵。
在上图中计算Attention的过程,只需一套WQ、WK、WV即可获得q、k、v。 多头注意机制是指使用多套WQ、WK、WV。 下图:
多个打印头有多个输出,最后连接输出。
如上图所示,残差LayerNorm的过程:单词“Thinking”和单词“Machines”经过嵌入式和定位嵌入式相加,得到黄色的x1、x2 (拼接后为x )
残差网络理解
了解BN和LN
前馈神经网络两层全连接层和残差LN
**
解码器* *
解码器的重点是MAS eked多头保护和多头保护
为什么Maseked Multi-Head Attention需要掩码? 马斯克的是什么? 请参阅下图:
由于在训练中存在接地路径,如果解码器输入中没有掩码,则在某个时间点,当使用“LOVE”生成“YOU”时,解码器将生成后面的单词“YOU”和“NOW”,即“ 因此,在训练中mask必须去掉当前单词和当前单词之后的单词。
“多头部识别解码器”中“多头部”的k和v来自编码器框架中最后一个编码器的输出,q来自解码器中“多头部识别”之前级别的输出如下图所示。
本文参考了本站的bqdjz视频。 原始视频还介绍了有关Transformer的面试主题和答案