本篇整理 Transformer 架构,及在 Transformer 基础上衍生出来的 BERT 模型,最后给出
相应的应用案例。

1.Transformer的架构

Transformer 网络架构架构由 Ashish Vaswani 等人在 Attention Is All You Need一文中提出,并用于机器翻译任务,和以往网络架构有所区别的是,该网络架构中,编码器和解码器没有采用 RNN 或 CNN 等网络架构,而是采用完全依赖于注意力机制的架构。网络架构如下所示:

transformer架构和transformer transformer网络架构图_网络架构


该网络架构中引入了多头注意力机制,该机制的网络架构如下所示:

transformer架构和transformer transformer网络架构图_网络架构_02

这里有必要对多头注意力机制进行一定的解释。假设输入数据的 batch size 为transformer架构和transformer transformer网络架构图_自然语言处理_03,输入数据的最大长度为transformer架构和transformer transformer网络架构图_数据_04,输出数据的最大长度为transformer架构和transformer transformer网络架构图_数据_05,共有transformer架构和transformer transformer网络架构图_深度学习_06个注意力头,每个注意力头的输出维度为transformer架构和transformer transformer网络架构图_深度学习_07,则输入/输出数据中每个词的 Embedding 的维度为 transformer架构和transformer transformer网络架构图_深度学习_08,且注意力头中每个头对应的transformer架构和transformer transformer网络架构图_数据_09矩阵均属于transformer架构和transformer transformer网络架构图_深度学习_10。考虑到编码器和解码器涉及三个注意过程,且输入有所不同,这里分别来看。

2.编码器自注意力

考虑输入数据为transformer架构和transformer transformer网络架构图_网络架构_11,对输入数据应用如下线性变换:
transformer架构和transformer transformer网络架构图_nlp_12
在上述变换基础上进行如下计算,得到输入中每个词和自身及其他词之间的关系权重
transformer架构和transformer transformer网络架构图_自然语言处理_13
上述变换 transformer架构和transformer transformer网络架构图_自然语言处理_14 表示对张量的最内部矩阵进行转置,因此transformer架构和transformer transformer网络架构图_网络架构_15transformer架构和transformer transformer网络架构图_深度学习_16表示相同维度下张量 Q 和张量 transformer架构和transformer transformer网络架构图_自然语言处理_14 最内部矩阵执行矩阵乘法运算 (即 numpy.matmul 运算),因此有transformer架构和transformer transformer网络架构图_网络架构_18,该张量表示输入数据中每个词和自身及其他词的关系权重,每一行的得分之和为 1,即
transformer架构和transformer transformer网络架构图_网络架构_19
基于该得分即可得到,每个词在当前上下文下的新的向量表示,公式如下:
transformer架构和transformer transformer网络架构图_网络架构_20
考虑到 Transformer 采用了 N 个注意力头,因此最终产生了集合大小为 N 的注意力集合transformer架构和transformer transformer网络架构图_nlp_21,将该集合中中的所有张量按照最后一个维度进行拼接,并采用矩阵transformer架构和transformer transformer网络架构图_自然语言处理_22进行变换,得到最终生成的自注意力输入数据,公式如下:
transformer架构和transformer transformer网络架构图_自然语言处理_23
因此有transformer架构和transformer transformer网络架构图_自然语言处理_24

考虑到多头注意力可以并行运算,为了充分发挥向量化计算并行效率,实际实现中往往采用如下表示方案:
transformer架构和transformer transformer网络架构图_网络架构_25
在上述并行计算基础上通过如下计算得到词和自身及其他词的关系权值:
transformer架构和transformer transformer网络架构图_自然语言处理_26

3.解码器自注意力

解码器的自注意力和编码器的自注意力基本完全一致,需要注意的是解码过程是one by one的生成过程,因此输出数据中的每个词在进行自注意力的过程时,仅可以看到当前输出位置的所有前驱词的信息,因此需要对输出数据中的词进行掩码操作,该操作即对应上面的左图上的掩码操作。该掩码操作相当于执行如下操作:
transformer架构和transformer transformer网络架构图_深度学习_27
其中transformer架构和transformer transformer网络架构图_数据_28 为掩码,其最内部矩阵为方阵,该方阵主对角线及以下元素均为 0,主对角线以上元素为transformer架构和transformer transformer网络架构图_自然语言处理_29。譬如 T = 5 时,最内部方阵内容如下:
transformer架构和transformer transformer网络架构图_自然语言处理_30
其余操作和编码器自注意力机制一致,唯一不同的是此时需要向上面那样将输入数据换成 transformer架构和transformer transformer网络架构图_网络架构_31,因此所有的 transformer架构和transformer transformer网络架构图_数据_04 均需换成 transformer架构和transformer transformer网络架构图_数据_05

4.编码解码注意力

编码解码注意力和自注意力类似,唯一不同的是计算 Q, K, V 使用的数据有所区别,计算
Q 时采用 Y,计算 K 和 V 时采用 X,因此有:

transformer架构和transformer transformer网络架构图_nlp_34 reshape transformer架构和transformer transformer网络架构图_数据_35
transformer架构和transformer transformer网络架构图_网络架构_36 reshape transformer架构和transformer transformer网络架构图_网络架构_37

transformer架构和transformer transformer网络架构图_深度学习_38

transformer架构和transformer transformer网络架构图_网络架构_39
transformer架构和transformer transformer网络架构图_数据_40

因此有:
transformer架构和transformer transformer网络架构图_自然语言处理_41

transformer架构和transformer transformer网络架构图_网络架构_42

其余计算过程和编码器自注意力机制类似。