Transformer

ZhuYuanxiang 2020-10-12 18:15:39
Categories: Tags:

Preface

三种序列转换模型的对比

1. 基础知识

建立 Transformer 模型之前,需要将序列数据转换为词向量数据。

2. Transformer 模型结构

全部采用自注意力 ( self-attention ) 层进行 编码,引入了三个变换矩阵,得到查询 ( Query, Q ) 、键 ( Key, K ) 、值 ( Value, V ) 三个向量,然后利用词与词之间 Q 和 K 相乘的结构进行注意力计算,将权重系数乘以 V 就是新的词向量表示。

Transformer 结构

( 图 1-Transformer 模型结构 )

2.1 序列

模型的输入

模型的输出

2.2 Embedding and Encoding

2.2.1 Word Embedding

序列的词嵌入(Word Embedding)编码

2.2.2 Positional Encoding

位置编码(Positional Encoding):因为自注意力机制并没有考虑位置信息,因此需要将每个位置编号,然后每个编号对应这个向量,最后将该向量与词向量相加,从而实现为每个词引入位置信息。

位置编码的维度和词嵌入的维度一致:$d_{model}$

$$
PositionEncode(pos,i)=
\begin{cases}
\sin ( \text{pos}/10000^{\frac{i}2\frac1{d_{model}}} ) ,&\text{if i is 偶数}\
\cos ( \text{pos}/10000^{\frac{i-1}2\frac1{d_{model}}} ),&\text{if i is 奇数}
\end{cases}
$$

注 1:使用 sin 和 cos 函数,是因为基于和差化积公式,

注 2:编码函数还有其他方式,Encoder 与 Decoder 的编码函数是相同的

2.3 Encoder

2.3.1 Encoder Structure

编码器的结构

2.3.2 Multi-Head Attention

MultiHeadAttention

( 图 2-多头注意力机制与缩放点积 )

多头注意力 ( Multi-Head Attention )

$$
MultiHeadAttention ( e_{in} ) =MultiHead ( Q,K,V ) =Concat ( head_1,\cdots,head_h ) W^O
$$

$$
Attention ( QW_i^Q,KW_i^K,VW_i^V ) =softmax ( \frac{QW_i^Q ( KW_i^K )^T}{\sqrt{d_k}} ) VW_i^V
$$

注:$QW_i^Q ( KW_i^K )$可以理解为相关矩阵,然后通过 softmax 将相关矩阵的值转化为概率,即归一化,相关性强的概率值大,将这个概率矩阵作为值的权重矩阵,使得输出结果具有更加明显的结构信息。这个结构信息可以作为输出数据的结构参考信息使用

2.3.3 Encoder Padding Mask

编码器的PAD掩码:因为每个批次输入序列长度不同,为了将输入序列对齐,需要将长句子截断,对短句子填充 0.

$$
EncodePadMask_j= ( e_{j1},e_{j2},\cdots,e_{jp},\cdots,e_{jN} )
$$

2.3.4 Residual

残差连接:经过注意力矩阵加权之后的 V,即 $MultiHeadAttention(e_{in})$ 与 $e_{in}$ 的维度一致,

2.3.5 Layer Normalization

层归一化:把神经网络中的隐藏层归一化为标准正态分布,从而加快训练速度,加速模型收敛

2.3.6 Feedforward Network

前馈神经网络

$$
\begin{aligned}
FFN ( e_{mid} )
&=ReLU ( e_{mid}W_1+b_1 ) W_2+b_2\
&=max ( 0,e_{mid}W_1+b_1 ) W_2+b_2
\end{aligned}
$$

2.4 Decoder

2.4.1 Decoder Structure

解码器的结构

2.4.2 Decoder Padding Mask

解码器的 PAD 掩码:与编码器相同

2.4.3 Decoder Sequence Mask

解码器的序列掩码:因为解码阶段,后序单词不应该用于预测前序的单词,因此需要掩掉