1.Transformer示意图
transformer宏观上由左边的六层endocer和右边的六层encoder构成,这些block各不分享权重,在左侧的encoder部分,前一时刻的encoder输出作为下一时刻encoder的输入,直到最后时刻的encoder的输出向量会传递给decoder的每一个block(block中的encoder-decoder attention模块)作为其输入的一部分。
下图所示的是encoder和decoder的详细释义图:
我们先来看一下encoder部分:
encoder主要由以下5部分构成:
①输入embedding
②positional encodeing位置编码
③multi-head attention多头注意力
④add and layer normalization 残差连接和层正则化
⑤feedforward前馈神经网络
下面我们一个一个解读:
①输入embedding:
首先,我们的输入的X维度为(batch_size, sequence_length)[batch大小,每句话的长度],
其中batch_size的设定目的是为了我们一次可以训练多句话,而我们初始的输入每句话一般都是由单词对应字典中的索引下标组成,通过初始的embedding,我们可以直接根据索引找到对应的行(这里和word2vec一致)
经过embedding后,我们的输入维度变为(batch_size, sequence_length,embedding dimention)[batch大小,每句话的长度,嵌入维度]
②positional encodeing位置编码
由于transformer没有LSTM等RNN的循环迭代操作,所