您当前的位置:首页 > 电脑百科 > 电脑知识

一文读懂Transformer

时间:2022-07-11 16:47:01  来源:  作者:数据派THU

Transformer 是第一个完全依赖于自注意力机制来计算其输入和输出的表示的转换模型。

主流的序列到序列模型是基于编码器-解码器的循环或卷积神经网络,注意力机制的提出,优化了编解码器的性能,从而使得网络性能达到最优。利用注意力机制构建出新的网络架构Transformer, 完胜了循环或卷积神经网络。Transformer 是第一个完全依赖于自注意力机制来计算其输入和输出的表示的转换模型。Transformer可以并行训练,训练时间更短。

 

1 Transformer的模型架构

 

序列到序列模型采用的是编码器-解码器结构,编码器将输入序列(,,……,映射成符号表示z=(,,……,,根据给定的Z ,解码器生成输出序列(,,……,,在每一个步长里,模型利用前一个步长中生成的向量和该步长的输入,生成输出符号。

 

Transformer模型架构如图1-1所示,编码器-解码器结构采用堆叠的多头注意力机制加全连接层,图中左边的是编码器结构,右边的是解码器结构:

原创 | 一文读懂Transformer

 

图 1-1 堆叠的编码器-解码器结构(来源:网络)

 

编码器:编码器由6个相同的块结构堆叠而成 N=6,每个块结构进一步分成两个子层:即一个多头的自注意力机制和一个前馈网络全连接层,在块中的每一个子层之后,增加一个归一化层(Add&Norm),每个子层的输出均为归一化的LayerNorm(x + Sublayer(x)),包括词嵌入层,模块中所有子层的输出的维数均为512,即 = 512。

 

解码器:同理,解码器也由6个相同的块结构堆叠而成 N=6,每个块结构在编码器两个子层的基础之上,增加了第三个子层,即增加了一个多头自注意力子层。与编码器类似,在块中的每一个子层之后,增加一个归一化层(Add&Norm)。在解码器端,对解码器堆栈中的自注意力子层进行了修改,以防止位置编码和后续位置编码相关,通过这种掩蔽,确保了对位置i的预测只能依赖于小于i的位置的已知输出。

 

2 Self-attention 自注意力机制

 

Attention 函数将三元组Q(Query)、K(Key)、V(Value) 映射成输出,其中三元组Q(Query)、K(Key)、V(Value)和输出均为向量,输出是V(Value)的加权和,其中的权重是Q(Query)和K(Key)对应的组合计算出来的数值。

 

1)带缩放的点积注意力机制Scaled dot-product attention

 

带缩放的点积注意力机制(Scaled dot-product attention )的公式如下:

原创 | 一文读懂Transformer

 

在上面公式中Q和K中的向量维度都是,V的向量维度是

原创 | 一文读懂Transformer

 

,计算所有K向量和Q向量的点积,分别除以

原创 | 一文读懂Transformer

 

,并应用一个Softmax函数来获得这些值的权重。实际上在self-Attention中,

原创 | 一文读懂Transformer

 

,为了方便将Attention的计算转化为矩阵运算,论文中采用了点积的形式求相似度。常见的计算方法除了点积还有MLP网络,但是点积能转化为矩阵运算,计算速度更快。

 

两个最常用的注意力函数是:加注意力函数(Additive Attention)和点积注意力函数(Dot-product Attention)。除了

原创 | 一文读懂Transformer

 

的缩放因子外,带缩放的点积注意力机制采用的是点积注意力函数,加注意力函数使用具有单个隐含层的前馈网络来计算兼容性函数。虽然这两者在理论复杂度上相似,但点积注意力函数更快,更节省空间,因为它可以使用高度优化的矩阵乘法码来实现。而对于

原创 | 一文读懂Transformer

 

较小的值,这两种机制的性能相似,但在不加大更大

原创 | 一文读懂Transformer

 

的值的情况下,加注意力函数优于点积注意力函数。对于较大的

原创 | 一文读懂Transformer

 

值,点积相应变大,将Softmax函数推到梯度极小的区域。为了抵消这种影响,我们通过

原创 | 一文读懂Transformer

 

来缩放点积。

 

Transformer模型在三处采用了多头注意力机制:

 

  • 在编码器-解码器注意力层,Q值来自上一个解码器层,K值和V值来自编码器的输出,从而使得解码器的每一个位置信息均和输入序列的位置信息相关,这种架构模仿了序列到序列模型编解码器注意力机制。
  • 编码器中包括自注意力层,在自注意力层中,Q 值、K值和V值均来自编码器上一层的输出,编码器中的位置信息参与到前一层的位置编码中去。
  • 同理,解码器中的自注意力机制使得解码器中的位置信息均参与到所有位置信息的解码中去。

 

2)全连接前馈网络

 

在Transfomer编码器-解码器架构的每一块中,除了包含多头注意力机制外,还包含一个全连接前馈网络,全连接前馈网络层包含两次ReLU激活函数的线性变换。

原创 | 一文读懂Transformer

 

不同层之间的全连接前馈网络的参数各不相同,模型输入输出的维度是512 = 512, 层内部的维度是2048 ,即= 2048。

 

3)嵌入和Softmax

 

和其它序列到序列的模型相类似,Transformer模型利用词嵌入技术将输入标记和输出标记转化为维度为的向量,采用可训练的线性变换和Softmax函数,将解码器的输出变换成待预测的下一个标记的概率。在Transformer模型中,两个嵌入层和Softmax层之间共享权重矩阵。

 

3 位置编码Positional Encoding

 

由于Transformer模型中既没有递归,也没有卷积,需要获得输入序列精准的位置信息的话,必须插入位置编码。位置编码精准地描述了输入序列中各个单词的绝对和相对位置信息,即在编码器-解码器的底部输入嵌入中注入“位置编码”,位置编码和输入嵌入有相同的维度,所以二者可以实现相加运算,位置编码方式可以有多种,在Transformer模型中采用的是频率不同的三角函数:

原创 | 一文读懂Transformer

 

其中pos 是位置,i是维数,也就是说,位置编码的每个维数都对应于一个正弦曲线。波长从2π到10000·2π的几何变化。之所以选择这个函数是因为假设它使得模型很容易地学习相对位置,对于任何固定偏移量k,

原创 | 一文读懂Transformer

 

可以表示为

原创 | 一文读懂Transformer

 

的线性函数。

 

首先,将自注意力机制和循环卷积网络(RNN )和卷积神经网络(CNN)进行对比,比较它们在变长序列

原创 | 一文读懂Transformer

 

从三个因素来考量采用自注意力机制:首先是每一层计算的复杂程度;其次,是可以并行计算的计算量,用对序列操作的最小数目表示;第三,是网络中最长相关路径的长度。在序列学习任务中,对长序列相关性的学习是关键性的难点问题,前向和后向信号路径的长度往往是影响学习效率的关键因素,输入和输出序列之间的位置越短,前向和后向信号路径则越短,更容易学习到长序列的依赖关系,通过对比网络中输入输出序列位置的最长通路路径,来回答为什么采用自注意力机制来搭建Transformer模型。

原创 | 一文读懂Transformer

 

表 3-1 不同层序列操作的的最大路径长度、每层的复杂性和最小操作数

 

如表3-1所示 :不同层序列操作的的最大路径长度、每层的复杂性和最小操作数。n是序列长度,d是表示维数,k是卷积的核大小,r是受限自注意力中的邻域的大小。在表3-1中,自注意力机制通过

原创 | 一文读懂Transformer

 

操作将序列的位置信息关联起来,而RNN则需要对序列进行

原创 | 一文读懂Transformer

 

次操作。从计算的复杂程度来看,当序列长度n小于表示向量的维度d 时,在机器翻译任务中性能能达到最优。为了提高超长输入序列的计算性能,限制自注意力中的邻域r的大小,从而会使得最长相关路径的长度变为

原创 | 一文读懂Transformer

 

 

卷积核维度为k 的单卷积层无法实现所有输入和输出位置信息的连接,所以要求有

原创 | 一文读懂Transformer

 

层卷积层堆叠,使得最长相关路径的长度变长。通常,CNN的训练成本比RNN的训练成本要高。

 

从表3-1中的对比还可以看出,自注意力机制在复杂程度、并行计算的计算量和网络中最长相关路径的长度三方面均占有优势。

 

4 Transformer 模型的训练

 

4.1训练数据和批次大小

 

在标准的WMT2014英语-德语数据集上进行训练,这个数据集包括大约450万个句子数据对。句子采用字节对编码进行编码,源-目标词汇表中共享大约37000个标记。对于英语-法语,使用了更大的WMT2014英语-法语数据集,由3600万个句子组成,并将标记分割为32000词汇。句子对按近似的序列长度排列在一起。每个训练批都包含一组句子对,其中包含大约25000个源标记和25000个目标标记。

 

4.2 硬件配置

 

使用8 NVIDIAP100 GPU上训练了Transfomer模型,使用超参数的基本模型,每个训练步长大约需要花费0.4秒的时间,对基本模型总共训练了10万步或12个小时。对于大模型,步长时间为1.0秒,大模型训练了30万步(3.5天)。

 

4.3 优化器

采用Adam 优化器,参数设置为h β1 = 0.9, β2 = 0.98,并依据下述公式调整学习率:

原创 | 一文读懂Transformer

 

对应于第一个warmup_steps训练步长,学习率线性增加,在后续步长中,学习率随着步长的平方根成正比例下降,其中,warmup_steps =4000。

 

4.4 正则化

 

在训练过程中采用了三种正则化方法:

 

残差Dropout:在添加子层的输入和归一化之前,将Dropout机制应用于每个子层的输出,同时在编码器-解码器堆叠的嵌入过程和位置编码过程中加入Dropout机制,

原创 | 一文读懂Transformer

 

= 0.1。

 

4.5 训练结果

 

机器翻译

 

在WMT2014英德翻译任务中,Transformer (big)比之前报告的最佳模型(包括集成)高出2.0多个BLEU,获得BLEU分数为28.4。该模型的配置列于表5-2的底部。在8个P100 GPU 上进行训练需要3.5天。甚至基本模型也超过了所有之前发布的模型和集合,训练成本也大幅度缩减。

 

在WMT2014年英法翻译任务中Transformer (big)获得了BLEU分值为 41.0分,优于之前发布的所有其它模型,训练成本降低 1/4。

原创 | 一文读懂Transformer

 

表4.5-1 在英德和英法翻译任务中Transformer模型的BLUE 分值和其它模型BLUE 分值的对比(来源:网络)

 

表4.5-1同时将翻译质量和训练成本与其他模型架构的翻译质量和训练成本进行了比较。通过比较训练时间、所使用的GPU的数量以及对每个GPU5的持续单精度浮点容量的估计来估计用于训练模型的浮点操作的数量。

 

为了评估Transformer模型是否可以推广到其他任务,在英语选区解析上进行了实验。这个任务提出了具体的挑战:输出受到强大的结构约束,且长度远远长于输入。此外,RNN序列对序列模型还无法在小数据体系中获得最为先进的结果。

 

通过在宾夕法尼亚州《华尔街日报》的数据集上训练了大约40K句子,数据模型为

原创 | 一文读懂Transformer

 

的4层Transformer。此外,还在半监督设置下训练它,使用更大的高置信度和伯克利解析器语料库,大约1700万语句。对《华尔街日报》的设置使用了16K标记词汇,对半监督的设置使用了32K标记词汇。

 

结论:Transformer是采用自注意力机制的序列到序列模型,在编码器-解码器架构的神经网络中,用多头自注意力机制取代了RNN 层。对于翻译任务,Transformer的训练速度可以比基于循环层或卷积层的体系架构要快得多。关于2014WMT英德语和WMT2014英法翻译任务,实现了不错的性能。在前一项任务中,Transformer模型的性能甚至优于之前报告的所有其它模型。

 

作者简介

陈之炎,北京交通大学通信与控制工程专业毕业,获得工学硕士学位,历任长城计算机软件与系统公司工程师,大唐微电子公司工程师。目前从事智能化翻译教学系统的运营和维护,在人工智能深度学习和自然语言处理(NLP)方面积累有一定的经验。



Tags:Transformer   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Transformer 是第一个完全依赖于自注意力机制来计算其输入和输出的表示的转换模型。主流的序列到序列模型是基于编码器-解码器的循环或卷积神经网络,注意力机制的提出,优化了...【详细内容】
2022-07-11  Tags: Transformer  点击:(112)  评论:(0)  加入收藏
本文最初发布于 Towards Data Science。 图片由作者提供:Neo4j中的知识图谱简介 在这篇文章中,我将展示如何使用经过优化的、基于转换器的命名实体识别(NER)以及 spaCy 的关系...【详细内容】
2022-03-28  Tags: Transformer  点击:(119)  评论:(0)  加入收藏
但现在,Transformer其实还能替CNN把活给干了,并且干得还不赖。 比如微软亚研院最新提出的Swin Transformer,就在COCO数据集的分割检测任务上来了个跨领域超车,一举达到SOTA。...【详细内容】
2021-03-30  Tags: Transformer  点击:(318)  评论:(0)  加入收藏
使用Transformers库中可用的最新赫尔辛基NLP模型来创建标准化的机器翻译服务在企业环境中需要机器翻译。 至关重要的是,跨国公司必须能够与世界各地的人们共享多种语言的文档...【详细内容】
2020-06-12  Tags: Transformer  点击:(464)  评论:(0)  加入收藏
腾讯宣布开源 Transformer 推理加速工具 TurboTransformers。该工具面向自然语言处理领域中 Transformers 相关模型丰富的线上预测场景,据介绍,其在微信、腾讯云、QQ 看点...【详细内容】
2020-04-26  Tags: Transformer  点击:(230)  评论:(0)  加入收藏
▌简易百科推荐
相信对于各位游戏发烧友来说,此前一定对虚幻引擎这一概念有所耳闻。可以说目前全球市场上绝大多数主流大作的身上都能看到它的影子,包括大家非常熟悉的《绝地求生》、《堡垒之...【详细内容】
2022-09-14  二姑娘的时尚经  今日头条  Tags:虚幻引擎   点击:(48)  评论:(0)  加入收藏
零拷贝技术是一种思想,指的是计算机操作时,CPU不需要先将数据从某处内存复制从某处内存复制到另一个特定区域。可见,零拷贝的特点是 CPU 不全程负责内存中的数据写入其他组件,CP...【详细内容】
2022-09-14  互联共商  网易号  Tags:零拷贝   点击:(45)  评论:(0)  加入收藏
预计9月中下旬到年底,新一代CPU平台和显卡就要联袂登场了,加上这次可能不得不更换的内存,以及已经初露端倪的新型SSD与电源等需求,可谓是一次机箱内的大换血。要进行这样的更新,...【详细内容】
2022-08-17  电脑爱好者    Tags:升级   点击:(71)  评论:(0)  加入收藏
hashCode到底是什么?是不是对象的内存地址?1) 直接用内存地址?目标:通过一个Demo验证这个hasCode到底是不是内存地址public native int hashCode(); co...【详细内容】
2022-08-03  是啊超ya    Tags:HashCode   点击:(58)  评论:(0)  加入收藏
从20世纪80年代第一代操作系统MS DOS算起,OS不过40年的发展史,但随着终端形态的变化,OS的发展也经历了三轮跨越式演变,从固定桌面终端到移动终端,从封闭到开源。OS生态不断成长的...【详细内容】
2022-07-27    电脑报  Tags:电脑软件   点击:(77)  评论:(0)  加入收藏
Transformer 是第一个完全依赖于自注意力机制来计算其输入和输出的表示的转换模型。主流的序列到序列模型是基于编码器-解码器的循环或卷积神经网络,注意力机制的提出,优化了...【详细内容】
2022-07-11  数据派THU    Tags:Transformer   点击:(112)  评论:(0)  加入收藏
“量子计算机”是一种有潜力拥有远优于传统计算机的性能的技术。美国谷歌公司2013年5月16日宣布,将与美国航天局联手购入一台D-Wave 2量子计算机,并建立量子人工智能实验室(Qua...【详细内容】
2022-07-02  薛定谔D家肥猫    Tags:量子计算机   点击:(119)  评论:(0)  加入收藏
隐私计算市场,真的很奇怪厂商对成功案例,讳莫如深客户对具体实践,闭口不谈但这个市场,就这么“隐私”地起来了↓ 01、那么,隐私计算到底是个啥? 隐私计算的核心要义就是【数据...【详细内容】
2022-06-30  特大号    Tags:隐私计算   点击:(124)  评论:(0)  加入收藏
资料推荐:109个shell脚本案例174道运维面试题/128道k8s面试题/108道shell脚本面试题······ 经典的Shell十三问 1. 为何叫做she...【详细内容】
2022-06-30  走进IT学堂    Tags:Shell 脚本   点击:(124)  评论:(0)  加入收藏
如何建立一个有趣的二维码项目和学习 Azure 函数 如果你想学习如何构建 Azure 函数,这里有一个有趣的项目。这个项目有点傻,但是很有教育意义。我们将构建一个二维码生成器,它...【详细内容】
2022-06-23  qaseven    Tags:Azure   点击:(69)  评论:(0)  加入收藏
站内最新
站内热门
站内头条