transformer encoder整体结构梳理

下面用公式把一个transformer block的计算过程整理一下:
(1)字向量与位置编码:
X=EmbeddingLookup(X)+PositionalEncoding
X∈Rbatchsize∗seq.len.∗embed.dim.
(2) 字注意力机制:
Q=Linear(X)=XWQ
K=Linear(X)=XWK
V=Linear(X)=XWV
Xattention=SelfAttention(Q,K,V)
(3) 残差连接与Layer Normalization:
LayerNormalization的作用是把神经网络中隐藏层归一为标准正态分布,也就是i.i.d独立同分布,以起到加快训练速度,加速收敛的作用。
Xattention=X+Xattention
Xattention=LayerNorm(Xattention)
(4)FeedForward,其实就是两层线性映射并用**函数**,比如说ReLU:
Xhidden=Activate(Linear(Linear(Xattention)))
(5) 重复(3),可以重复N次,N表示transformer block的个数:
Xhidden=Xattention+Xhidden
Xhidden=LayerNorm(Xhidden)
Xhidden∈Rbatchsize∗seq.len.∗embed.dim.
以上就是transformer的编码器的部分,值得注意一点是,经过自注意力机制,一句话中的每个字都含有这句话中其他所有字的信息,那么我们可以添加一个空白字符到句子的最前面,让句子中的所有信息向这个空白字符(hidden state)汇总,然后再映射成想要分的类别。