Transformer
Seq2seq model with Self-attention
在RNN中虽然用到了输入序列的全部信息,但是很难实现输入序列词的同时训练,在self-attention layer中,目标序列b1,b2,...,bib_1,b_2,...,b_ib1,b2,...,bi中每一个都是基于全部输入序列而得到的,并且它们都是同时训练的。
Transformer结构:
Encoder:
编码器由6个相同的层堆叠在一起,每一层又有两个支层。第一个支层是一个多头的自注意机制,第二个支层是一个简单的全连接前馈网络。在两个支层外面都添加了一个residual的连接,然后进行了layer nomalization的操作。模型所有的支层以及embedding层的输出维度都是dmodeld_{model}dmodel。
Decoder:
解码器也是堆叠了六个相同的层。不过每层除了编码器中那两个支层,解码器还加入了第三个支层,如图中所示同样也用了residual以及layer normalization。
Self-attention layer具体的过程:
第一步:
其中:
q:query(to match others):qi=Wqaiq:query(to\ match\ others):q^i=W^qa^iq:query(to match others):qi=Wqai
k:key(to be matched):ki=Wkaik:key(to\ be\ matched):k^i=W^ka^ik:key(to be matched):