Transformer教程


链接:https://www.zhihu.com/question/349958732/answer/2255096679

 

本教程来自复旦大学邱锡鹏教授报告《A Tutorial of Transformers》https://www.bilibili.com/video/BV1sU4y1G7CN

1 引子

  • 目前Transformer模型在深度学习各领域/任务上大放异彩:

  • Transformer模型的提出来源于2017年谷歌团队在NIPS上发表的论文
Vaswani, Ashish, et al. "Attention is All you Need." NIPS. 2017 :

  • 其基本结构如下图:

  • 本教程将围绕Transformer及其变种模型进行介绍:

  • 基础知识学习与本教程相关综述文章可参考如下:

Tianyang Lin, Yuxin Wang, Xiangyang Liu, Xipeng Qiu, A Survey of Transformers, https://arxiv.org/abs/2106.04554

2 Transformer背景

2.1 语言表示学习

  • 过去使用知识图谱(KG)结合一些规则来表述语言的含义

  • 现在使用词嵌入(word embedding)的方式,将词汇向量化。具有相似含义的词汇位于高维空间的邻近位置

2.2 NLP中的通用模型

  • 自然语言处理(NLP)中,为了捕获词语间的上下文关系,一般会将一句话输入到设计的上下文编码器中,后接针对不同任务(例如:文本翻译、文本分类)所设计的模型,以解决具体问题。通用的模型结构如下图所示:
    • 大的方向有两个:①如何设计上下文编码器,此处被称为模型驱动;②如何合理利用数据计算模型参数,此处被称为数据驱动。

举一个具体的例子:序列到序列(Sequence-to-Sequence, Seq2Seq)的代表任务--翻译模型,通常采用如下图所示的结构:

  • 编码器学习一种语言(英文)某句话中的上下文信息;
  • 解码器结合另外一种语言(中文)右移动数据与编码器学习到的输入信息,预测输出。
    • 此处右移意为编码器在进行当前位置词翻译时,只能结合当前位置之前的预测输出,不能结合当前位置的输出,例如,在翻译"学"这个字的时候,只能结合"Machine Learning"与“机器”来进行翻译。

  • 模型训练结束后,若要对某句话进行翻译,则以自回归的方式多次运行解码器,依顺序预测每个位置的输出。
    • 例如,在对”Machine Learning“进行翻译时,模型根据”Machine Learning“与起始符"$",首先预测出"机"这个字。然后根据”Machine Learning“与"$机"预测出“机器”。依次循环直至预测出停止符号为止,完成语句翻译。

2.3 如何设计语言模型

  • 结合自然语言的属性:
    • 序列性:一句话的本质为符号序列;
    • 层次性:长短语又短短语和词构成;
    • 递归:动词短语可能由好多级动词短语构成。

  • 以上属性导致语义的构成存在以下两个特点
    • 长程的依赖关系,如当句子比较长,句首/句尾词存在相关性;
    • 一词多义

  • 一词多义也可由上下文关系确定词的含义,所以语言模型的核心就是考虑长程的依赖关系。

2.3.1 在Transformer之前的主流神经网络模型

  • 在使用神经网络对可变长度向量序列进行建模时,可使用的模型如下:
    • 1)CNN,卷积网络具有层间局部连接的特点,导致其建模上下文关系时,范围受限(视觉中的感受野限制)。虽然可以堆叠层数,扩展上下文建模范围,但是深度网络会使得模型训练变得相对困难(梯度消失等)。
    • 2)RNN,循环网络在跨一层时,使得隐藏层可相互影响,理论上可对长序列进行建模。但是由于训练的困难(时间步上的梯度消失),导致其学习上下文信息范围受限。

2.3.2 如何直接建模长程依赖?

  • 返回到原始的全连接网络
  • (在教程中由全连接转向Transformer的思路)在传统的全连接网络学习完成后,参数是固定值,如果此时,某句话右移一个词(例如,句首添加一个词“啊”),可能句子本身意思并没有大的变化。但是如果还使用原来学习好的固定参数对右移后的句子进行预测时,权重和输入就会错位,产生错误的预测。为了解决这一问题,就需要动态地根据当前输入,生成网络权重,这种根据输入变化的动态权重即为注意力。

  • 注意力机制:此处所说的注意力为自注意力,计算包括以下两部分
    • 1)计算注意力分布 α \boldsymbol {\alpha}
      αn=p(z=n∣X,q)=softmax⁡(s(xn,q))=exp⁡(s(xn,q))∑j=1Nexp⁡(s(xj,q))\begin{aligned} \alpha_{n} &=p(z=n \mid \boldsymbol{X}, \boldsymbol{q}) \\ &=\operatorname{softmax}\left(s\left(\boldsymbol{x}_{n}, \boldsymbol{q}\right)\right) \\ &=\frac{\exp \left(s\left(\boldsymbol{x}_{n}, \boldsymbol{q}\right)\right)}{\sum_{j=1}^{N} \exp \left(s\left(\boldsymbol{x}_{j}, \boldsymbol{q}\right)\right)} \end{aligned}\\ ​ 其中s(xn,q) s\left(\boldsymbol{x}_{n}, \boldsymbol{q}\right) 为计算查询向量q \boldsymbol{q} 与每个位置相似度/相关程度的得分函数,可以是计算内积。
    • 2)使用注意力对输入进行加权平均
      ​ att⁡(X,q)=∑n=1Nαnxn=Ez∼p(z∣X,q)[xz]\begin{aligned} \operatorname{att}(\boldsymbol{X}, \boldsymbol{q}) &=\sum_{n=1}^{N} \alpha_{n} \boldsymbol{x}_{n} \\ &=\mathbb{E}_{\boldsymbol{z} \sim p(z \mid \boldsymbol{X}, \boldsymbol{q})}\left[\boldsymbol{x}_{z}\right] \end{aligned}
  • 注意力计算图如下所示:

在语言模型中应用注意力机制

  • 计算“The”上下文表示的方法
  • 因计算注意力时没有使用出输入语句以外的信息,所以这种注意力被称为自注意力

Query-Key-Value (QKV) 模型

  • 进一步添加模型参数,扩充模型容量。实际使用的计算自注意力方法为:对输入向量序列,乘以线性矩阵(可学习参数)Wq,Wk,WvW_q,W_k,W_v分别生成每个位置的查询向量q\boldsymbol{q}、键向量k\boldsymbol{k}、值向量v\boldsymbol{v},Q,K\bf Q, K作内积、归一化得到每个位置关于所有位置的注意力矩阵,然后乘以V\bf V即得到输入序列经过自注意力后的序列表示。计算图如下所示:

多头自注意力(MHSA)

  • 自注意力跨层计算时,输入可以并行的经过几组注意力模型,再次扩充模型容量。一组注意力即称为一个"head",多组计算模式被称为多头自注意力Multi-head Self-Attention,模型结构如下图所示

  • 将自注意力机制堆叠多层后,即构成多层自注意力网络,如下图所示

3 Transformer

3.1 模型结构

  • Transformer即是基于自注意力构建的模型
    • 核心模块:自注意力
    • 除了自注意力模型还包括:
  • Transformer编码器如下图左所示:
    • 编码器子层1:输入语句经过嵌入表示变为向量序列,与位置编码相加,经过多头自注意力,残差连接&层归一化;
    • 编码器子层2:逐位置前馈神经网络(Transformer原文使用2层),残差连接&层归一化。
  • Transformer解码器如下图右所示
    • 输入部分与编码器相同,区别为计算注意力时,添加mask,屏蔽掉当前位置后面的位置(保持自回归性质);
    • 计算第二层解码器时,结合编码器输出作为KV\bf K V,以第一注意力层为Q\bf Q,后再接残差连接与层归一化,逐位前馈神经网络;
    • 最后接线性层与Softmax进行输出的预测。

    • 在模型使用方面:
      • 文本分类仅使用编码器;
      • 文本翻译使用整个模型;
      • 语言模型,预测后面的词汇仅使用解码器。

3.2 模型复杂度分析

  • 以下分析模型的两个主要模块,乘法计算次数与模型参数量
  • 令TT为输入序列长度,DD为模型维度(此处假设词向量维数与模型维数都是DD,即WqW_q尺寸为D×DD\times D)
  • Transformer原文的多头自注意力层在计算注意力矩阵的每个元素时,都进行了DD次乘法(DD维向量相乘)。注意力矩阵大小为T×TT\times T,则进行的乘法次数为T2⋅DT^2\cdot D。模型参数为WiQ∈Rdmodel×dk,WiK∈Rdmodel×dk,WiV∈Rdmodel×dv,WO∈Rhdv×dmodel,i=1,…,hW_i^Q\in\mathbb{R}^{d_{model}\times d_k},W_i^K\in\mathbb{R}^{d_{model}\times d_k},W_i^V\in\mathbb{R}^{d_{model}\times d_v},W^O\in \mathbb{R}^{hd_v\times d_{model}},i=1,\dots,h,原文使用h=8h=8头注意力,dmodel=8∗dk=8∗dv=512d_{model}=8*d_k=8*d_v=512,WOW^O为多头注意力融合后的输出线性投影矩阵。计算自注意力参数量为4D24D^2
  • Transformer原文逐位线性层,使用先升高维度为4D4D再降低维度到DD的两层网络。则对于TT个位置共计算8T⋅D28T\cdot D^2次乘法,参数量为两个线性层的权重元素数8D28D^2

  • 对于短序列数据T≤DT\leq D,模型瓶颈由逐位前馈神经网络决定;
  • 对于长序列数据T>DT>D,模型瓶颈由自注意力决定,从这里可以看出对于长序列Transformer模型复杂度为序列长度的平方,现阶段当序列长度大于512时,认为序列过长,使用Transformer就复杂度比较高了。
与其他神经网络模型复杂度对比
  • 令TT为输入序列长度,DD为数据维度,KK为卷积核尺寸,则几种模型复杂度如下图所示:

  • 上表解释:当某层特征尺寸为(仅考虑单个样本)[1,T,D][1,T,D],要求经过神经网络一层后特征尺寸不变。
    • 使用全连接网络(FFN)时,跨层特征都具有连接,参数尺寸为[DT,DT][DT,DT],乘法次数为T2⋅D2T^2\cdot D^2
    • 使用卷积网络(CNN)时,每个卷积核都要对TT个位置进行KDKD次乘法,共有DD个卷积核,总乘法次数为K⋅T⋅D2K\cdot T\cdot D^2
    • 使用循环神经网络(RNN)时,对TT个时间步,每步进行D×DD\times D次乘法(全连接),总乘法次数为T⋅D2T\cdot D^2
    • 可并行化操作方面:自注意力、全连接、卷积都可并行操作,时间复杂度为O(1)\mathcal O(1),对于循环神经网络则需要在每个时间步上依次运算,模型不具有并行性,时间复杂度为O(T)\mathcal{O}(T);
    • 全局感受野所需网络层数:对于自注意力、全连接网络,跨一层后的特征来源于上一层所有特征的融合,具有单层网络就全局感受野;对于卷积网络,跨一层后的特征,最多可以感受上一层的KK个位置特征,假设经过nn层可获得全局感受野,则Kn=TK^n=T,即所需n=logK⁡(T)n=\log_K(T)层;对于循环神经网络,此处理解是,跨一个时间步为一层,对整个序列建模需要TT层网络。

  • 自注意力的优点:
    • 具有全局感受野,不用像CNN那样叠很多层才能完整获取输入信息。跨一层连接即可融合全局特征,适合建模长序列;
    • 比RNN并行性好,适合发挥GPU并行计算能力;
  • 自注意力的缺点:自注意力矩阵所带来的的序列长度平方复杂度。

与其他模型结构上的对比

CNN:局部连接与参数共享(平移不变性)

RNN:时间维上共享参数;依赖Markov结构(常见为一阶马尔科夫)

Transformer:无结构先验信息(小数据集上容易过拟合);排序不变性,为了建模语句中词语出现的先后顺序,需要引入位置编码。

Transformer与图神经网络:Transformer:可看成是一个全连接的有向图网络(带有自身节点的连接);并且连接关系完全由数据驱动给出。

4 Transformer变种模型

因Transformer强大的性能,它被用于许多任务上。并且在改进模型结构,提升计算效率方面有一些工作,这些内容包括在以下三个方面:

  • 1)在提升模型计算效率方面,使用轻量化的注意力(例如稀疏注意力),或者将长文档输入切分为几个片段,分别学习,然后组合。
  • 2)在模型泛化方面,原始模型在小数据集上容易过拟合,有一些工作是在模型中引入一些正则化,例如加入卷积结构;或是使用预训练方式,在大数据集上先预训练,然后迁移到下游任务上微调。
  • 3)在模型自适应方面,修改Transformer解决其他任务,如对社交网络、知识图谱类数据进行建模。

本教程中,分别对变种模型按照其改进方法分为以下几类:

  • 1)针对模块级进行修改:FFN、归一化、注意力、位置编码
  • 2)对模型整体架构进行修改
  • 3)预训练模型
  • 4)任务迁移

  • 各变种模型提出时间:

5 模块级改进

5.1 自注意力部分

  • 自注意力机制是Transformer模型的核心,但是其拥有复杂度,不便于处理长序列。教程中首先介绍了降低自注意力计算复杂度的相关工作。

5.1.1原子级的稀疏注意力模式:

  • global:另外加两个虚拟位置(token或像素),跨层计算时,新加位置与全局所有节点都有连接,只计算与新加位置连接的注意力。通过2层自注意力,则所有节点可认为是互相连接的,如下图(a);
  • band:只计算注意力矩阵的主对角线附近值,即认为上下文关系只包含相邻位置(与CNN类似,但此处权值不共享),如下图(b)所示;
  • dilated:只计算注意力矩阵的主对角线附近值,与上一种情况类似,此处认为上下文关系只包含附近的间隔位置(类比膨胀卷积),如下图(c)所示;
  • random:随机的只计算自注意力矩阵上的一些位置,某种意义上,这种结构也可被认为单层网络就具有全局感受野,如下图(d)所示;
  • block local:只计算自注意力矩阵主对角线块内元素,即认为上下文关系是分块的、局部的,如下图(e)所示;

  • 近些年提出的一些稀疏注意力模型即是将上述几个基础模式进行组合,一些代表模型如下:

  • 教程中选择上图第一个模型Star Transformer进行介绍,其引入额外的全局节点并且稀疏化了节点之间的连接,稀疏前后的图对比如下所示:
    • 复杂度方面,因为此处考虑的都是长序列L>DL>D的情况,计算量集中在全局节点上,一个全局节点与TT个节点相连接,每条边(因为本质是有向图)上要计算2D2D次乘法,总的复杂度为O(2TD)\mathcal{O}(2TD)
    • 因为施加了先验的局部稀疏化连接,模型不需要额外的位置表示;同时稀疏连接降低了模型复杂度,适合小数据集。

  • BERT证明即使没有稀疏化注意力,额外的全局节点对Transformer也是有益的。
Qipeng Guo, Xipeng Qiu, Pengfei Liu, Yunfan Shao, Xiangyang Xue, Zheng Zhang. Star-Transformer, NAACL 2019, https://arxiv.org/pdf/1902.09113.pdf

5.1.2 另外三种比较复杂的稀疏注意力模型

  • BPT:二分Transformer,对相邻节点进行细粒度(低语义级)关注,对较远节点进行粗粒度(高语义级)关注,如下图(a)
  • Zihao Ye, Qipeng Guo, Quan Gan, Xipeng Qiu, Zheng Zhang. BP-Transformer: Modelling Long-Range Context via Binary Partitioning, https://arxiv.org/abs/1911.04070
    微软新提出的 Focal Self-Attention(FSA)基本和这个原理一样,是搬到图像上做的http://arxiv.org/abs/2107.00641
     
  • block local (2D):对于图像类数据,进行类似于卷积操作的局部关注,如下图(b)
  • axial (2D):仅对某位置进行全局关注,如下图(c)

5.1.3 基于内容的稀疏注意力

  • 使用一些低计算复杂度的方法,过滤出具有高相似度键-值对Reformer (Kitaev et al., ICLR 2020) 中使用的是局部敏感哈希LSH,对token进行分类排序,然后在同类内进行前向attend,如下图所示:

5.1.3 基于内容的稀疏注意力

  • 使用一些低计算复杂度的方法,过滤出具有高相似度键-值对Reformer (Kitaev et al., ICLR 2020) 中使用的是局部敏感哈希LSH,对token进行分类排序,然后在同类内进行前向attend,如下图所示:

  • Routing Transformer (Roy et al., TACL 2020) 则是对键值对进行聚类,同类别的注意力都用聚类中心计算出的注意力

5.1.4 线性化的注意力

  • 原模型中计算注意力时,乘法运算次数为O(T2)\mathcal{O}(T^2),为序列长度平方复杂度。现改为先计算K,V\bf K,V的内积(将softmax换成两个非线性函数ϕ(⋅)\phi(\cdot)的内积),再与Q\bf Q相乘,计算复杂度就会线性化变为O(T)\mathcal{O}(T)。如下图所示(右上此处应该也是O(T2)\mathcal{O}(T^2)):

此处以Performer模型为例,此处将原始softmax后的自注意力矩阵,看成是经过kernel trick计算出的内积,并且人工构造出基函数将其拆分开。

K(x,y)=E[ϕ(x)⊤ϕ(y)]\mathrm{K}(\mathbf{x}, \mathbf{y})=\mathbb{E}\left[\phi(\mathbf{x})^{\top} \phi(\mathbf{y})\right]\\, 下图的LL为上文中的序列长度TT > Choromanski K, Likhosherstov V, Dohan D, et al. Rethinking attention with performers. arXiv preprint arXiv:2009.14794, 2020 $$

5.1.5 选取代表性query的方法

对查询向量聚类,选取一些具有代表性的值计算自注意力,对于没有计算到得了查询-键对复用代表性的注意力值或使用均匀分布,如下图。

  • 代表模型为Clustered Attention (Vyas et al., 2020)与Informer (Zhou et al., AAAI 2021)

  • Informer中的基本假设是:如果某些query产生了均匀分布的自注意力,则对这些query计算注意力是冗余的。(可以结合图模型进行理解,均匀的注意力意思是当前节点的值要替换为所有节点的平均值,这种替换会掩盖掉原始数据特征,不利于模型训练)
  • Informer中计算注意力矩阵某行最大值与平均值的差距,用来衡量这行注意力是否为冗余的M¯(qi,K)=maxj{qikj⊤d}−1LK∑j=1LKqikj⊤d\bar{M}\left(\mathbf{q}_{i}, \mathbf{K}\right)=\max _{j}\left\{\frac{\mathbf{q}_{i} \mathbf{k}_{j}^{\top}}{\sqrt{d}}\right\}-\frac{1}{L_{K}} \sum_{j=1}^{L_{K}} \frac{\mathbf{q}_{i} \mathbf{k}_{j}^{\top}}{\sqrt{d}}
  • 此处有个疑问是:在模型训练初始阶段,Q,K,V\bf Q,K,V都是接近随机值,此时的注意力矩阵也接近随机,如何衡量是否冗余。

5.1.5 选取代表性key的方法

与上一点相对应的是选取代表性key(压缩key的数量)的方法,代表模型为

  • Memory Compressed Attention (Liu et al., ICLR 2018) 卷积压缩
  • Set Transformer 引入全局节点
  • Linformer 线性变换压缩
  • Poolingformer (Zhang et al., ICML 2021) 池化窗口压缩

模型举例: 以Memory Compressed Attention (MCA) 为例

Peter J. Liu, Mohammad Saleh, Etienne Pot, Ben Goodrich, Ryan Sepassi, Lukasz Kaiser, and Noam Shazeer. Generating Wikipedia by SummarizingLong Sequences, ICLR 2018

使用带步长的卷积压缩K,V\bf K,V的长度。

5.1.6 自注意力矩阵的性质

  • 另外一个点是:Transformer原模型自注意力矩阵通常是低秩的假设(T>DT>D),因为T×TT\times T的自注意力矩阵是由两个T×DT\times D和D×TD\times T矩阵乘积得来。这里或许可以将自注意力矩阵进行低秩+稀疏表示,也可以缩减模型复杂度。
  • 从语言学的角度理解自注意力矩阵的性质:
    • 稀疏性:直接上讲,LL的单词所组成的句子,词语之间的依赖关系应该远小于L2L^2;
    • 局部性:绝大多数单词的关系都是局部性的;
    • 低秩性:词语间的长程依赖关系常以多对一的情形出现,例如语句中的中心词汇与其他词关系较强。剩余词关系较弱。

  • 检查预训练模型中自注意力矩阵的性质
    • 对BERT模型在SNLI数据集上训练结果的自注意力矩阵进行统计结果如下:
      • 下图(a)大部分矩阵是低秩稀疏的;图(b), (c)显示随着序列增长,自注意力矩阵秩增加、稀疏度增加(图上稀疏度指标越低,矩阵越稀疏)

  • 将以上分析纳入对原模型自注意力矩阵的限制上,使用低秩与局部关注约束注意力矩阵,构造低秩的Transformer:

Qipeng Guo, Xipeng Qiu, Xiangyang Xue, Zheng Zhang. Low-Rank and Locality Constrained Self-Attention for Sequence Modeling, IEEE/ACM Transactions on Audio, Speech, and Language Processing, 2019,12. https://ieeexplore.ieee.org/document/8894858
  • 结合先验信息的注意力矩阵,代表性工作有以下几类:
    • 1)建模局部性:在某些attention点上,添加高斯分布平滑注意力
      • Local Transformer (Yang et al., 2018)
      • Gaussian Transformer (Guo et al., 2019)

    • 2)先验来自于浅层注意力:在当前层复用其层注意力,类似于GCN谱方法不同层信息交互都是使用重整化图拉普拉斯矩阵
      • Predictive Attention Transformer (Wang et al., 2020)
      • RealFormer (He et al., 2020)
    • 3)任务相关的先验
      • Conditionally Adaptive Multi-Task Learning (Pilault et al., ICLR2021)

    • 4)只用先验注意力
      • 均匀分布:Average Attention Network (Zhang et al., ACL 2018)
      • 高斯分布:Hard-Coded Gaussian Attention (You et al., ACL 2020)
      • 可学习的:Random Synthesizer (Tay et al., ICML 2021)
  • 模型举例:以Local Transformer为例,在每个query计算的注意力基础上添加一个高斯分布,然后再归一化,
    • Gij=−(j−pi)22σ2G_{i j}=-\frac{\left(j-p_{i}\right)^{2}}{2 \sigma^{2}}

5.1.7 改进多头机制的方法

  • 1)建模多头之间的行为:为了避免多个头学到相同的注意力,在模型中添加正则化方法,鼓励同层多头注意力多样化
    • Li et al., Multi-Head Attention with Disagreement Regularization, EMNLP 2018
    • Talking-head Attention (Sukhbaatar et al., 2020)
    • Collaborative multi-head Attention (Cordonnier et al., 2020)

  • 2)自适应注意力范围:
    • Adaptive Attention Span (Sukhbaatar, ACL 2019)
    • Multi-scale Transformer (Guo et al., AAAI 2020)
  • 3)动态路由机制聚合多头信息
    • Li et al., Information Aggregation for Multi-Head Attention with Routing-by-Agreement, NAACL 2019
    • Gu and Feng, Improving Multi-head Attention with Capsule Networks, NLPCC 2019

  • 4)其他的一些改进
    • Multi-query Attention (Shazeer, 2019):为了提升计算效率,多头之间共享键-值对;
    • Bhojanapalli et al., Low-Rank Bottleneck in Multi-head Attention Models, ICML 2020: establish that head dimension should be decoupled from the number of heads。

模型举例:Multi-scale Transformer,

  • 在注意力模型中,有的注意力关注上一层的局部特征(下图A,类似卷积窗口),有的关注上一层的所有特征(下图B)对应建模长程依赖关系。

  • 对BERT模型训练结果注意力关注范围进行统计:
    • 从下图(a)可以看到,有的头(head 2,3)更多关注局部信息,有的头(head 1)则局部、全局特征都关注;
    • 从下图(b)可以看到,第1层的注意力更多关注局部信息,第6层、12层中,关注局部的头比例会下降。

  • 可将以上信息作为先验引入到模型设计中,在同层上配置不同比例的局部/全局头,在不同层上设计不同关注范围的头。
    • 例如,随着网络的走向深层,局部关注范围的头数量减小,全局关注范围的头数量增加

5.2 位置编码部分

在Transformer模型的自注意力部分,只关注了数据的内容信息,没有关注数据中的位置、顺序信息。例如,一句话中词语交换位置,句子含义可能发生显著变化,为了引入token的位置信息,在原始的模型中,使用的是人工设计、根据位置计算出的正余弦编码。下面介绍关于位置编码的改进相关工作。

  • 1)绝对位置
    • 固定正弦编码(原始模型)
    • 可学习的位置编码(BERT)
    • 可学习的正弦编码
  • 2)相对位置
    • Shaw et al., 2018
    • Transformer-XL
    • T5
  • 3)其他表示:考虑旋转不变性等
    • TUPE
    • Roformer
  • 4)隐含的表示:引入CNN/RNN等具有位置信息的模型
    • 复杂编码
    • R-Transformer
    • CPE

模型举例:Transformer-XL 相对位置编码,在原有q,k\boldsymbol{q,k}计算注意力的基础上,引入相对位置编码Ri−j\boldsymbol{R}_{i-j}并且添加一些参数矩阵W\boldsymbol{W}

Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc Le, and Ruslan Salakhutdinov. Transformer- XL: Attentive Language Models beyond a Fixed-Length Context. ACL 2019

模型举例:Roformer 对query和key乘以旋转位置编码,使得模型编码绝对位置信息,但具有平移不变性

Jianlin Su, Yu Lu, Shengfeng Pan, Bo Wen, and Yunfeng Liu. RoFormer: Enhanced Transformer with Rotary Position Embedding. 2021. arXiv:2104.09864

5.3 层归一化部分

  • 1)层归一化(LN)的位置(区别如上图)
    • Pre-LN:训练更加稳定
    • Post-LN:训练可能会发散,需要学习率的热启动(warm-up),收敛时,性能更好
  • 2)替换LN的方法
    • 自适应归一化:AdaNorm
    • 放缩的ℓ2\ell_2归一化
    • PowerNorm(PN)
  • 3)无需归一化的Transformer
    • ReZero-Transformer

模型举例ReZero-Transformer 在残差连接中添加一个0初始化参数α\alpha,可加快模型收敛速度,能够训练深层模型(128层)

Thomas Bachlechner, Bodhisattwa Prasad Majumder, Huanru Henry Mao, Garrison W. Cottrell, and Julian J. McAuley. ReZero is All You Need: Fast Convergence at Large Depth. 2020

5.4 逐位前馈神经网络

  • 1)激活函数
    • ReLU, GELU (Gaussian Error Linear Unit), GLU (Gated Linear Unit)
  • 2)增大FFN模型容量
  • 3)删去FFN
    • all-Attention layer (Sukhbaatar et al., 2019): 将FFN融入注意力模块
    • Yang et al., On the Sub-layer Functionalities of Transformer Decoder, finding of EMNLP 2020: 指出在编解码Transformer中解码器的FFN可删去,也不会影响性能

模型举例:Product-key memory使用key, value为参数的模块替换原模型中的FFN

Guillaume Lample, Alexandre Sablayrolles, Marc’Aurelio Ranzato, Ludovic Denoyer, and Hervé Jégou. Large Memory Layers with Product Keys. NeurIPS 2019

6 模型整体架构的改进

6.1 轻量化变种

  • Light Transformer (Wu et al., ICLR 2020) :将自注意力替换为卷积与注意力的组合
  • Funnel Transformer :对输入序列长度降采样,处理后再上采样回原长度
  • DeLighT:简化了注意力与FFN
  • 模型举例:在输入时对数据进行DeLighT transformation,先升维,再降维。在FFN中则改为先降维再升维,减小了FFN参数量。与原模型对比如下图

Sachin Mehta, Marjan Ghazvininejad, Srinivasan Iyer, Luke Zettlemoyer, and Hannaneh Hajishirzi. 2020. DeLighT: Very Deep and Light-weight Transformer. arXiv:2008.00623

6.2 基本模块之间的连接

  • Realformer, Predictive Attention Transformer: 不同层上复用注意力信息
  • Transparent Attention: 每层编码器输出都与解码器相连(原模型只有编码器最后一层的输出与解码器连接)
  • Feedback Transformer: 添加从上层到下层的信息传输路径
  • 模型举例:Transparent Attention 将每层编码器输出加权求和,送入解码器。(相当于多了跨层路径,利于梯度反向传播)

Ankur Bapna, Mia Chen, Orhan Firat, Yuan Cao, and Yonghui Wu. Training Deeper Neural Machine Translation Models with Transparent Attention. EMNLP 2018

6.3 自适应计算时间

  • 设计一些条件判断结构,自适应的选择是否使用某些模块

模型举例:Universal Transformer 在模块循环迭代时,添加了动态终止条件

6.4 循环与分层

此处介绍的模型思路是将长序列分割为多个短序列,进行分别处理,然后基于表示缓存整合信息

代表模型包括

  • Dai et al., Transformer-XL: Attentive Language Models beyond a Fixed-Length Context, 2019
  • Rae et al., Compressive Transformers for Long-Range Sequence Modelling, 2020
  • Wu et al., Memformer: The Memory-Augmented Transformer, 2020
  • Yoshida et al., Adding Recurrence to Pretrained Transformers for Improved Efficiency and Context Size, 2020

模型举例:Transformer-XL在训练阶段,每个片段分别进行学习,下一个片段的会关注上一个片段的信息;测试阶段注意力路径如下图绿色线所示。通过分片段的学习,可使得Transformer学习非常长的序列表示。

Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc Le, and Ruslan Salakhutdinov. Transformer- XL: Attentive Language Models beyond a Fixed-Length Context. ACL 2019

Compressive Transformer 与Transformer-XL类似,此处是将之前片段的表示压缩到记忆单元中,在进行新的片段表示学习时,直接关注压缩记忆内容,使得模型当前可以关注到更早的片段信息。

Jack W. Rae, Anna Potapenko, Siddhant M. Jayakumar, Chloe Hillier, and Timothy P. Lillicrap. Compressive Transformers for Long-Range Sequence Modelling. ICLR 2020

  • 层次化 Hierarchical Transformers 分别使用不同 Transformer对不同片段进行表示学习,然后对这些表示继续使用Transformer学习,构成如下金字塔结构。代表模型为:
    • HIBERT (Zhang et al., ACL 2019)
    • TENER (Yan et al., 2019)
    • Transformer in Transformer (Han et al., 2021)

模型举例:HIBERT

Xingxing Zhang, Furu Wei, and Ming Zhou. HIBERT: Document Level Pre-training of Hierarchical Bidirectional Transformers for Document Summarization. ACL 2019

6.5 替代模型:

自注意力+前馈神经网络的结构是最优的吗?此方面代表模型为:

  • 神经网络架构搜索(NAS):Evolved Transformer; DARTSformer
  • 结构顺序重排:Sandwich Transformer
  • 神经ODE:Macaron Transformer

模型举例:Evolved Transformer 搜索出的神经网络结构,在一些任务上性能高于原始模型

7 预训练模型

  • Transformer没有结构性的归纳偏置,使得其容易在小数据集上过拟合。避免过拟合的方法之一是使用预训练模型。知名的NLP预训练模型包括:
    • 只训练编码器:BERT, RoBERTa, BigBird
    • 只训练解码器:GPT系列
    • 编码器解码器:BART, T5, Switch Transformer

  • 按照预训练模型是否与上下文相关、模型架构、预训练方式,这些模型可按照下图方式分类

  • 一些扩展预训练模型:

Pre-trained Models for Natural Language Processing: A Survey, https://arxiv.org/abs/2003.08271

模型举例:BERT只训练Transformer的编码器,自从BERT出现后,Transformer成为NLP预训练模型的主体结构。BERT基于以下两种自监督学习方式训练:

  • 带掩膜的语言模型(MLM)
  • 下句话的预测(NSP)

Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. HLT-NAACL 2019

GPT只训练Transformer的解码器,训练基于完成语言建模任务--最大化数据似然

Alec Radford, Karthik Narasimhan, Tim Salimans, and Ilya Sutskever. Improving language understanding by generative pre-training. 2018

T5训练完整的Transformer,也是基于预测屏蔽掉输入语句中的词汇

Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, and Peter J. Liu. 2020. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv:1910.10683

8 其他领域应用

  • 自然语言处理NLP Transformer, BERT, Compressive Transformer, TENER, FLAT
  • 计算机视觉CV Image Transformer, DETR, ViT, Swin Transformer, ViViT
  • 音频Audio Speech Transformer, Streaming Transformer, Reformer-TTS, Music Transformer
  • 多模态Multimodal VisualBERT, VLBERT, VideoBERT, M6, Chimera, DALL-E, CogView

8.1 Vision Transformer (ViT)

  • 把图像拆分为16x16的小块,每个小块当成一个token,使用Transformer对图像进行表示学习,在不同图像任务上都去得了不错的进展。

Dosovitskiy, Alexey, et al. "An image is worth 16x16 words: Transformers for image recognition at scale." arXiv preprint arXiv:2010.11929 (2020)

8.2 MusicBERT

  • 输入数据的一些特征,作线性变换后接位置编码,之后使用Transformer对音乐信号进行表示学习。

Zeng, Mingliang, et al. "MusicBERT: Symbolic Music Understanding with Large-Scale Pre-Training." arXiv preprint arXiv:2106.05630 (2021).

8.3 NLP 命名实体识别NER

  • 识别句子中词的词性、类别需要关注词与词之间的有向距离,例如,Inc.之前很可能是某组织名字,in后很可能是时间或地点。

对Transformer模型的两点观察:

  • 1)原模型的位置编码不能反映有向距离;
  • 2)原模型的注意力被平滑以关注更多词汇,但在NER中,稀疏注意力可能是更合适的。

模型举例:TENER提出带有方向性的位置编码方式

  • Rt,R−t=[sin⁡(c0t)cos⁡(c0t)⋮sin⁡(cd2−1t)cos⁡(cd2−1t)],[−sin⁡(c0t)cos⁡(c0t)⋮−sin⁡(cd2−1t)cos⁡(cd2−1t)]R_{t}, R_{-t}=\left[\begin{array}{c} \sin \left(c_{0} t\right) \\ \cos \left(c_{0} t\right) \\ \vdots \\ \sin \left(c_{\frac{d}{2}-1} t\right) \\ \cos \left(c_{\frac{d}{2}-1} t\right) \end{array}\right],\left[\begin{array}{c} -\sin \left(c_{0} t\right) \\ \cos \left(c_{0} t\right) \\ \vdots \\ -\sin \left(c_{\frac{d}{2}-1} t\right) \\ \cos \left(c_{\frac{d}{2}-1} t\right) \end{array}\right]
  • 去掉注意力矩阵对维度的归一化Dk\sqrt{D_k},以使得注意力更加sharp
  • 模型结构如下图:

  • 结果如下

Hang Yan, Bocao Deng, Xiaonan Li, Xipeng Qiu. TENER: Adapting Transformer Encoder for Named Entity Recognition, https://arxiv.org/abs/1911.04474

在视频讲座中还列举了一些Transformer的其他应用:

  • 中文NER
  • 与知识图谱结构化数据结合: Word-knowledge Graph
    • Tianxiang Sun, Yunfan Shao, Xipeng Qiu, Qipeng Guo, Yaru Hu, Xuanjing Huang, Zheng Zhang, CoLAKE: Contextualized Language and Knowledge Embedding, COLING 2020, https://arxiv.org/abs/2010.00309
  • 多模态应用:VL-BERT

9 总结

  • 本短教程综述文章中对Transformer变体模型的分类总结

  • 未来方向:
    • 深度学习模型发展历史:CNN→RNN→Transformer→? CNN \rightarrow RNN \rightarrow Transformer \rightarrow ?
    • 目前对于Transformer改进工作包括
      • 计算效率
      • 突破序列长度限制
      • 避免过拟合
      • 预训练模型
    • 未来可能的研究方向
      • Transformer模型容量显著高于CNN/RNN,关于其理论解释有待研究
      • 替代模型
      • 通用的多模态模型
  • 最后在视频中邱老师还介绍了他们组开源的中文自然语言处理框架fastNLP

 Make Transformer Great Again!\Large \text{ Make Transformer Great Again!} \\

本教程链接

https://www.bilibili.com/video/BV1sU4y1G7CN?t=12283

本教程slides

http://valser.org/webinar/slid

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值