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