transformer
ENCODER
输入部分
对拆分后的语句x = [batch_size, seq_len]进行以下操作
- Embedding
将离散的输入(如单词索引或其他类别特征)转换为稠密的实数向量,以便可以在神经网络中使用。 - 位置编码
与RNN相比,RNN是一个字一个字的输入,自然每个字的顺序关系信息就会保留下来。但在Encoder中,一个句子的每一个字(词)是并行计算的(下一节解释),所以我们在输入的时候需要提前引入位置信息。
位置信息由: pos(一句话中的第几个字) 和 i (这个字编码成向量后的第i维) 来确定
下面是Positional Encoding的公式:
i为 偶 数 时 , P E p o s , i = s i n ( p o s / 1000 0 2 i / d m o d e l ) PE_{pos, i}= sin( pos/ 10000^{2i/ d_{model}}) PEpos,i=sin(pos/100002i/dmodel)
i为 奇 数 时 , P E p o s , i = c o s ( p o s / 1000