Transformer
一、整体框架
二、Encoder
1.输入部分:
(1)Embedding:将输入的词转换为对应的词向量。
(2)位置编码:因为保证输出时,顺序不会打乱,所以要加入时序信息即位置编码。
公式:偶数时用sin三角函数,奇数时用cos三角函数。
(3)将Embedding和位置编码合并后传入注意力机制。
2.注意力机制:
简而言之,注意力就是分配权重。了解哪部分是比较重要的。
(1)公式:
A
t
t
e
n
t
i
o
n
(
Q
,
K
,
V
)
=
s
o
f
t
m
a
x
(
Q
K
T
d
k
)
V
\mathrm{Attention}(Q,K,V)=\mathrm{softmax}(\frac{QK^{T}}{\sqrt{d_{k}}})V
Attention(Q,K,V)=softmax(dkQKT)V
将输入部分复制为三份,分别作为Q、K、V,然后将Q和K做点击,除以
d
k
\sqrt{d_k}
dk,在做softmax,得到一些和为1的权重,与V进行乘机,得到注意力分数。
(2)在原论文中使用的是多头自注意力机制,用的是矩阵相乘,便于并行,提高计算速度。之后将多个输出,合并在一起。
3.残差
将输入的x加上经过 weight layer得到的输出。
作用:保证梯度不会消失。
4.Layer Normalization
在单独一个样本中进行均值和方差。
(1)与Batch Normalization(BN)的区别:
BN是在一个特征中进行均值和方差。
如上图,LN是一列按样本求均值和方差,而BN是一行按特征求均值和方差。
5.前馈神经网络
两个全连接网络,经过残差和LN。
三、Decoder
1.带掩码的多头自注意力机制
将当前以及后面的词mask,因为在预测结果时,是看不到后面的词。保证训练和预测的一致性。
2.交互层
(1)将每一个Encoder的输出都传入Decoder(原文中Encoder和Decoder都是6个)。
(2)将Encoder生成的K、V矩阵,Decoder生成的Q矩阵,输入交互层中的多头自注意力机制,进而进入前馈神经网络。