一、transformer的贡献
transformer架构的贡献:该架构只使用自注意力机制,没有使用RNN或卷积网络。且可以实现并行计算,加快模型训练速度。
(将所有的循环层全部换成:multi-headed self-attention)
二、transformer架构
当前序列模型中编码器和解码器架构的效果会更好(encoder-decoder)。
1、编码器定义:
编码器会将一个输入(x1,x2,x3,x4....xn)的一个序列,表示为一个长度为n的序列(z1,z2,z3,z4...zn),其中每一个zt,表示的是xt的一个向量。若该序列为一个句子,则第xt就表示第xt个词。则zt就表示第t个词的向量表示。综上就是编码器的输出。
(通过这样的转换,就可以将用户的输入转换为向量表示,使得模型能够正确的处理)
2、解码器的定义:
解码器会拿到编码器的输出,然后会生成一个长为m(y1,y2,y3,....ym)的一个序列,需要注意的是:n和m可能是不一样长的。如:在将中文句子翻译成英文句子的时候,两种语言的长度可能是不一样的。
3、编码器和解码器的差异:
对于编码器而言:在生成对应的序列的时候,可能是一次性全部生成的。 但在解码器中,解码器生成序列的时候是一个一个元素生成的。这个过程叫做自回归(auto-regressivet)的一个模型。
4、自回归概念的解释
在一个模型中,你的输入又是你的输出。
实际举例:比如在一个实际的序列模型中,你想模型输入了一句话,经过编码器的处理,变成了一个向量序列z(z1,z2,z3....zn),然后将这个向量序列逐个传递给解码器,解码器得到z1后,根据z1就会得到y1;然后根据自回归原理,y1预测得到y2,y2预测y3,依次类推,就可以得到yn。
5、transformer与encoder-decoder之间的联系
transformer是使用了一个编码器和解码器的架构。更具体的解释为:transformer是将一些注意力和point-wise fully connected layers,一个一个堆在一起的。
既然是讲解transformer架构,那怎么能少了论文中的transformer架构图:
简单解释一下: