1 transformer的encoder-decoder结构:

结构内部:

 

2 encoder:

2.1  输入部分

embedding和postitional encoding(位置编码)

 

为什么需要位置编码:如RNN每一time steps共享一套参数,串行输入输出,而transformer采用可以并行出入几个单词或者一串句子,优点是处理效率高,缺点是无法表示时序关系,所以要对输入的embedding加上postitional encoding。

 最终输入的数据:

 2.2 注意力机制

 2.2.1 基本的注意力机制

cv中:

 如上图,判断婴儿和(左上、左下、右上、右下)四个区域哪个点乘的结果越大说明:距离越靠近越相似也就是越关注,再和V相乘得到attention value。

 nlp中:

 

 2.2.2 TRM中的注意力

通过三个权重矩阵WQ,WK,WV和x点乘得到q,k,v,如下图:

 

q*k得到score,除以8(由上面的注意力公式可知,如果q*k值很大,softmax在反向传播时的值就很小,所以除8避免梯度消失)。

比如下图第一个单词thinking,对应的q1、k1、v1,q1*k1/8=14,q1*k1/8=12,...,softmax之后再和每一个v1,v2,...相乘,再求和作为thinking输出z1。

 

 

 Multi-head Attention整体流程:

 2.2.3残差和LayNorm

 

 为什么用残差网络(为什么残差网络可以把网络做的很深): 加了个1,所以缓解了梯度消失。

为什么用layer normal:BN在nlp中不太适用,LN更适合nlp中的序列信息。都是为了让网络收敛的更快。BN是对每个特征x1,x2,...做均值方差,LN是对序列做均值方差。

如下图,LN是对‘我爱中国共产党’做均值方差;BN是对‘我’‘今’做,对于同一类的特征(比如体重、身高等)可以用,在nlp中就不适用了。

 

 2.3 前馈神经网络

 

 feed forward:两层的全连接。

 3 decoder

 decoder和encoder有以下一些不同:

 

 3.1 masked multi-head attention

 

 为什么mask:遮盖掉后面的词,模拟真实的预测过程。

 3.2 交互层:

 encoder输出的值去和每一个decoder交互:

 encoder的输出生成的是k,v矩阵,q矩阵来自于decoder:

 

 注:encoder的q是embedding来的,是已知的,而decoder输出的q是预测的,也就是结果预测的词。

 transformer整个过程:

补充:

encoder一个block的输出

 Decoder

 

 Encoder-decoder连接

 

 

更多推荐