Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >原创 | 一文读懂Transformer

原创 | 一文读懂Transformer

作者头像
数据派THU
发布于 2022-07-12 03:42:08
发布于 2022-07-12 03:42:08
4.5K00
代码可运行
举报
文章被收录于专栏:数据派THU数据派THU
运行总次数:0
代码可运行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
作者:陈之炎
本文约3500字,建议阅读7分钟Transformer 是第一个完全依赖于自注意力机制来计算其输入和输出的表示的转换模型。

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

1 Transformer的模型架构

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

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

图 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 )的公式如下:

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

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

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

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

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

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

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

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

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

来缩放点积。

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

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

2)全连接前馈网络

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

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

3)嵌入和Softmax

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

3 位置编码Positional Encoding

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

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

可以表示为

的线性函数。

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

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

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

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

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

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

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

层卷积层堆叠,使得最长相关路径的长度变长。通常,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,并依据下述公式调整学习率:

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

4.4 正则化

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

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

= 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。

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

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

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

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

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

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

作者简介

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

编辑:于腾凯

校对:林亦霖

数据派研究部介绍

数据派研究部成立于2017年初,以兴趣为核心划分多个组别,各组既遵循研究部整体的知识分享实践项目规划,又各具特色:

算法模型组:积极组队参加kaggle等比赛,原创手把手教系列文章;

调研分析组:通过专访等方式调研大数据的应用,探索数据产品之美;

系统平台组:追踪大数据&人工智能系统平台技术前沿,对话专家;

自然语言处理组:重于实践,积极参加比赛及策划各类文本分析项目;

制造业大数据组:秉工业强国之梦,产学研政结合,挖掘数据价值;

数据可视化组:将信息与艺术融合,探索数据之美,学用可视化讲故事;

网络爬虫组:爬取网络信息,配合其他各组开发创意项目。

点击文末“阅读原文”,报名数据派研究部志愿者,总有一组适合你~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派THUID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

未经许可的转载以及改编者,我们将依法追究其法律责任。

点击“阅读原文”加入组织~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据派THU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何使用分层存储,让 HDFS 变得更高效?
1、Hadoop 及其承诺 众所周知,商用硬件可以组装起来创建拥有大数据存储和计算能力的Hadoop集群。将数据拆分成多个部分,分别存储在每个单独的机器上,数据处理逻辑也在同样的机器上执行。 例如
小小科
2018/05/02
2K0
如何使用分层存储,让 HDFS 变得更高效?
大数据存储平台之异构存储实践深度解读
经常做数据处理的伙伴们肯定会有这样一种体会:最近一周内的数据会被经常使用到,而比如最近几周的数据使用率会有下降,每周仅仅被访问几次;在比如3月以前的数据使用率会大幅下滑,存储的数据可能一个月才被访问几次。 这就产生了一种热和冷数据,对需要频繁访问的数据我们称之为“热”数据,反之我们称之为”冷”数据,而处于中间的数据我们称之为”温”数据。 在数据被视为公司资产的时代,每个公司基本都会保存最近数年的数据,而这些数据尤其是冷数据的累积也给存储平台带来了甜蜜的负担。下面就来分享下如何解决这些“负担”。 首先如何定义
程序你好
2018/07/20
6710
0675-6.2.0-什么是HDFS分层存储
CDH支持Hadoop分布式文件系统HDFS中的各种存储类型。早期的CDH只支持一种存储类型。现在,您可以为DataNode数据目录指定不同的存储类型,这样可以根据数据使用频率优化数据使用并降低成本。例如需要频繁使用的数据,可以存储在SSD中,而归档的数据可以存放在相对便宜的存储介质中。
Fayson
2019/07/30
1.2K0
HDFS 异构存储
该文介绍了在分布式存储系统中,通过使用 Raft 协议进行分布式数据一致性维护和通过 Zab 协议进行分布式数据访问控制。同时,介绍了基于 Raft 协议的 Zab 协议实例以及基于 Zab 协议的 Raft 协议实例。
liubang01
2017/07/28
4.2K0
HDFS 异构存储
独家 | 一文读懂Hadoop(二)HDFS(下)
5.1 用户命令 hadoop集群用户的常用命令。 5.1.1 classpath 打印获取Hadoop jar和所需库所需的类路径。如果无参数调用,则打印由命令脚本设置的类路径,可以在类路径条目中包含通配符。其他选项在通配符扩展后打印类路径或将类路径写入jar文件的清单。后者在不能使用通配符且扩展的类路径超过支持的最大命令行长度的环境中非常有用。 5.1.2 dfs HDFS允许以文件和目录的形式组织用户数据。它提供了一个称为FS shell的命令行界面,允许用户与HDFS中的数据交互。此命令集的语法类似
数据派THU
2018/01/30
2K0
独家 | 一文读懂Hadoop(二)HDFS(下)
[hadoop3.x]HDFS存储类型和存储策略(五)概述
[hadoop3.x系列]HDFS REST HTTP API的使用(一)WebHDFS
Maynor
2021/12/06
1.6K0
[hadoop3.x]HDFS存储类型和存储策略(五)概述
HDFS分布式文件存储系统详解
优点: 1.处理超大文件 能用来存储管理PB级的数据 1PB = 1024TB 2.处理非结构化数据、半结构化数据、结构化数据 流式的访问数据 一次写入、多次读取 3.运行于廉价的商用机器集群上 可运行在低廉的商用硬件集群上 故障时能继续运行且不让用户察觉到明显的中断
全栈程序员站长
2022/08/22
1.6K0
HDFS分布式文件存储系统详解
京东 HDFS EC 应用解密
为了实现降本增效,京东HDFS 团队在 EC 功能的移植、测试与上线过程中,基于自身现状采取的一些措施并最终实现平滑上线。同时自研了一套数据生命周期管理系统,对热温冷数据进行自动化管理。在研发落地过程中还构建了三维一体的数据校验机制,为 EC 数据的正确性提供了强有力的技术保障。
京东技术
2021/04/02
9620
京东 HDFS EC 应用解密
大数据技术之Hadoop(HDFS)第1章 HDFS概述
Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。
用户7656790
2020/08/18
7130
大数据技术之Hadoop(HDFS)第1章 HDFS概述
2021年大数据Hadoop(七):HDFS分布式文件系统简介
在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在集群上的文件系统称为分布式文件系统 。
Lansonli
2021/10/11
5790
干货|管理大数据存储的十大技巧
在1990年,每一台应用服务器都倾向拥有直连式系统(DAS)。SAN的构建则是为了更大的规模和更高的效率提供共享的池存储。Hadoop已经逆转了这一趋势回归DAS。每一个Hadoop集群都拥有自身的—
灯塔大数据
2018/04/09
3K0
干货|管理大数据存储的十大技巧
大数据平台:资源管理及存储优化技术
大数据平台的资源管理组件主要涉及存储资源和计算资源管理两部分,属于大数据平台运维管理系统。基于资源管理系统,大数据平台的开发运维人员能够清晰掌控平台的资源使用情况和资源在不同时间段下的变化趋势,能对资源使用异常进行及时发现并定位处理,避免造成更严重的影响,如磁盘空间撑爆,计算资源无空余,任务长时间等待不运行等造成业务阻塞。
Yiwenwu
2024/05/01
1.1K0
大数据平台:资源管理及存储优化技术
HDFS 是如何实现大数据高容量、高速、可靠的存储和访问的。
对于一个企业大数据应用来说,搞定了大数据存储基本上就解决了大数据应用最重要的问题。Google 三驾马车的第一驾是GFS,Hadoop最先开始设计的就是HDFS,可见分布式存储的重要性,整个大数据生态计算框架多种多样,但是大数据的存储却没有太大的变化,HDFS依旧是众多分布式计算的基础。当然HDFS也有许多缺点,一些对象存储等技术的出现给HDFS的地位带来了挑战,但是HDFS目前还是最重要的大数据存储技术,新的计算框架想要获得广泛应用依旧需要支持HDFS。大数据数据量大、类型多种多样、快速的增长等特性,那么HDFS是如何去解决大数据存储、高可用访问的了?
house.zhang
2021/08/26
2.1K0
管理大数据存储的十大技巧「建议收藏」
数据本地化是为了确保大数据集存储在计算节点附近便于分析。对于Hadoop,这意味着管理数据节点,向MapReduce提供存储以便充分执行分析。它实用有效但也出现了大数据存储集群的独立操作问题。以下十项是Hadoop环境中管理大数据存储技巧。
全栈程序员站长
2022/09/02
1.6K0
HDFS 为何在大数据领域经久不衰?
HDFS是最早的大数据存储系统,存储着宝贵的数据资产,各种新算法、框架要想得到广泛使用,必须支持HDFS,才能获取已存储在里面的数据。所以大数据技术越发展,新技术越多,HDFS得到的支持越多,越离不开HDFS。HDFS也许不是最好的大数据存储技术,但依然是最重要的大数据存储技术。
JavaEdge
2022/04/06
3570
HDFS 为何在大数据领域经久不衰?
[hadoop3.x]HDFS存储策略和冷热温三阶段数据存储(六)概述
[hadoop3.x系列]HDFS REST HTTP API的使用(一)WebHDFS
Maynor
2021/10/09
8580
Hadoop中HDFS的存储机制
HDFS(Hadoop Distributed File System)是Hadoop分布式计算中的数据存储系统,是基于流数据模式访问和处理超大文件的需求而开发的。下面我们首先介绍HDFS中的一些基础概念,然后介绍HDFS中读写操作的过程,最后分析了HDFS的优缺点。
星哥玩云
2022/07/03
1.3K0
Hadoop中HDFS的存储机制
Apache Eagle——eBay开源分布式实时Hadoop数据安全方案
日前,eBay公司隆重宣布正式向开源业界推出分布式实时安全监控引方案—— Apache Eagle,该项目已正式加入Apache 称为孵化器项目。Apache Eagle提供一套高效分布式的流式策略引擎,具有高实时、可伸缩、易扩展、交互友好等特点,同时集成机器学习对用户行为建立Profile以实现实时智能实时地保护Hadoop生态系统中大数据的安全。 背景 随着大数据的发展,越来越多的成功企业或者组织开始采取数据驱动商业的运作模式。在eBay,我们拥有数万名工程师、分析师和数据科学家,他们每天访问分析数PB
CSDN技术头条
2018/02/11
1.5K0
Apache Eagle——eBay开源分布式实时Hadoop数据安全方案
基于腾讯云存储COS的ClickHouse数据冷热分层方案
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS),支持PB级数据量的交互式分析,ClickHouse最初是为YandexMetrica 世界第二大Web分析平台而开发的。多年来一直作为该系统的核心组件被该系统持续使用着。目前为止,该系统在ClickHouse中有超过13万亿条记录,并且每天超过200多亿个事件被处理。它允许直接从原始数据中动态查询并生成报告。自2016 年开源以来,ClickHouse 凭借其数倍于业界顶尖分析型数据库的极致性能,成为交互式分析领域的后起之秀,发展速度非常快。
云存储
2021/01/12
6.4K0
基于腾讯云存储COS的ClickHouse数据冷热分层方案
独家 | 一文读懂Hadoop(二)HDFS(上)
随着全球经济的不断发展,大数据时代早已悄悄到来,而Hadoop又是大数据环境的基础,想入门大数据行业首先需要了解Hadoop的知识。2017年年初apache发行了Hadoop3.0,也意味着一直有一群人在对Hadoop不断的做优化,不仅如此,各个Hadoop的商业版本也有好多公司正在使用,这也印证了它的商业价值。 读者可以通过阅读“一文读懂Hadoop”系列文章,对Hadoop技术有个全面的了解,它涵盖了Hadoop官网的所有知识点,并且通俗易懂,英文不好的读者完全可以通过阅读此篇文章了解Hado
数据派THU
2018/01/30
2.4K0
独家 | 一文读懂Hadoop(二)HDFS(上)
推荐阅读
相关推荐
如何使用分层存储,让 HDFS 变得更高效?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验