Transformer:Attention Is All You Need

简介: Transformer:Attention Is All You Need

论文标题:Attention Is All You Need


论文链接:https://arxiv.org/abs/1706.03762


一 、概述


Transformer是一种新的架构,用来学习输入和输出之间的全局依赖关系。比起以往使用RNN(recurrent neural network)来处理NLP领域中的诸多任务,Transformer是一种全新的架构,其中规避开了recurrence架构,并且相比于RNN,其并行计算的能力更强(more parallelizable)。


二、模型架构


  1. 模型中的encoder和decoder


  • 整体架构


]477QD{IH70OJ~VG(3CX_)O.png

Transformer也使用了encoder-decoder架构,其具体架构图如下:


GCV5[{QYX}ZLC2(F9)DTMHH.png

                                        模型架构


  • Encoder


Transformer的encoder由6个相同的层堆叠而成,每一层有两个子层,其中第一个子层是multi-head attention层,第二个子层就是一个简单的前馈网络,在每个子层后面都有一个residual connection和layer normalization,也就是说每个子层的输出可以表示为:


D]D(LY)O}XT3UJ)W6(@FV2Q.png


WX1S2GP$FR51FZATXE2~WSX.png代表每个子层实现的函数。为了促使这些residual connection发挥作用,模型中的所有子层以及下面的embedding层,都会产生维度Q7XBYU8J7H0BIT_~23Z%4RB.png的输出。


  • Decoder


Transformer的decoder也是由6个相同的层堆叠而成,除了encoder中的两种子层,decoder还添加了第三种子层,也就是在encoder的输出上执行multy-head attention的一层。同样的每一层后面都有residual connection和layer normalization。图中decoder最下面的子层会被修改来防止每个位置attend到这个位置后面的元素。


  1. Attention


  • Scaled Dot-Product Attention


4H)7V[SJ@X~E1MON(D{8GSW.png


该过程用图表示如下:


4[`IJJFL[4S92YSQ%8G2DDG.png

         Scaled Dot-Product Attention


  • additive attention和dot-product attention


最常用的两种attention的机制是additive attention和dot-product attention

(multiplicative attention)。其中在上式中如果没有scaling factorFBHIJV993(T]SS~CZ{POEVR.png ,就是dot-product attention。Additive attention使用具有单个隐藏层的前馈网络来计算兼容性函数,其输入层是两个向量的横向拼接,输出层的激活函数是sigmoid表示二者的相关度,对每一对向量都需要进行一次计算,得到的结果再计算softmax得到attention相关度权重。两种attention在理论上的复杂度相同,但在实践中dot-product attention能使用优化的矩阵乘法运算,所以计算更快,同时由于它没有使用前馈网络,所以占用空间更小,所以transformer选用了dot-product attention。


  • 为什么dot-product attention要被scaled


)PO9[]{JFPB`7U~HKQ@%LK4.png


  • Multi-Head Attention


D(~A{W9]2I4O28]Y72CMN)4.png


下图展示了multi-head attention的过程:


F6ETR~R62KF}`$LE7OU9S7E.png

         multi-head attention


  • Transformer中attention的应用


Transformer中主要有三处地方用到了attention机制:


①在架构图decoder的中间部分,query来自于先前的decoder层,而key和value来自于encoder的输出,这样设计允许了decoder中的每一个位置都能attend到输入的序列的任何一个位置。这样的设计模仿了传统的seq-to-seq模型的encoder-decoder attention机制。


②Transformer的encoder使用了attention机制,每一个self-attention层的query、key、value都来自于前一层的输出,每个位置都能attend到前一层的所有位置。


③在架构图decoder的下面的部分,每个位置被允许attend到该位置之前包括该位置的地方,为了保证自回归属性,我们必须避免出现左向信息流。可以通过将不合法连接(当前位置右侧)的 scaled dot-product attention中V6_N3DA[S[VT8U@91FW6AVQ.png函数的输入设置为1U515T{EL`{J_4DBI0V(U@O.png来实现这一操作,这一部分被称为masked multi-head attention。


  1. Position-wise Feed-Forward Networks


除了attention子层以外,每一层都还包含一个前馈网络层,这个前馈网络层包含两个线性变换,中间有一个ReLU激活,其公式如下:


K2@Q@GCQ%X$FP%{D{4T0VB8.png


_H0MDRQM3OT9M_[Z0ZFU[S2.png


  1. Embeddings and Softmax


3E}V6_FZV8EY8%WCJBUL7E0.png


  1. Positional Encoding


Transformer中没有循环和卷积结构,我们需要将输入序列的位置信息考虑进来。我们通过给输入embedding加上一个positional encodings来实现这一目的。Positional encodings的维度也是5B~K}2N)1FNG8F259U1}K78.png,这样它才可以和input embedding加起来。Positional encodings有很多选择,包括会在训练过程中被学习的和固定的。


在Transformer中选用不同频率的正弦和余弦函数:


N3L$7RN7R5JGB8${S]FQUI8.png

利用上述公式我们可以得到:


7A@~M}{K}LY[N1XX~~[76EQ.png


上述正余弦函数的方法是固定的positional encodings,同样地我们也可以使用学习得到的positional embeddings。之所以选择正余弦的方式是因为这种方式可能允许模型推断比训练时遇到的更长的序列。


  1. 其他


李宏毅老师有关模型架构的讲解:https://www.jianshu.com/p/e305771b1b54


三、为什么选择Self-Attention


在该部分我们将self-attention与循环和卷积网络进行对比。我们对比以下三个指标:

①每层总的计算复杂度;


②可以并行的计算量,通过所需的最小顺序操作数来衡量;


③网络中长程依赖的路径长度。


很多序列转导模型的一个关键任务是学习长程依赖关系。一个影响学习该依赖关系的关键因素是前向和后向信号必须在网络中传播的长度。输入和输出序列中任意位置组合的这些路径越短,越容易学习长程依赖关系,因此选择对比不同层组成的网络中任意两个输入和输出位置之间的最大路径长度。


对比结果如下表所示:


URIUQVM9(Z19HSVMZCWX[HU.png

                                             对比结果


3)5{V%N3L9)XY8HN]G1)TZE.png

四、训练


  1. 优化器


使用Adam优化器进行训练,设置RN%(`}Q8QRH99P(4]IJIRPU.png,另外根据以下公式调整学习率:


5@704DSVDB6MRULQ6FM]T(A.png

利用这个公式可以使得在(_ZX})CP{B(C~ODLV]XJNXL.png个trainging step以内,学习率线性增长,随后会将学习率与training step的平方根成比例地缩小。我们使用A@)S06QK]`]00P5W8(~S[QN.png


  1. 正则化


  • Residual Dropout


在每个子层的输出与输入相加和做layer normalization之前要被dropout。另外,在encoder和decoder中也会将embeddings与positional encodings的和做dropout。我们设置TM[)0$MYC]9FFA@NI%WJ1HD.png


  • Label Smoothing


在训练时,我们使用label smoothing的值为T${8NDW9LYY7YGW62~FVMRD.png。 这让模型不易理解,因为模型学得更加不确定,但提高了准确性和BLEU得分。


五、模型效果


  1. 机器翻译


对比了Transformer在WMT 2014 English-to-German和WMT 2014 English-to-French两个数据集上与其他模型的效果:


INW1T1OFPKL4`4{K(YC{FRR.png

                                             效果对比


  1. 模型变种


对比了Transformer的不同架构的效果:


L}Z5L7G)Y~CXXX{{%CO8M`8.png

                                               效果对比

相关文章
|
编译器
overleaf 参考文献引用,创建引用目录.bib文件,在文档中引用参考文献,生成参考文献列表
overleaf 参考文献引用,创建引用目录.bib文件,在文档中引用参考文献,生成参考文献列表
7998 0
|
7月前
|
存储 机器学习/深度学习 人工智能
C 408—《数据结构》易错考点200题(含解析)
408考研——《数据结构》精选易错考点200题(含解析)。
463 27
|
5月前
|
人工智能 物联网 Apache
Flink Forward Asia 2025 新加坡站议题征集开启|The future of AI is Real-Time
Flink Forward Asia 2025 将于7月3日在新加坡盛大召开!作为Apache Flink社区顶级会议,大会聚焦实时AI、实时湖仓、实时分析等前沿方向,汇聚全球顶尖技术实践。即日起开放议题征集,诚邀开发者与数据专家分享创新经验。席位有限,立即行动!扫码或访问官网报名参与这场年度技术盛宴,共话实时计算未来。
425 17
Flink Forward Asia 2025 新加坡站议题征集开启|The future of AI is Real-Time
|
6月前
|
人工智能 运维 安全
更低成本、更高效、更安全!阿里云与钉钉联合推出协同办公AI解决方案
阿里云与钉钉携手推出了全新的“钉钉·AI Stack一体机”,以“低成本、高安全、零门槛”为核心,为用户提供基于钉钉,从模型部署到全员落地的AI解决方案,开启智能化办公的“一键加速”。
883 1
|
人工智能 JSON 自然语言处理
阿里云百炼产品月刊【2025年1月】
本月重点包括新增批量推理功能,支持非高峰时段大规模数据处理,享有5折折扣;工作流应用新增循环节点,增强了流程定义的灵活性;数据管理新增解析设置功能,支持自动识别与转换多种数据格式。此外,还推出了多个新模型,如DeepSeek系列、Wanx2.1系列等,涵盖文本生成、图像生成、视频生成等多个领域。特别是DeepSeek-V3,具有671B参数,擅长长文本、代码、数学等领域;Wanx2.1系列则在视频和图像生成方面表现出色。通义千问系列模型也在性能和功能上进行了显著提升,特别是在语义理解和多语言支持方面。此外,本月还举办了多项AI实训营活动,包括智能体创意开发赛、新春主题创作等。
869 0
|
数据采集 存储 分布式计算
构建智能数据湖:DataWorks助力企业实现数据驱动转型
【8月更文第25天】本文将详细介绍如何利用阿里巴巴云的DataWorks平台构建一个智能、灵活、可扩展的数据湖存储体系,以帮助企业实现数据驱动的业务转型。我们将通过具体的案例和技术实践来展示DataWorks如何集成各种数据源,并通过数据湖进行高级分析和挖掘,最终基于数据洞察驱动业务增长和创新。
607 53
|
10月前
|
人工智能 自然语言处理 搜索推荐
五款CRM系统评测:中大型企业如何选择适合的CRM工具
本文详细评测了销售易、金蝶云之家、八百客、白码和珍客五款领先CRM系统,涵盖品牌介绍、产品功能、优势特色及适用企业,旨在帮助中大型企业根据自身需求选择最合适的CRM工具,以提升工作效率、客户满意度和企业竞争力。
|
8月前
|
人工智能 机器人 API
阿里云百炼xWaytoAGI共学课 DAY2 - 更好用的文本知识库应用跟学,快速上手阿里云百炼
本课程是阿里云百炼平台的第二天课程内容,旨在帮助用户了解如何通过阿里云百炼构建和发布自己的AI应用。介绍了如何利用大模型和智能体应用来创建具备强大语言理解和生成能力的AI助手,并通过不同的渠道(如网站、钉钉、微信公众号等)发布这些应用。
1496 8
|
11月前
|
存储 关系型数据库 MySQL
Mysql行格式DYNAMIC和COMPACT区别
总之,选择哪种行格式取决于具体的应用场景,如数据类型分布、读写比例、存储与性能需求等。在处理大量文本或二进制数据且对存储空间敏感的应用中,DYNAMIC格式可能是更好的选择;而对于混合型数据且对读取性能有一定要求的场景,COMPACT格式可能更合适。在设计数据库时,评估这些因素并进行适当测试,可以帮助确定最适合的行格式。
602 0