概述
Decoder也是N=6层堆叠的结构,每层被分3层: 两个注意力层和前馈网络层,同Encoder一样在主层后都加有Add&Norm,负责残差连接和归一化操作。
Encoder与Decoder有三大主要的不同:
- 第一层 Masked Multi-Head Attention: 采用Masked操作
- 第二层 Multi-Head Attention: K, V矩阵是使用Encoder编码信息矩阵C进行计算,而Q使用上一个Decoder的输出计算。
- 概率计算输出: Linear和Softmax作用于前向网络层的输出后面,来预测对应的word的probabilities
Encoder的输入矩阵用X表示,输出矩阵用C表示
流程图表示如下:
分析如下:
- 我们将 输入转换为嵌入矩阵,再加上位置编码,输入解码器
- 解码器收到输入,将其发送给带掩码的多头注意力层,生成注意力矩阵M
- 将注意力矩阵M和Encoder输出的特征值R作为多头注意力层的输入,输出第二层注意力矩阵
- 从第二层的多头注意力层得到注意力矩阵,送入前馈网络层,后者将解码后的特征作为输出
- 前馈网络层的输出经过Add&Norm后,做linear及Softmax回归,并输出目标句子的特征
Decoder 的输入
Decoder的输入结构与encoder的一样。
Masked Multi-Head Attention
输入组成
由如下几个部分组成
1.初始输入:前一时刻Decoder输入+前一时刻Decoder的预测结果 + Positional Encoding
3.中间输入:Encoder Embedding
4.Shifted Right:在输出前添加 起始符(Begin),方便预测第一个Token
Shifted Right是在起始位添加起始符(Begin),让整个输入向后移一位,是为了在T-1时刻需要预测T时刻的输出。
举例: I like eat hamburg
正常的输出序列位置关系如下:
1 0:"I"
2