论文阅读-《Attention is All You Need》

注意力就是一切

【要点】:论文提出了一种全新的网络架构——Transformer,完全基于注意力机制,无需使用循环和卷积,实现了在机器翻译任务上的性能提升和训练效率的显著提高。

【方法】:通过构建一个仅使用注意力机制的Transformer模型,该模型采用自注意力机制和多头注意力来处理序列数据,摒弃了传统的循环和卷积网络。

【实验】:作者在WMT 2014 English-to-German和English-to-French翻译任务上进行了实验,使用的数据集分别为WMT 2014,模型在两个任务上分别达到了28.4 BLEU和41.8 BLEU的成绩,优于现有最佳结果。此外,还成功将Transformer应用于英语句子结构解析任务。

【代码】https://github.com/tensorflow/tensor2tensor

摘要

研究提出了一种全新的神经网络架构——Transformer,它完全依赖于注意力机制,摒弃了传统的循环和卷积方法。通过在两个机器翻译任务上的实验,发现Transformer模型不仅在翻译质量上优于现有模型,而且在训练过程中更加高效,能够实现更好的并行化,显著减少了训练时间。在WMT 2014英德翻译任务中,Transformer模型取得了28.4的BLEU分数,超越了之前所有模型的最佳成绩。在英法翻译任务中,该模型在仅使用八个GPU训练3.5天后,就创造了41.8的BLEU分数新纪录,这一成绩远低于文献中其他最佳模型的训练成本。此外,还证明了Transformer模型在其他任务上也具有良好的泛化能力,例如在英语成分句法分析任务中,无论是在大量还是有限训练数据的情况下,都能取得成功。 

1 引言

本文介绍了一种名为Transformer的新型神经网络架构,它不使用传统的循环神经网络结构,而是完全依赖于注意力机制来处理序列数据。这种架构允许在训练过程中进行更多的并行计算,从而提高了计算效率。Transformer模型在机器翻译任务中表现出色,能够在相对较短的时间内达到高质量的翻译效果。这种模型的提出,为序列建模和转换问题提供了新的解决方案,可能会对自然语言处理领域的研究和应用产生重要影响。

2 背景

本节介绍了减少序列计算的目标,这是扩展神经GPU、ByteNet和ConvS2S等模型的基础。这些模型使用卷积神经网络并行计算所有输入和输出位置的隐藏表示。然而,这些模型在处理远距离依赖关系时存在困难,因为所需的操作数量随着位置间距离的增加而增加。Transformer通过自注意力机制解决了这个问题,将操作数量减少到恒定数量,并通过多头注意力机制提高了有效分辨率。

自注意力是一种关联单个序列中不同位置的注意力机制,已在多种任务中成功应用。端到端记忆网络基于循环注意力机制,而非序列对齐的递归,已在简单语言问答和语言建模任务上表现良好。

Transformer是第一个完全依赖自注意力来计算输入和输出表示的转换模型,不使用序列对齐的RNN或卷积。接下来的章节将详细描述Transformer的结构,并讨论自注意力相对于其他模型的优势。

3 模型架构

本节介绍了Transformer模型的架构,它采用了编码器-解码器结构,这是神经序列转换模型中常见的设计。编码器负责将输入序列的符号表示映射到连续的表示序列,而解码器则基于这些连续表示生成输出序列。Transformer模型的特点是使用了堆叠的自注意力机制和逐点全连接层,这些结构分别应用于编码器和解码器。自注意力机制允许模型在处理序列时考虑全局依赖关系,而逐点全连接层则用于进一步处理和转换这些表示。这种架构设计使得Transformer能够有效地处理序列数据,并在各种序列转换任务中表现出色。

3.1 编码器和解码器堆栈

编码器由6个相同的层组成,每层包含两个子层:多头自注意力机制和逐位置全连接前馈网络。每个子层都采用了残差连接和层归一化,以增强模型的学习能力和稳定性。解码器也有6个相同的层,除了编码器中的两个子层外,还额外增加了一个子层,用于处理编码器的输出。解码器的自注意力子层被修改以防止位置关注未来的位置,这是通过掩蔽和输出嵌入的偏移实现的,确保了解码器在生成每个位置的输出时只能依赖于之前的位置。这种设计使得Transformer能够有效地处理序列数据,同时保持对长距离依赖的敏感性。

3.2 注意力

注意力函数可以被描述为将一个查询和一组键-值对映射到一个输出,其中查询、键、值和输出都是向量。输出是值的加权和,其中分配给每个值的权重是通过查询与相应键的兼容性函数计算的。

图2:(左)缩放点积注意力。(右)多头注意力由多个并行运行的注意力层组成。

3.2.1 缩放点积注意力

本节详细介绍了缩放点积注意力的工作原理。这种注意力机制通过计算查询与键的点积,然后除以键的维度的平方根来缩放,最后应用softmax函数来获取每个值的权重。

计算输出矩阵如下:Attention(Q, K, V) = softmax \left ( \frac{QK^T }{\sqrt{d_{k}}} \right )V(1)

这种缩放是为了防止在键的维度较大时,点积结果过大,导致softmax函数的梯度过小,影响模型的学习效率。

缩放点积注意力与加性注意力和普通的点积注意力相比,具有更快的计算速度和更高的空间效率,因为它可以利用优化的矩阵乘法代码实现。此外,通过缩放点积,Transformer模型能够更有效地处理高维数据,避免在softmax函数中出现梯度消失的问题。这种注意力机制是Transformer模型高性能的关键因素之一。

3.2.2 多头注意力

多头注意力机制通过将查询、键和值分别投影到不同的子空间,并在这些子空间上并行执行注意力函数,从而允许模型同时从多个表示子空间中获取信息。这种机制提高了模型对信息的捕捉能力,因为它可以从不同的视角学习数据的表示。

在Transformer模型中,通常使用8个并行的注意力层,每个层(或头)处理不同的信息。每个头的维度被设置为模型维度除以头数,这样可以保证多头注意力的总计算成本与单头注意力相当,同时增加了模型的表达能力。这种设计使得Transformer能够有效地处理复杂的序列转换任务,提高了模型的性能和灵活性。

MultiHead(Q,K,V)=Concat\left ( head_{1},...,head_{h} \right )W^{O}其中\text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) 这里的投影是参数矩阵 W_i^Q \in \mathbb{R}^{d_{\text{model}} \times d_k}

W_i^K \in \mathbb{R}^{d_{\text{model}} \times d_k}W_i^V \in \mathbb{R}^{d_{\text{model}} \times d_v}W^O \in \mathbb{R}^{hd_{v}\times d_{model}}。 在这项工作中,使用h = 8个并行注意力层或头。对于每个头,我们使用 d_k = d_v = d_{\text{model}} / h = 64。由于每个头的维度减少,总的计算成本与具有完整维度的单头注意力相似。

3.2.3 我们模型中注意力的应用

Transformer模型通过三种不同的方式应用多头注意力机制:

  1. 编码器-解码器注意力层:在这些层中,查询向量来自解码器的前一层,而键和值向量来自编码器的输出。这种机制使得解码器的每个位置都能够关注输入序列中的所有位置,与典型的序列到序列模型中的编码器-解码器注意力机制相似。

  2. 编码器中的自注意力层:在自注意力层中,键、值和查询向量都来自编码器中前一层的输出。这样,编码器的每个位置都能够关注前一层中的所有位置。

  3. 解码器中的自注意力层:解码器中的自注意力层允许每个位置关注解码器中直到并包括该位置的所有位置。为了保持自回归属性,需要防止解码器中的信息向左流动。这是通过在缩放点积注意力中掩蔽(将softmax输入中对应非法连接的值设置为负无穷大)来实现的。

这种灵活的注意力应用方式使得Transformer能够有效地处理序列数据,并在各种序列转换任务中表现出色。通过编码器-解码器注意力和自注意力的结合,模型能够捕捉输入和输出之间的复杂关系,同时保持解码过程的自回归特性。

3.3 逐位置前馈网络

Transformer模型中的每一层除了包含注意力子层外,还包含一个逐位置前馈网络。这个网络对序列中的每个位置分别应用相同的操作,包括两个线性变换和一个ReLU激活函数。

\text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 \quad (2)

这种结构有时也被称为具有1x1卷积核的卷积操作。输入和输出的维度为 d_{\text{model}} = 512d,中间层的维度为 d_{ff} = 2048

这种设计使得模型能够在注意力机制的基础上,进一步对每个位置的表示进行非线性变换,增强了模型处理复杂特征的能力。输入和输出的维度保持一致,为512维,而中间层的维度则更大,为2048维,这为模型提供了更多的参数来学习数据的复杂表示。

逐位置前馈网络的引入,使得Transformer模型在处理序列数据时更加灵活和强大,有助于提升模型在各种自然语言处理任务中的表现。

3.4 嵌入和Softmax

Transformer模型使用嵌入层将输入和输出的令牌转换为固定维度的向量,这个维度与模型的其他部分保持一致。模型中,输入和输出嵌入层以及解码器的预softmax线性变换共享同一个权重矩阵,这样做可以减少模型的参数数量,并且使得模型在处理输入和输出时保持一致性。

在嵌入层中,权重被乘以 \sqrt{d_{\text{model}}}dmodel​​,这是一种常见的做法,用于调整嵌入层的缩放,以适应模型的维度。这种设计有助于模型更好地学习和处理词汇的表示,同时保持计算的稳定性。

表1提供了不同层类型在处理序列数据时的最大路径长度、每层复杂度和最小顺序操作数量的比较。这些参数对于理解和优化模型的计算效率至关重要,特别是在处理长序列或高维度表示时。通过这些设计,Transformer模型能够有效地处理各种序列转换任务,同时保持高效的计算性能。

3.5 位置编码 

Transformer模型通过位置编码来赋予模型对序列中元素位置的感知能力。由于模型中不使用递归和卷积,位置编码成为了让模型理解序列顺序的关键技术。位置编码通过将每个位置的正弦和余弦函数值添加到嵌入向量中实现,使得模型能够区分不同位置的嵌入。

使用不同频率的正弦和余弦函数:

PE(pos, 2i) = \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right)

PE(pos, 2i+1) = \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) 其中 pos 是位置,i 是维度。也就是说,位置编码的每个维度对应一个正弦波。波长从 2π 到 10000⋅2π 形成一个几何级数。我们选择这个函数是因为我们假设它将允许模型容易地通过相对位置学习注意力,因为对于任何固定的偏移量 k,PE_{pos+k}可以表示为 PE_{pos} 的线性函数。

位置编码的设计允许模型通过相对位置轻松学习注意力,这对于处理序列数据至关重要。此外,使用正弦波函数的位置编码还可能使得模型能够处理比训练时遇到的更长的序列,增加了模型的泛化能力。这种设计是Transformer模型能够有效处理各种序列任务的一个重要因素。

4 为什么使用自注意力

本节讨论了自注意力层与循环和卷积层相比的优势。自注意力层在处理短序列时计算复杂度较低,并且能够并行处理所有位置,这使得它们在训练时更加高效。此外,自注意力层在网络中为长距离依赖提供了更短的路径,这有助于模型学习这些依赖关系。

自注意力层还可以通过限制考虑的邻域大小来适应非常长的序列,尽管这会增加最大路径长度。相比之下,卷积层需要多个层才能连接所有输入和输出位置,这增加了网络中最长路径的长度,并且计算成本更高。

自注意力层的另一个优点是它们可能产生更可解释的模型,因为注意力分布可以揭示模型在处理特定任务时关注的信息。这些特性使得自注意力成为Transformer模型中的关键组件,有助于提高模型的性能和解释性。

5 训练

本节描述了我们模型的训练方案。

5.1 训练数据和批处理

  1. 训练数据:使用了WMT 2014英德数据集和英法数据集,其中英德数据集包含约450万句对,英法数据集则包含3600万句子。

  2. 编码方式:句子使用字节对编码(BPE)和词片编码,以适应共享的源-目标词汇表。

  3. 批处理:根据大致的序列长度将句子对进行批处理,每个批次包含约25000个源令牌和25000个目标令牌。

5.2 硬件和计划

  1. 硬件配置:训练在一台配备8个NVIDIA P100 GPU的机器上进行。

  2. 训练计划:基础模型训练了100,000步,大约12小时;大型模型训练了300,000步,大约3.5天。

5.3 优化器 

使用了Adam优化器,具有特定的超参数设置,包括两个衰减率 \beta_1β1​ 和 \beta_2β2​,以及数值稳定性参数 \epsilonϵ。学习率根据一个特定的公式进行调整,该公式在训练初期线性增加学习率,并在之后按步数的逆平方根减少

5.4 正则化

  • 残差丢弃:在每个子层的输出上应用dropout,以及在编码器和解码器中对嵌入和位置编码的和应用dropout,以减少过拟合。
  • 标签平滑:使用标签平滑技术,使模型在训练时对标签的预测更加不确定,这有助于提高模型在实际应用中的泛化能力。

6 结果

6.1 机器翻译

在这部分,文档详细说明了Transformer模型在机器翻译任务上取得的显著成果:

  1. 英德翻译:大型Transformer模型在WMT 2014英德翻译任务上取得了28.4的BLEU分数,超越了之前所有模型,包括集成模型。

  2. 英法翻译:在WMT 2014英法翻译任务上,大型模型取得了41.0的BLEU分数,同样超越了所有之前发布的单一模型。

  3. 训练效率:基础模型和大型模型的训练成本远低于竞争模型,训练时间也更短。

  4. 模型平均:为了提高性能,模型在推理时采用了检查点平均技术,基础模型平均了最后5个检查点,而大型模型平均了最后20个检查点。

  5. 束搜索:在生成翻译时,使用了束搜索策略,束大小为4,长度惩罚为0.6。

  6. 成本估计:通过估算训练时间、使用的GPU数量和GPU的浮点运算能力,来估计训练模型的成本。

这些结果证明了Transformer模型在机器翻译领域的有效性和优越性,以及其在训练效率和成本效益方面的优势。

表2:Transformer在训练成本的一小部分情况下,在英德和英法的newstest2014测试中实现了比以往最先进的模型更好的BLEU分数。

6.2 模型变体

在这部分详细说明了对Transformer模型的不同变体进行的实验,以评估模型中各个组件的重要性:

  1. 注意力头数和维度:通过改变注意力头的数量和键值维度,但保持计算量不变,发现单头注意力的性能比最佳设置差,而头数过多也会导致性能下降。

  2. 注意力键大小:减少注意力键的大小 d_kdk​ 会降低模型质量,这表明点积可能不是最佳的兼容性函数,可能需要更复杂的函数。

  3. 模型大小和dropout:较大的模型通常表现更好,而dropout在防止过拟合方面非常有效。

  4. 位置编码:将正弦波位置编码替换为学习到的位置嵌入后,结果与基础模型几乎相同,表明两种位置编码方法在性能上是可比的。

表3 Transformer架构的变体。未列出的值与基础模型相同。所有指标均基于英德翻译开发集newstest2013。列出的困惑度是按词片计算的,根据我们的字节对编码,不应与按词困惑度进行比较。

6.3 英语成分句法分析

这部分描述了Transformer模型在英语成分句法分析任务上的应用和性能。尽管Transformer模型没有针对特定任务进行调整,但仍然取得了令人惊讶的好成绩,超过了除特定模型之外的所有先前模型。这表明Transformer模型具有很好的泛化能力,能够适应不同的自然语言处理任务。

  1. 数据集:使用了华尔街日报(WSJ)部分的宾夕法尼亚树库,以及高信心和BerkeleyParser语料库。
  2. 模型配置:4层Transformer模型,使用了不同的词汇表大小。
  3. 训练设置:包括仅使用WSJ训练集的设置和半监督设置。
  4. 超参数选择:在开发集上进行了少量实验,选择了dropout、学习率和束大小等超参数。
  5. 推理设置:在推理过程中,增加了最大输出长度,并使用了特定的束大小和长度惩罚。
  6. 性能:Transformer模型在该任务上的性能超过了大多数先前模型,证明了其强大的泛化能力。

表4 Transformer模型在英语成分句法分析上泛化得很好(结果基于WSJ的第23部分)

7 结论 

这部分总结了Transformer模型的主要贡献和未来的研究方向:

  1. 模型创新:Transformer是首个完全基于注意力机制的序列转换模型,它用多头自注意力取代了传统的循环层。

  2. 性能:在WMT 2014英德和英法翻译任务上,Transformer达到了新的最高水平,甚至超越了之前所有的集成模型。

  3. 训练效率:与基于循环或卷积层的架构相比,Transformer的训练速度显著更快。

  4. 未来工作:作者对基于注意力的模型的未来感到兴奋,并计划将这些模型应用于其他任务,如处理图像、音频和视频等非文本输入和输出模态的问题。同时,研究局部、受限的注意力机制,以及减少生成过程的序列化也是未来的研究方向。

  5. 代码开源:训练和评估模型的代码已经在GitHub上开源,方便其他研究者使用和参考。https://github.com/tensorflow/tensor2tensor

  6. 致谢:作者对Nal Kalchbrenner和Stephan Gouws提供的有益评论、更正和启发表示感谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1539317.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

内存管理(C++版)

C/C内存分布 程序经过编译生成可执行的二进制程序,我们可以把虚拟进程地址分为以下四个空间:栈,堆,常量区,静态区。这四个区里面存贮的也是不一样的内容。 各个区域所存储内容的说明 栈/堆栈:用于建立函…

项目实现:云备份服务端①(文件操作、Json等工具类实现)

云备份 前言文件操作实用工具类设计文件属性的获取文件的读写操作文件压缩与解压缩的实现文件目录操作 Json 实用工具类设计编译优化 前言 如果有老铁不知道当前项目实现的功能是什么的话,可以先移步这篇文章内容: 云备份项目的介绍 其中介绍了云备份项…

代码管理-使用TortoiseGit同步项目到Github/Gitee

1 什么是TortoiseGit TortoiseGit下载地址 TortoiseGit是Git的Windows桌面可视化工具,通过软件的操作来实现Git命令的效果,使所有的操作都能用图形化实现。TortoiseGit安装很简单,这里不对安装流程进行讲解。下载之后即可按照普通软件的方式…

[vue2+axios]下载文件+文件下载为乱码

export function downloadKnowledage(parameter) {return axios({url: /knowledage/download,method: GET,params: parameter,responseType: blob}) }添加 responseType: blob’解决以下乱码现象 使用触发a标签下载文件 downloadKnowledage(data).then((res) > {let link …

Linux配置静态IP详细步骤及联网问题,以及更改主机名问题

一,Linux配置静态IP详细步骤及联网问题 我的Linux操作系统版本是是CentOS7/CentOS8 1.网络适配器:NAT模式点击设置-网络适配器-网络连接 (选择NAT模式)-点击确定 2.查看网关相关配置点击 编辑-虚拟网络编辑器-选择VMnet8-点击更…

JZ2440开发板——S3C2440的存储控制器

以下内容源于韦东山课程的学习与整理,如有侵权请告知删除。 课程中说的“内存控制器”,准确来说是“存储控制器”,其配套书籍写的也是“存储控制器”。 另外“Nor Flash控制器”,说的也是“存储控制器”,或者“存储控…

深入剖析大模型原理——Qwen Blog

1. 输入部分 Text:原始输入文本,模型需要处理的自然语言数据。Tokenizer:分词器,将输入文本转换为词汇表中的索引(ID),便于后续处理。Input_ids:经过分词处理后的ID序列&#xff0c…

如何借助项目管理系统实现审批流程的自动化与标准化?

在快节奏的项目申报领域中,繁琐的审批流程往往成为制约项目推进速度的瓶颈。传统的人工审批方式不仅耗时耗力,还容易因人为因素导致审批效率低下、结果不一致等问题。为此,一款能够支持在线审批流程、实现审批自动化与标准化的项目管理系统显…

MATLAB基本语句

MATLAB语言为解释型程序设计语言。在程序中可以出现顺序、选择、循环三种基本控制结构,也可以出现对M-文件的调用(相当于对外部过程的调用)。 由于 MATLAB开始是用FORTRAN语言编写、后来用 C语言重写的,故其既有FORTRAN的特征,又在许多语言规…

小琳AI课堂:机器学习

大家好,这里是小琳AI课堂,今天我们要聊的是机器学习,它是人工智能(AI)的一个分支,主要研究如何让计算机系统通过数据学习,从而做出决策或预测。 下面我们就从四个角度来详细解释一下“什么是机器…

感知笔记:ROS 视觉- 跟随红球

- 目录 - 如何在 ROS 中可视化 RGB 相机。如何作为机器人切换主题。如何创建 blob 检测器。如何获取要跟踪的颜色的颜色编码。如何使用 blob 检测数据并移动 RGB 相机以跟踪 blob。 机器人技术中最常见的传感器是不起眼的 RGB 摄像头。它用于从基本颜色跟踪(blob 跟…

把设计模式用起来!(4) 用不好模式?之原理不明

(清华大学出版社 《把设计模式用起来》书稿试读) 上一篇:把设计模式用起来!(3)用不好模式?之时机不对 为什么用不好设计模式?——原理不明 难搞的顾客:“抹这种霜&#…

学习ROS2第一天—新手笔记(humble版本)

————今早七点达到实验室,吃了早饭收拾了一下现在07:24开始学习———— 1. RO2与ROS1的不同架构: ROS1架构下,所有节点都是Master进行管理 ROS使用基于DDS的Discovery机制,和Master说再见 API的重新设计 编译…

数集相等的定义凸显初等数学几百年重大错误:将无穷多各异数集误为同一集

黄小宁 创造型人才的突出特征:敢于独立思考,不愿人云亦云随大流做分数的奴隶。初数中定义域为R的一次函数ykx(正常数k≠1)的值域问题是师生们不屑一顾的初数中的初数,然而数集相等的定义凸显初数一直搞错了y的值域而将…

MD5、SHA256哈希值生成验证工具-生成文件的“指纹ID”-调用了微软.Net Framework里的加密工具来生成哈希值

MD5、SHA256等哈希值生成工具通常用来验证文件的完整性,或者说是生成文件的“指纹ID”。 Windows系统下调用哈希工具,要用命令提示符cmd调用,生成和比较不太方便。我编写了一个小工具,将文件拖拽到软件界面即可生成比较。 下载地址…

前端——表格、列表标签

今天我们来学习一下web开发里面的表格标签、列表标签 常用快捷键&#xff1a; shift alt 下 复制粘贴选中内容 表格标签 table HTML 表格由 <table> 标签来定义。 HTML 表格是一种用于展示结构化数据的标记语言元素。 每个表格均有若干行&#xff08;由 <tr>…

Qt实战案例(60)——利用QTimer类实现实时时间功能

目录 一、项目介绍二、项目基本配置三、UI界面设置四、主程序实现4.1 widget.h头文件4.2 widget.cpp源文件 五、效果演示 一、项目介绍 本文介绍利用QTimer类实现实时时间功能并在状态栏中进行显示。 二、项目基本配置 新建一个Qt案例&#xff0c;项目名称为“TimeTest”&am…

【北京迅为】《STM32MP157开发板使用手册》- 第三十八章 任务管理实验

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

解决【WVP服务+ZLMediaKit媒体服务】加入海康摄像头后,能发现设备,播放/点播失败,提示推流超时!

环境介绍 每人搭建的环境不一样&#xff0c;情况不一样&#xff0c;但是原因都是下面几种&#xff1a; wvp配置不当网络端口未放开网络不通 我搭建的环境&#xff1a; WVP服务&#xff1a;windows下&#xff0c;用idea运行的源码 ZLM服务&#xff1a;虚拟机里 问题描述 1.…

训练加速和推理加速

1. 训练加速 训练加速指的是通过优化技术、硬件加速等方式&#xff0c;减少训练模型的时间&#xff0c;尤其是对于大规模数据集和复杂模型。 训练的特点&#xff1a; 计算量大&#xff1a;模型训练时需要执行前向传播和反向传播&#xff0c;并在多个迭代&#xff08;epoch&a…