2017年,谷歌提出了Transformer模型,采用Self Attention结构,取代以往的RNN网络结构,这个结构使模型能够进行并行计算。相比于RNN,每一步都依赖于前一步的输出,这样的串行化结构无法并行计算,使得效率不高。
Transformer常用结构:编码器和解码器
使用时常用多层编码器和解码器,每一个编码器结构上一样,但权重参数不同,每一个编码器里面分为两层,一层是Self Attention Layer,另一层是FFNN(前馈神经网络)。
编码器
输入:编码器的接收是一个向量列表,输出一个向量列表,接着作为下一个编码器的输入
在Self Attention层中,路径之间有依赖性,而在Feed Forward层中,路径之间没有依赖关系。所以Transformer的外在表现是每个向量经过编码器都有自己单独的路径,因此,这些向量可以在Feed Forward层中并行计算。
Self Attention:自注意力机制可以把其他单词的理解融入到当前的单词理解中,它使得模型不光是关注这个位置的词,还能关注句子中其他位置的词,作为这个词的补充线索。
解码器
以英文翻译举例,解码阶段的每一个时间步都输出一个翻译后的单词。然后不断重复这个过程,直到输出一个结束符。像编码器一样,从下往上一层一层的输出结果。
在Self Attention层中,和编码器不一样,解码器里,自注意力层只允许关注输出序列中早于当前位置的单词,而屏蔽当前位置之后的其他位置。