大连网站建设外贸,南宁 网站推广,建筑网2016农村别墅图大全,台州企业网站建设公司transformer的基本结构:
encoder-decoder的基本流程为#xff1a;
1#xff09;对于输入#xff0c;首先进行embedding操作#xff0c;即将输入映射为向量的形式#xff0c;包含两部分操作#xff0c;第一部分是input embedding#xff1a;例如#xff0c;在NLP领域
1对于输入首先进行embedding操作即将输入映射为向量的形式包含两部分操作第一部分是input embedding例如在NLP领域称为token embedding即将输入序列中的token如单词或字符映射为连续的向量表示在CV领域可以是将每个像素或者每个patch块映射为向量形式例如patch embedding层 2另一个embedding操作为positional encoding即位置编码即一组与输入经过embedding操作后的向量相同维度的向量(例如都为[N, HW, C])用于提供位置信息。位置编码与input embedding相加得到transformer 编码器的输入。 3transformer encoder是由多个编码模块组成的编码器层每个编码模块由多头自注意力机制残差add层归一化LayerNorm前馈网络FFN残差add层归一化LayerNorm组成
多头自注意力机制核心部分例如在CV领域经过embedding层后的输入为[N, HW, C]N为Batch numHW为像素个数每个像素映射为一个维度为C的向量然后通过QKV的自注意力机制和划分为多头的方式得到输出为[N, HW, C]
要除以的原因查询Query与键Key之间的点积然后将这个点积除以一个缩放因子最后应用softmax函数来获得注意力权重。如果不进行缩放当键的维度dk很大时点积的结果可能会非常大这会导致softmax函数的梯度非常小从而引起梯度消失问题。通过除以根号dk提高训练的稳定性。
addLayerNorm经过多头自注意力机制后再与输入相加并经过层归一化LayerNorm即在最后一个维度C上做归一化详见https://blog.csdn.net/m0_48086806/article/details/132153059 前馈网络FFN是由两个全连接层ReLu激活函数组成
4transformer decoder是由多个解码模块组成的解码器层每个解码模块由Masked多头自注意力机制残差add层归一化LayerNorm多头cross attention机制addLayerNorm前馈网络FFNaddLayerNorm。 5此外需要注意的是第一个解码模块的输入为output(可以初始化为0或者随机初始化)经过embedding操作后的结果之后各个解码模块的输入就变为前一个解码模块的输出了第二个cross attention机制的QKV输入分别为KV键值对都是等于编码器最终的输出Query为Masked多头自注意力的输出
Masked多头自注意力机制一个通俗解释为一个词序列中每个词只能被它前面的词所影响所以这个词后面的所有位置都需要被忽略所以在计算Attention的时候该词向量和它后面的词向量的相关性为0。因此为Mask
6最后通过Linear层Softmax得到最终的输出