Transformer
transform由Google的一篇论文提出:Attention is All You Need
transformer由Encoders和Decoders组成:
论文中讲述,每个Encoders和Decoders中分别有六个encoder和decoder组成:
对于每个encoder,他们的结构是相同的,但不会共享权值。每层encoder由两个部分组成,如下图:
如图所示,每个encoder会首先通过一个self-attention层,通过self-attention层帮助Encoder在编码单词的过程中查看输入序列中其他单词。
self-attention的输出会被传入一个全连接的前神经网络,每个encoder的前馈神经网络参数个数是相同的,但是他们的作用独立。
每个Decoder也同样拥有这样的结构,但在中间有一个attention层,帮助Decoder专注于与输入句子中对应的那个单词。
我们将每个单词编码为一个512维的向量,我们用上面这张简短的图来表示这些向量。词嵌入的过程只能发生在最底层的encoder,但对所有的encoder来说,都可以按照下图理解。输入(一个向量的列表,每个向量都是512维,在最底层Encoder作用是词嵌入,其他层就是其前一层的output)。另外这个列表的大小和词向量维度的大小都是可以设置的超参数。一般情况下,它是我们训练数据集中最长的句子的长度。
上图其实介绍到了一个Transformer的关键点。你注意观察,在每个单词进入Self-Attention层后都会有一个对应的输出。Self-Attention层中的输入和输出是存在依赖关系的,而前馈层则没有依赖,所以在前馈层,我们可以用到并行化来提升速率。
参考博客:https://blog.csdn.net/qq_41664845/article/details/84969266