Transformer的理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangfengling1023/article/details/84287630

1、seq2seq

seq2seq有两个RNN组成,一个是encoder,一个是decoder,举一个翻译的例子:
“我是女孩”,翻译“I am a girl”
输入序列:
x = (x0,x1,x2,x3) ,x0=我,x1=是,x2=女,x3=孩
目标序列:
t = (t0,t1,t2,t3)=(I am a girl)
通过encoder,把x=(x0,x1,x2,x3)映射为一个隐层状态h,再经由decoder将h映射为y=(y0,y1,y2,y3)(这里y向量长度可以发生变化,即与输入长度可以不同),最后将y与t做loss(交叉熵),训练网络

2、Transformer

Transformer时一个升级版的seq2seq,也是由一个encoder和一个decoder组成的,encoder对输入序列进行编码,即x变成h,decoder对h进行解码,得到y,但encoder和decoder都不用RNN,而是换成了多个attention

                                                        

                          

对上面的结构进行分开来看:
(1)左边的结构是encoder、右边是decoder
(2)encode、decoder的底部都是embedding,而embedding又分为又分为两部分:input embedding和position embedding,Transformer抛弃了RNN,而RNN最大的优点就是在时间序列上对数据的抽象,所以文章中作者提出两种Positional Encoding的方法,将encoding后的数据与embedding数据求和,加入了相对位置信息。
(3)encode、decoder的中部分是两个block,分别输入一个序列、输出一个序列,这两个block分别重复N次,encoder的每个block里有两个子网,分别是multihead attention和feedforward network(ffn);decoder的block里有三个子网,分别是multihead attetion和一个ffn。这些子网后面都跟了一个add&norm,即像resnet一样加一个
(4)decoder最后还有一个linear和softmax

2.1 Encoder

encoder由6层相同的层组成,每一层由两部分组成:multi-head self-attetion和position-wise feed-forward network(是一个全连接层),两个部分都有一个残差连接(residual connection),然后接着一个layer normalization

2.2 Decoder

decoder也是由6个相同的层组成,每一个层包括三个部分:multi-head self-attention mechanism、multi-head context-attention mechanism、position-wise feed-forward network
和 encoder 一样,上面三个部分的每一个部分,都有一个残差连接,后接一个 Layer Normalization。
decoder 和 encoder 不同的地方在 multi-head context-attention mechanism

2.3 Attention

attention可以简单理解成encoder层的输出经过加权平均后再输入到decoder层中,它主要应用在seq2seq模型中,这个加权可以用矩阵来表示,也叫attention矩阵,它表示对于某个时刻的输出y,它扎起输入y上各个部分的注意力,这个注意力就是刚才所说的加权
Attention 又分为很多种,其中两种比较典型的有加性 Attention 和乘性 Attention。加性 Attention 对于输入的隐状态 h_t 和输出的隐状态 s_t 直接做 concat 操作,得到 [s_t; h_t] ,乘性 Attention 则是对输入和输出做 dot 操作

3、Transoformer评价

(1)并行计算,提高训练速度
Transoformer用attention代替了原本的RNN,而RNN在训练的时候,当前的step的计算要依赖于上一个step的hidden state的,也就是说这是一个sequential procedure,即每次计算都要等之前的计算完成才能展开,而Transoformer不用RNN,所有的计算都可以并行计算,从而提高训练的速度
(2)建立直接的长距离依赖
在Transoformer中,由于self attentionn的存在,任意两个word之间都有直接的交互,从而建立了直接的依赖,无论二者距离多远

猜你喜欢

转载自blog.csdn.net/yangfengling1023/article/details/84287630