Transformer:attention is all you need

在序列建模和序列翻译问题中经常使用的网络模型是RNN和LSTM,GRU。RNN处理序列问题时不能并行,将RNN作为解码器时,在第t个时间节点的prediction vector将与在t-1时刻的hidden state有关系,导致计算效率很低。所提出的transformer能够捕捉短时间的局部信息和长时间的单词依赖关系,transformer将更容易被并行化。在处理图像问题中,通常使用的是CNN和batch normalization,BN是希望经过CNN卷积操作之后的特征图[N,C,H,W]在C*H*W个位置上的N个数值是均值为0,方差为1。在自然语言处理中,通常使用的是RNN和layer normalization,layer norm与batch size大小无关,它是希望对于当前batch size的每一个输入sentence所提取到的每个维度的特征,共feature dimension个数值,均值为0,方差为1。

自然语言处理中的sequence to sequence model(seq2seq)实现了机器翻译。Transformer是一种特殊的seq2seq模型,其中大量使用到了self-attention module。处理序列问题最常用的神经网络架构就是RNN和LSTM,时序的RNN的输入序列和输出序列都是vector sequence,RNN的缺点在于它不容易进行并行处理(parallel),CNN的优点就在于它可以进行并行处理。Self attention layer层的输入和输出与RNN相同,都是sequence。Self attention layer与bidirectional RNN具有相同的能力,即在输出的每个时间节点上的每个prediction vector,它都与输入的每个时间节点的输入vector相关,但self attention layer相比于RNN的优点在于输出每个时间节点的prediction vector是同时并行计算得到的。

npl自然语言处理 相似度 自然语言处理 lstm_编码器

在self attention layer中,输出预测层的每个时间节点的prediction vector是同时被计算出来的。可以用self attention layer来取代RNN,且self attention layer中仅仅包含矩阵乘法操作。

自然语言处理中的self attention layer出现在paper: attention is all you need中。自然语言处理中的神经网络都是encoder-decoder 结构的。对于transformer而言,编码器输入的序列是(x1,x2,……xn),每个时间节点的输入特征向量都是512维(d_model=512),并且是加上了位置编码之后的特征向量,编码器将输入序列映射成连续的特征表示(z1,z2,……zn),其中编码器输出的特征矩阵中的每个时间节点处的特征向量都与编码器输入的n个特征向量相关联。而编码器输出的特征向量z将作为解码器输入的特征向量,解码器根据z输出prediction sequence (y1,y2,……ym),解码器在第t个时间节点所预测的输出值只与t时间点之前的特征向量有关,与t时刻之后的特征向量无关(masked attention layer),在编码器和解码器中,不存在任何CNN和RNN的结构,都是使用全连接层(矩阵乘法)实现。

npl自然语言处理 相似度 自然语言处理 lstm_npl自然语言处理 相似度_02

npl自然语言处理 相似度 自然语言处理 lstm_编码器_03