首页
归档
关于
留言
Search
1
曹頫骚扰驿站获罪始末
177 阅读
2
业余无线电波段划分
92 阅读
3
Transformer综述
67 阅读
4
理解Transformer
53 阅读
5
即使是养宠物,也要保持敬畏生命的态度
45 阅读
科学技术
社会人文
MoCuishle
登录
Search
标签搜索
思考
女朋友
社会
政治
人文
科学
图像处理
技术
小说
OpenCV
C++
红楼梦
机器学习
深度学习
哲学
文化
Linyer
累计撰写
31
篇文章
累计收到
1
条评论
首页
栏目
科学技术
社会人文
MoCuishle
页面
归档
关于
留言
搜索到
9
篇与
的结果
2021-11-23
理解Transformer
Transformer是一个利用注意力机制来提高模型训练速度的模型。关于注意力机制可以参看这篇文章,trasnformer可以说是完全基于自注意力机制的一个深度学习模型,因为它适用于并行化计算,和它本身模型的复杂程度导致它在精度和性能上都要高于之前流行的RNN循环神经网络。那什么是transformer呢?你可以简单理解为它是一个黑盒子,当我们在做文本翻译任务是,我输入进去一个中文,经过这个黑盒子之后,输出来翻译过后的英文。那么在这个黑盒子里面都有什么呢?里面主要有两部分组成:Encoder 和 Decoder当我输入一个文本的时候,该文本数据会先经过一个叫Encoders的模块,对该文本进行编码,然后将编码后的数据再传入一个叫Decoders的模块进行解码,解码后就得到了翻译后的文本,对应的我们称Encoders为编码器,Decoders为解码器。那么编码器和解码器里边又都是些什么呢?细心的同学可能已经发现了,上图中的Decoders后边加了个s,那就代表有多个编码器了呗,没错,这个编码模块里边,有很多小的编码器,一般情况下,Encoders里边有6个小编码器,同样的,Decoders里边有6个小解码器。我们看到,在编码部分,每一个的小编码器的输入是前一个小编码器的输出,而每一个小解码器的输入不光是它的前一个解码器的输出,还包括了整个编码部分的输出。那么你可能又该问了,那每一个小编码器里边又是什么呢?我们放大一个encoder,发现里边的结构是一个自注意力机制加上一个前馈神经网络。我们先来看下self-attention是什么样子的。我们通过几个步骤来解释:1、首先,self-attention的输入就是词向量,即整个模型的最初的输入是词向量的形式。那自注意力机制呢,顾名思义就是自己和自己计算一遍注意力,即对每一个输入的词向量,我们需要构建self-attention的输入。在这里,transformer首先将词向量乘上三个矩阵,得到三个新的向量,之所以乘上三个矩阵参数而不是直接用原本的词向量是因为这样增加更多的参数,提高模型效果。对于输入X1(机器),乘上三个矩阵后分别得到Q1,K1,V1,同样的,对于输入X2(学习),也乘上三个不同的矩阵得到Q2,K2,V2。2、那接下来就要计算注意力得分了,这个得分是通过计算Q与各个单词的K向量的点积得到的。我们以X1为例,分别将Q1和K1、K2进行点积运算,假设分别得到得分112和96。3、将得分分别除以一个特定数值8(K向量的维度的平方根,通常K向量的维度是64)这能让梯度更加稳定,则得到结果如下:4、将上述结果进行softmax运算得到,softmax主要将分数标准化,使他们都是正数并且加起来等于1。5、将V向量乘上softmax的结果,这个思想主要是为了保持我们想要关注的单词的值不变,而掩盖掉那些不相关的单词(例如将他们乘上很小的数字)6、将带权重的各个V向量加起来,至此,产生在这个位置上(第一个单词)的self-attention层的输出,其余位置的self-attention输出也是同样的计算方式。将上述的过程总结为一个公式就可以用下图表示:self-attention层到这里就结束了吗?还没有,论文为了进一步细化自注意力机制层,增加了“多头注意力机制”的概念,这从两个方面提高了自注意力层的性能。第一个方面,他扩展了模型关注不同位置的能力,这对翻译一下句子特别有用,因为我们想知道“it”是指代的哪个单词。第二个方面,他给了自注意力层多个“表示子空间”。对于多头自注意力机制,我们不止有一组Q/K/V权重矩阵,而是有多组(论文中使用8组),所以每个编码器/解码器使用8个“头”(可以理解为8个互不干扰自的注意力机制运算),每一组的Q/K/V都不相同。然后,得到8个不同的权重矩阵Z,每个权重矩阵被用来将输入向量投射到不同的表示子空间。经过多头注意力机制后,就会得到多个权重矩阵Z,我们将多个Z进行拼接就得到了self-attention层的输出:上述我们经过了self-attention层,我们得到了self-attention的输出,self-attention的输出即是前馈神经网络层的输入,然后前馈神经网络的输入只需要一个矩阵就可以了,不需要八个矩阵,所以我们需要把这8个矩阵压缩成一个,我们怎么做呢?只需要把这些矩阵拼接起来然后用一个额外的权重矩阵与之相乘即可。最终的Z就作为前馈神经网络的输入。接下来就进入了小编码器里边的前馈神经网模块了,关于前馈神经网络,网上已经有很多资料,在这里就不做过多讲解了,只需要知道,前馈神经网络的输入是self-attention的输出,即上图的Z,是一个矩阵,矩阵的维度是(序列长度×D词向量),之后前馈神经网络的输出也是同样的维度。以上就是一个小编码器的内部构造了,一个大的编码部分就是将这个过程重复了6次,最终得到整个编码部分的输出。然后再transformer中使用了6个encoder,为了解决梯度消失的问题,在Encoders和Decoder中都是用了残差神经网络的结构,即每一个前馈神经网络的输入不光包含上述self-attention的输出Z,还包含最原始的输入。上述说到的encoder是对输入(机器学习)进行编码,使用的是自注意力机制+前馈神经网络的结构,同样的,在decoder中使用的也是同样的结构。也是首先对输出(machine learning)计算自注意力得分,不同的地方在于,进行过自注意力机制后,将self-attention的输出再与Decoders模块的输出计算一遍注意力机制得分,之后,再进入前馈神经网络模块。以上,就讲完了Transformer编码和解码两大模块,那么我们回归最初的问题,将“机器学习”翻译成“machine learing”,解码器输出本来是一个浮点型的向量,怎么转化成“machine learing”这两个词呢?是个工作是最后的线性层接上一个softmax,其中线性层是一个简单的全连接神经网络,它将解码器产生的向量投影到一个更高维度的向量(logits)上,假设我们模型的词汇表是10000个词,那么logits就有10000个维度,每个维度对应一个惟一的词的得分。之后的softmax层将这些分数转换为概率。选择概率最大的维度,并对应地生成与之关联的单词作为此时间步的输出就是最终的输出啦!!假设词汇表维度是6,那么输出最大概率词汇的过程如下:以上就是Transformer的框架了,但是还有最后一个问题,我们都是到RNN中的每个输入是时序的,是又先后顺序的,但是Transformer整个框架下来并没有考虑顺序信息,这就需要提到另一个概念了:“位置编码”。Transformer中确实没有考虑顺序信息,那怎么办呢,我们可以在输入中做手脚,把输入变得有位置信息不就行了,那怎么把词向量输入变成携带位置信息的输入呢?我们可以给每个词向量加上一个有顺序特征的向量,发现sin和cos函数能够很好的表达这种特征,所以通常位置向量用以下公式来表示:最后祭出这张经典的图,最初看这张图的时候可能难以理解,希望大家在深入理解Transformer后再看这张图能够有更深刻的认识。Transformer就介绍到这里了,后来的很多经典的模型比如BERT、GPT-2都是基于Transformer的思想。我们有机会再详细介绍这两个刷新很多记录的经典模型。文章转载自知乎@Jason:十分钟理解Transformer
2021年11月23日
53 阅读
0 评论
0 点赞
2021-11-23
Transformer综述
Transformer 在自然语言处理、计算机视觉、音频处理等许多人工智能领域都取得了巨大的成功,也吸引了学术界和行业研究人员的大量兴趣。到目前为止,已经有各种各样的 Transformer 变体(又名 X-former)被提出,但是,关于这些 Transformer 变体的系统而全面的文献综述仍然缺失。 这篇综述对各种 X-former 进行了全面介绍。这篇综述首先简要介绍了原版 Transformer,然后提出了一种新的 X-former 分类法。接着从架构修改、预训练、应用三个角度介绍各种 X-former。最后,概述了未来研究的一些潜在方向。论文标题:A Survey of Transformers论文作者Tianyang Lin, Yuxin Wang, Xiangyang Liu, Xipeng Qiu论文链接https://arxiv.org/abs/2106.04554引言Transformer 最初是作为机器翻译的 Seq2Seq 模型提出的。后来的工作表明,基于 Transformer 的预训练模型 (PTM) 可以在各种任务上实现 SOTA。因此,Transformer,特别是 PTM,已成为 NLP 中的首选架构。除了语言相关的应用,Transformer 还被 CV,音频处理甚至其他学科采用。在过去几年中提出了各种 Transformer 变体(又名 X-former),这些 X-former 也从不同的角度改进了原版 Transformer。模型效率。应用 Transformer 的一个关键挑战是其处理长序列的效率较低,这主要是由于 self-attention 的计算和内存复杂性。改进方法包括轻量化注意力模块(例如稀疏注意力)和分而治之的方法(例如循环和分层机制)。模型泛化。由于 Transformer 是一种灵活的架构,并且对输入数据的结构偏差几乎没有假设,因此很难在小规模数据上进行训练。改进方法包括引入结构偏差或正则化,对大规模未标记数据进行预训练等。模型适配。这一系列工作旨在使 Transformer 适应特定的下游任务和应用程序。在这篇综述中,我们旨在全面回顾 Transformer 及其变体。虽然我们可以根据上述观点来分类 X-former,但许多现有的 X-former 可能会解决一个或几个问题。例如,稀疏注意力不仅降低了计算复杂度,而且在输入数据上引入了结构先验以缓解小数据集上的过拟合问题。因此,对现有的各种 X-former 进行分类,并主要根据它们改进原版 Transformer 的方式提出新的分类法:架构修改、预训练和应用。原版 TransformerTransformer 分类迄今为止,已经从三个角度提出了基于原版 Transformer 的各种模型:架构修改类型、预训练方法和应用程序。如图:详细的 Transformer 分类如下图:模型层面2.1 注意力机制Self-attention 在 Transformer 中扮演着重要的角色,但在实际应用中存在两个挑战。复杂性。self-attention 的复杂度是 。因此,在处理长序列时 Attention 模块会成为瓶颈。结构先验。Self-attention 不假设对输入有任何结构性偏见。甚至顺序信息也需要从训练数据中学习。因此,无预训练的 Transformer 通常很容易在小型或中等规模的数据上过拟合。Attention 机制的改进可以分为几个方向:稀疏注意力。这一系列工作将稀疏偏差引入 Attention 机制,从而降低了复杂性。线性化注意力。这一系列工作将注意力矩阵与核特征图分解,然后以相反的顺序计算注意力以实现线性复杂度。原型和内存压缩。这类方法减少了查询或键值记忆对的数量,以减少注意力矩阵的大小。低秩的自注意力。这一系列工作捕获了 Self-attention 的低秩属性。先验注意力。该研究领域探索用先验的注意力分布来补充或替代标准注意力。改进的多头机制。这一系列工作探索了多个不同的多头(Multi-head)机制。2.1.1 Sparse Attention 稀疏注意力在标准的自注意力机制中,每个 token 都需要关注所有其他 token。然而,据观察,对于经过训练的 Transformer,学习到的注意力矩阵 A 在大多数数据点上通常非常稀疏。因此,可以通过结合结构偏差来限制每个查询关注的查询键对的数量来降低计算复杂度。从另一个角度来看,标准注意力可以被视为一个完整的二分图,其中每个查询从所有内存节点接收信息并更新其表示。稀疏注意力可以被认为是一个稀疏图,其中删除了节点之间的一些连接。基于确定稀疏连接的指标,我们将这些方法分为两类:基于位置的稀疏注意力和基于内容的稀疏注意力。2.1.1.1 基于位置的稀疏注意力在基于位置的稀疏注意力中,注意力矩阵根据一些预定义的模式受到限制。虽然这些稀疏模式以不同的形式变化,但我们发现其中一些可以分解为一些原子稀疏模式。原子稀疏注意力:全局注意力(Global)、带状注意力(Band)、扩张注意力(Dilated)、随机注意力(Random)、块局部注意力(Block Local);复合稀疏注意力:现有的稀疏注意力通常由以上原子模式中的一种以上组成。如图:拓展稀疏注意力:除了上述模式,一些现有的研究探索了特定数据类型的扩展稀疏模式。对于文本数据,有 BP-Transformer;还有一些视觉数据的扩展,如 Image Transformer 和 Axial Transformer。如图:2.1.1.2 基于内容的稀疏注意力另一行工作基于输入内容创建稀疏图,即稀疏连接以输入为条件。构建基于内容的稀疏图的一种直接方法是选择那些可能与给定查询具有较大相似性分数的键。为了有效地构建稀疏图,我们可以递归到最大内积搜索 (MIPS) 问题,即尝试通过查询找到具有最大点积的键,而无需计算所有点积项。2.1.2 线性注意力线性化注意力是一类用 近似或替换非标准化注意力矩阵 的方法,其中 是按行方式应用的特征图。因此,非归一化注意力矩阵的计算可以通过计算 来线性化,如图:该模型通过聚合(由特征映射的)键和值的外积表示的关联来维护内存矩阵,然后通过将内存矩阵与具有适当归一化的特征映射查询相乘来检索值。这种方法有两个关键组件:1)特征图 ;2)聚合规则。2.1.3 查询原型和内存压缩除了使用稀疏注意力或基于内核的线性注意力之外,还可以通过减少查询或键值对的数量来降低注意力的复杂性,这分别产生了查询原型和内存压缩方法。使用原型查询的注意力:在查询原型设计中,几个查询原型作为计算注意力分布的主要来源。该模型要么将分布复制到表示的查询的位置,要么用离散的均匀分布填充这些位置。压缩键值内存的注意力:可以通过在应用注意力机制之前减少键值对的数量来降低复杂性。2.1.4 低秩的自注意力一些经验和理论分析报告称,自注意力矩阵通常是低秩的。这个属性的含义是双重的:1)低秩属性可以用参数化显式建模;2) 可以用低秩近似代替自注意力矩阵。2.1.5 先验的注意力注意力机制通常将预期的注意力值输出为向量的加权和,其中权重是值上的注意力分布。传统上,分布是从输入生成的(例如,原版 Transformer 中的 )。作为一般情况,注意力分布也可以来自其他来源,我们称之为先验的。预先注意分布可以补充或替代输入产生的分布。我们将注意力的这种表述抽象为具有先验的注意力,如图所示。在大多数情况下,两个注意力分布的融合可以通过在应用 softmax 之前计算对应于先验注意力和生成注意力的分数的加权和来完成。模型位置先验:某些类型的数据(例如,文本)可以表现出对位置的强烈偏好。此属性可以显式编码为先验注意力。从下层模块先验:在 Transformer 架构中,经常观察到相邻层的注意力分布相似。因此,很自然地将前一层的注意力分布作为注意力计算的先验。多任务适配器先验:适配器是依赖于任务的训练模块,它们附加在预训练网络的特定位置,用于跨任务高效参数共享。仅注意力先验:一些工作探索了使用独立于输入之间成对交互的注意力分布。 换句话说,他们的模型只利用了先验注意力分布。2.1.6 改进的多头机制多头(Multi-head)注意力的吸引力在于能够共同关注来自不同位置的不同表示子空间的信息。然而,没有机制可以保证不同的注意力头确实捕捉到不同的特征。头部行为建模:使用多头注意力的一个基本动机是允许模型共同关注来自不同位置的不同表示子空间的信息。然而,在 原版 Transformer 中,没有明确的机制来保证注意力头之间的不同行为,也没有任何机制让头相互交互。有 一系列工作致力于通过引入更复杂的机制来改进多头机制,这些机制指导不同注意力头的行为或允许跨注意力头的交互。跨度受限的多头:原版注意力采用完全注意力跨度假设,其中查询可以关注所有键值对。然而,经常观察到,一些头主要将注意力集中在局部环境中,而其他一些头则关注更广泛的环境。因此,限制注意力范围可能对于局部性和效率方面都有益处。精细聚合的多头:在每个注意力头计算其输出表示后,原版多头注意力将这些表示连接起来,然后对连接后的表示应用线性变换以获得最终的输出表示。有人可能会争辩说,这种简单的逐个聚合范式并没有充分利用多头注意力的表现力,而使用更复杂的聚合更为可取。因此有人提出了使用为胶囊网络设计的路由方法,注意力头的输出首先转化为输入胶囊,然后经过迭代路由过程得到输出胶囊。然后将输出胶囊连接起来作为多头注意力的最终输出。2.2 位置表示很容易验证卷积和循环网络不是置换等变的。然而,Transformer 中的自注意力模块和位置前馈层都是置换等变的,这可能在建模时成为一个问题,而不是需要输入结构的集合输入问题。例如,在对文本序列建模时,单词的顺序很重要,因此在 Transformer 架构中正确编码单词的位置至关重要。因此,需要额外的机制将位置信息注入到 Transformer 中。一种常见的设计是首先使用向量表示位置信息,然后将向量作为附加输入注入模型。2.2.1 绝对位置表示在原版 Transformer 中,位置信息被编码为绝对正弦位置编码。对于每个位置索引,编码是一个向量,其中每个元素都是一个正弦函数,具有预定义频率的索引。另一种表示绝对位置的方法是为每个位置学习一组位置嵌入。与手工制作的位置表示相比,学习嵌入更加灵活,因为位置表示可以通过反向传播适应任务。但是嵌入的数量被限制在训练前确定的最大序列长度,这使得这种方法不再具有归纳性,即无法处理比训练时看到的序列更长的序列。2.2.2 相对位置表示另一系列工作侧重于表示 token 之间的位置关系,而不是单个 token 的位置。直觉认为,在自注意力中输入元素(方向和距离)之间的成对位置关系可能比元素的位置更有益。遵循这一原则的方法称为相对位置表示。2.2.3 其他表示一些研究已经探索使用包含绝对和相对位置信息的混合位置表示。Transformer with Untied Position Encoding (TUPE) 将注意力分数的计算重新设计为内容到内容项、绝对位置到位置项和表示相对位置关系的偏置项的组合。2.2.4 没有显式编码的位置表示Wang 等人没有明确引入额外的位置编码,建议通过将嵌入推广到位置上的连续(复值)函数来对词嵌入中的位置信息进行编码。2.2.5 Transformer decoder 的位置表示值得注意的是,mask的self-attention不是置换等变的。因此,仅利用 Transformer 解码器的模型具有在不包含显式位置表示的情况下感知位置信息的潜力。语言建模任务的一些实证结果证实了这一点,作者发现删除位置编码甚至可以提高性能。2.3 层归一化层归一化(Layer Normalization, LN)以及残差连接被认为是一种稳定深度网络训练的机制(例如,减轻不适定梯度和模型退化)。 有一些工作可以分析和改进 LN 模块。2.3.1 LN 的位置在原版 Transformer 中,LN 层位于残差块之间,称为 post-LN。 后来的 Transformer 实现将 LN 层放在注意力或 FFN 之前的残差连接内,在最后一层之后有一个额外的 LN 来控制最终输出的大小,这被称为 pre-LN。Pre-LN 已被许多后续研究和实现所采用,区别如图所示。2.3.2 LN 的替代徐等人凭经验观察到LN模块中的可学习参数在大多数实验中不起作用,甚至增加了过度拟合的风险。他们从受控实验中进一步得出结论,正向归一化不是 LN 适用于 Transformer 的原因。从分析和实验中可以得出结论,均值和方差的导数重新居中并重新缩放梯度,并在 LN 中发挥重要作用。因此,他们提出了 AdaNorm,一种没有可学习参数的归一化技术。Nguyen 和 Salazar 建议用缩放的 l2 归一化替换 LN 模块。沈等人讨论了为什么批归一化 (Bath Normalization, BN) 在文本数据的 Transformer 中表现不佳,并得出结论,BN 的显着性能下降源于与其批量统计相关的不稳定性。因此,他们提出了对 BN 进行三个修改的 PowerNorm (PN):1)它放宽了零均值归一化;2) 它使用信号的二次均值,而不是方差;3) 它使用二次均值的运行统计,而不是使用每批统计。2.3.3 无归一化的Transformer除了 LN,还有另一种机制可以构建更深层次的神经网络。ReZero 用可学习的残差连接替换 LN 模块。验证表明用 ReZero 机制替换 Transformer 中的 LN 可以为输入信号引入更好的动态等距,并导致更快的收敛。2.4 位置前馈网络位置前馈网络 (FFN) 层对于 Transformer 实现良好性能很重要。董等人观察到,简单地堆叠自我注意模块会导致等级崩溃问题,导致 token 均匀性归纳偏差,而前馈层是缓解此问题的重要构建块之一。各种工作都探索了对 FFN 模块的修改。FFN 中的激活函数:原版 Transformer 采用整流线性单元 (ReLU) 激活来实现两个 FFN 层之间的非线性关系。随着时间的推移,一些研究探索了除 ReLU 之外的不同激活,比如 GELU 和 GLU。调整 FFN 以获得更大容量:有几项工作专注于扩展 FFN 以获取更大的模型容量。基本思想是用具有更多参数的类似结构替换 FFN。删除 FFN 层:值得注意的是,有人可能会争辩说,在某些情况下,可以完全删除 FFN 层,从而简化网络。架构层面3.1 使 Transformer 轻量化除了在模块级别为减轻计算开销所做的努力之外,还有一些尝试通过更高级别的修改来使 Transformer 变得轻量级。类似于将注意力分解为局部约束注意力和低阶全局注意力的低阶自注意力,Lite Transformer 建议将 Transformer 中的每个注意力模块替换为两个分支结构,其中一个分支使用注意力来捕获远程上下文,而另一个分支使用深度卷积和线性层来捕获局部依赖关系。该架构在模型大小和计算方面都是轻量级的,因此更适合移动设备。Funnel Transformer 利用类似漏斗的 encoder 架构,其中隐藏序列的长度使用沿序列维度的池化逐渐减少,然后使用上采样恢复。与普通的 Transformer 编码器相比,该架构有效地减少了 FLOP 和内存。自然,人们可以使用这种架构使用相同的计算资源构建更深或更广的模型。DeLighT 用 DeLighT 块替换了标准的 Transformer 块,该块由三个子模块组成:1)“扩展和减少”DeLightT 转换模块,以低计算要求学习更广泛的表示;2)单头自注意力学习成对交互;3)一个轻量级的“reduce-and-expand”FFN。他们还提出了一种逐块缩放策略,允许输入附近的更浅和更窄的块以及输出附近更宽和更深的块。诱导网络比普通 Transformer 深得多,但参数和操作更少。3.2 加强跨块连接在原版 Transformer 中,每个块都将前一个块的输出作为输入并输出一系列隐藏表示。人们可能对创建更多路径感兴趣,输入信号可以沿着这些路径通过网络。Realformer 和 Predictive Attention Transformer 重用前一个块的注意力分布来引导当前块的注意力。这可以看作是在相邻的 Transformer 块之间创建了一条前向路径。3.3 自适应计算时间与大多数神经模型一样,原版 Transformer 使用固定(学习过的)计算程序来处理每个输入。一个有趣且有前途的修改是使计算时间以输入为条件,即将自适应计算时间 (Adaptive Computation Time, ACT) 引入 Transformer 模型。此类修改可能会带来以下优势:困难示例的特征细化。对于难以处理的数据,浅层表示可能不足以完成手头的任务。应用更多计算来获得更深入、更精细的表示会更理想。简单示例的效率。在处理简单的示例时,浅层表示可能足以完成任务。在这种情况下,如果网络可以学习使用减少的计算时间来提取特征,那将是有益的。如图所示是三种 ACT 范式:3.4 分治策略的 Transformer序列长度上的自注意力的二次复杂度会显着限制一些下游任务的性能。例如,语言建模通常需要远程的上下文。、另一种处理长序列的有效方法是使用分治策略,即将输入序列分解为可以由 Transformer 或 Transformer 模块有效处理的更细段。我们确定了两类有代表性的方法,循环和分层 Transformer,如图所示。这些技术可以被理解为 Transformer 模型的包装器,其中 Transformer 作为一个基本组件,被重用以处理不同的输入段。3.4.1 循环 Transformer在循环 Transformer 中,会维护一个缓存以合并历史信息。在处理一段文本时,网络从缓存中读取作为附加输入。处理完成后,网络通过简单地复制隐藏状态或使用更复杂的机制来写入内存。3.4.2 分层 Transformer分层 Transformer 将输入分层分解为更细粒度的元素。低级特征首先被送到 Transformer 编码器,产生输出表示,然后聚合(使用池化或其他操作)以形成高级特征,然后由高级 Transformer 处理。这类方法可以理解为一个层次抽象的过程。这种方法的优点有两个:1)分层建模允许模型以有限的资源处理长输入;2)它有可能产生更丰富的对任务有益的表征。3.5 探索替代架构尽管 Transformer 架构取得了成功,但人们可能会质疑当前的 Transformer 架构是否是最佳的。有趣的是,有几项研究探索了 Transformer 的替代架构。卢等人将 Transformer 解释为多粒子动态系统中对流扩散方程的数值常微分方程 (Ordinary Differential Equation, ODE) 求解器,并设计 Macaron Transformer,它将每个 Transformer 块替换为 FFN-attention-FFN 变体。Sandwich Transformer 探索重组注意力模块和 FFN 模块,使得注意力模块主要位于较低层,FFN 模块主要位于较高层。诱导模型在不增加参数、内存或训练时间的情况下,改善了多语言建模基准的困惑度。掩码注意网络 (Mask Attention Network, MAN) 在每个 Transformer 块中的自注意模块之前添加了一个动态掩码注意模块。掩码以标记表示、标记和头部索引之间的相对距离为条件。所提出的动态掩码注意力被证明可以有效地对文本数据中的局部性进行建模,并且诱导模型在机器翻译和抽象摘要中始终优于Baseline模型。值得注意的是,有一系列工作使用神经架构搜索 (NAS) 来搜索替代 Transformer 架构。Evolved Transformer (ET) 采用基于进化的架构搜索,标准的 Transformer 架构为初始群体提供种子。搜索到的模型在多个语言任务上表现出对 Transformer 的持续改进。作为另一项代表性工作,DARTSformer 应用可微架构搜索(DARTS),结合多分裂可逆网络和反向传播重建算法以提高内存效率。由此产生的模型始终优于标准 Transformer,并且与更大的 ET 模型相比具有优势,并且搜索成本显着降低。预训练 Transformer作为与卷积网络和循环网络的一个关键区别,Transformer 不对数据的结构做出任何假设。一方面,这有效地使 Transformer 成为一种非常通用的架构,具有捕获不同范围依赖关系的潜力。另一方面,这使得 Transformer 在数据有限时容易过拟合。缓解此问题的一种方法是在模型中引入归纳偏置。最近的研究表明,在大型语料库上预训练的 Transformer 模型可以学习对下游任务有益的通用语言表示。这些模型是使用各种自监督的目标进行预训练的,例如,根据上下文预测掩码。在对模型进行预训练后,可以简单地在下游数据集上对其进行微调,而不是从头开始训练模型。为了说明在预训练中使用 Transformers 的典型方法,我们确定了一些预训练的 Transformer 并将它们分类如下:仅 Encoder。一系列工作使用 Transformer Encoder 作为其主干架构。BERT是典型的 PTM,通常用于自然语言理解任务。它利用掩码语言建模 (MLM) 和下一句预测 (NSP) 作为自监督训练目标。RoBERTa 进一步调整了 BERT 的训练并删除了 NSP 目标,因为 NSP 被发现会损害下游任务的性能。仅 Decoder。一些研究侧重于对语言建模的 Transformer 解码器进行预训练。例如,生成式预训练 Transformer (GPT) 系列(即 GPT 、GPT-2 和 GPT-3 )专门用于缩放预训练的 Transformer 解码器,并且最近说明了大规模 PTM 可以通过将任务和示例作为构造提示输入模型来在低资源场景下实现不错的功能。Encoder-Decodr。也有采用 Transformer Encodr-Decoder 作为整体架构的 PTM。BART 将 BERT 的去噪目标扩展到 Encoder-Decoder架构。使用 Encoder-Decoder 架构的好处是,诱导模型具备执行自然语言理解和生成的能力。T5 采用类似的架构,是最早在下游任务中使用特定于任务的文本前缀的研究之一。一些 Transformer 架构变体也可以应用于基于 Transformer 的 PTM。例如, BigBird 就是一个基于编码器的 PTM,它使用基于复合位置的稀疏注意力来启用长序列输入。GPT-3 在自注意力模块中使用交替的密集和局部带状稀疏注意力。Switch Transformer 是一种基于 Encoder 的 PTM,它用混合专家层替换了 FFN 层,并且可以增加参数数量,同时保持每个示例的 FLOPs 不变。Transformer 的应用Transformer 最初是为机器翻译而设计的,但由于其灵活的架构,已被广泛应用于 NLP 之外的各个领域,包括 CV 和音频处理。计算机视觉。Transformer 还适用于各种视觉任务,例如图像分类、物体检测、图像生成和视频处理。多模态应用。由于其灵活的架构,Transformer 还被应用于各种多模态场景,例如视觉问答、视觉常识推理、字幕生成、语音到文本翻译和文本到图像生成。总结和未来的方向在这篇综述中,我们对 X-former 进行了全面概述,并提出了一个新的分类法。现有的大部分工作都是从不同的角度对 Transformer 进行改进,例如效率、泛化和应用。改进包括结合结构先验、设计轻量级架构、预训练等。尽管 X-former 已经证明了它们在各种任务中的能力,但挑战仍然存在。除了当前的关注点(例如效率和泛化)之外,Transformer 的进一步改进可能在于以下几个方向:理论分析。Transformer 的架构已被证明能够支持具有足够参数的大规模训练数据集。许多工作表明,Transformer 具有比 CNN 和 RNN 更大的容量,因此具有处理大量训练数据的能力。当 Transformer 在足够的数据上进行训练时,它通常比 CNN 或 RNN 具有更好的性能。一个直观的解释是 Transformer 对数据结构的先验假设很少,因此比 CNN 和 RNN 更灵活。然而,理论原因尚不清楚,我们需要对Transformer能力进行一些理论分析。超越注意力的更好的全局交互机制。Transformer 的一个主要优点是使用注意力机制来模拟输入数据中节点之间的全局依赖关系。然而,许多研究表明,对于大多数节点来说,完全注意是不必要的。在某种程度上,无法区分地计算所有节点的注意力是低效的。因此,在有效地对全局交互进行建模方面仍有很大的改进空间。一方面,self-attention 模块可以看作是一个具有动态连接权重的全连接神经网络,它通过动态路由聚合非局部信息。因此,其他动态路由机制是值得探索的替代方法。另一方面,全局交互也可以由其他类型的神经网络建模,例如记忆增强模型。多模态数据统一框架。在许多应用场景中,集成多模态数据对于提高任务性能是有用且必要的。此外,通用人工智能还需要能够捕捉不同模态之间的语义关系。由于 Transformer 在文本、图像、视频和音频方面取得了巨大成功,我们有机会构建一个统一的框架,更好地捕捉多模态数据之间的内在联系。然而,模内和跨模态注意力的设计仍有待改进。最后,我们希望这篇综述成为一个参考,以更好地了解 Transformer 的当前研究进展,并帮助读者进一步改进 Transformer 的各种应用。文章转载自搜狐@王馨月:复旦大学邱锡鹏教授团队:Transformer最新综述
2021年11月23日
67 阅读
0 评论
0 点赞
2021-04-08
手动清理C盘
C盘总是满,第三方软件清不干净,手动清理一下!
2021年04月08日
21 阅读
0 评论
0 点赞
2021-02-05
业余无线电波段划分
业余无线电波段大概划分
2021年02月05日
92 阅读
0 评论
0 点赞
2020-12-29
OpenCV Mat类函数
OpenCV Mat类函数主要作用手册
2020年12月29日
19 阅读
0 评论
0 点赞
1
2