[网络层]什么是Transformer

1、Transformer 模型的结构图


图 1.1

2、Transformer 模型简述

Transformer 是一种 Encoder-Decoder 模型,Transformer 的 Encoder 由 6 个编码器叠加组成,这些编码器的结构是相同,但是它们不共享权重;Decoder 也由 6 个解码器叠加组成,解码器的结构也是相同的,但是它们也不共享权重。每一个编码器都分成两个子层,第一个子层是自注意力层,它可以帮助编码器在编码某个特定单词的时候,可以查看其它的单词,第二个子层则是一个前馈神经网络层。每一个 解码器也具有这两个层,但还有一个注意力层,用来帮助解码器关注编码器输入句子的相关部分。


3、Transformer 中的 self-attention 机制

Transformer 中的 attention 机制是分别使用矩阵  跟输入 X 进行矩阵相乘,分别得到 Q、K、V,然后使用缩放点积attention 公式: (其中的  是 K 的词向量维度的大小)来计算所有的词乘以注意力得分权重后的结果。由于 Q、K、V 同源,因此又称为 self-attention 机制。

图解如下:



4、Multi-Head Attention 机制

Multi-Head Attention 机制也叫做多头注意力机制,在 transformer 中会生成 8 个头,每个头会只关注输入 X 的词向量维度的一部分,每个头都拥有一个独立的语义空间,因此可以增大 transformer 的语义空间。每个头分别使用 attention 公式  后会得到 8 个输出,然后进行横向拼接后得到一个新的矩阵,然后再乘以一个随机初始化的矩阵,最后得到最终的输出 Z。

图解如下:

图 4.1


图 4.2


5、Positional Encoding

Positional Encoding 也叫做位置编码,由于 Transformer 的计算过程是并行的,无法体现序列之间的位置,而在很多时候序列之间的位置关系是很重要的,因此需要给 Transformer 输入位置编码。位置编码可以是可训练的向量,也可以使用公式计算。下面是计算的公式:

对于位置是偶数的位置编码公式:

对于位置是奇数的位置编码公式:

公式中的 pos 指的是该词在句中的位置,例如 1,2,3...,n

而 i 则指的是词向量的第 i 个维度,例如 1,2, 3,..., m

而  则指的是词向量的维度大小,例如 m

简记为:奇数用余弦,偶数用正弦


4、Transformer 的超参数


图 4.1

注: 是嵌入的维度,即 embedding_size

你可能感兴趣的:([网络层]什么是Transformer)