【论文】attention is all you need

重点在第三节

  • attention is all you need
    • 摘要
    • 1. 绪论
    • 2. 背景
    • 3. 模型架构
      • 3.1 编码器和解码器堆叠
    • 3.2 注意力
        • 3.2.1 缩放点积注意力(Scaled Dot-Product Attention)
        • 3.2.2 多头注意力机制
        • 3.2.3 模型中注意力的应用
      • 3.3 职位感知前馈网络(Position-wise Feed-Forward Networks)
      • 3.4 嵌入和Softmax(Embeddings and Softmax)
      • 3.5 站位编码(Positional Encoding)
    • 4. Why Self-Attention
    • 5. 训练
      • 5.1 训练数据与批处理
      • 5.2 Hardware and Schedule
      • 5.3 optimizer
      • 5.4 Regularization
    • 6. 结果
      • 6.1 机器翻译
      • 6.2 模型变量
      • 6.3 英语成分句法分析
    • 7. 结论
  • 提问
    • 1. 顺序计算的基本限制是什么
    • 2. 本文的Transformer模型结构是什么
    • 3. 残差链接是如何实现的
    • 4. 缩放点积注意力是什么,如何实现,有何效果
    • 5. 多头注意力相比于缩放点积注意力有什么提升
    • 6. Embeddings一词如何理解
    • 7. 什么是Transformer

attention is all you need

摘要

主流的序列传导模型基于包含编码器和解码器的复杂循环或卷积神经网络,最佳性能的模型还通过注意机制将编码器和解码器连接。我们提出了一种新的简单网络架构,Transformer,仅基于注意机制,完全放弃循环和卷积。在两个机器翻译任务上的实验表明,这些模型在质量上优于其他模型,同时更易并行化和需要较少的训练时间。我们的模型在 WMT 2014 英文-德语翻译任务上实现了 28.4 BLEU 的成绩,比现有最佳结果(包括集成)提高了 2 BLEU 以上。在 WMT 2014 英-Fr 翻译任务中,我们的模型在 8 个 GPU 上训练 3.5 天后,创造了新的单模型最佳 BLEU 分数 41.8,仅需最佳模型的一小部分训练成本。我们展示了 Transformer 的泛化能力,通过成功将其应用到英文组成语句分析,无论是使用大量或有限的训练数据。

1. 绪论

递归神经网络、长短时记忆以及门循环神经网络已经被确定为在序列建模和传导问题中,例如语言建模和机器翻译方面的最先进方法。此后,已经有大量的研究工作继续推动递归语言模型和编码器-解码器架构的边界。

现有的模型通常会按输入和输出序列的符号位置来分解计算。将位置与计算时间的步骤对齐,它们生成一个隐状态序列 h t h_t ht,作为上一个隐状态 h t − 1 h_{t−1} ht1和位置t的输入的函数。这种内在的序列特性排除了在训练例子中的并行化,这在较长的序列长度时变得至关重要,因为内存限制对跨例子批处理造成了影响。最近的研究通过分解技巧和条件计算取得了显著的计算效率提高,同时在后一种情况下也提高了模型性能。然而,顺序计算的基本限制仍然存在。

注意机制已成为各种任务中引人注目的序列建模和转导模型的重要组成部分,在这些模型中,它能够无视输入或输出序列的距离建模依赖关系。然而,在除少数情况外,这种注意机制通常是与循环网络一起使用的。

在本研究中,我们提出了Transformer模型架构,它放弃了循环结构,完全依赖注意力机制来建立输入和输出之间的全局依赖关系。该模型允许更大程度的并行化,只需使用8个P100 GPU进行12小时训练,就能取得高质量的翻译效果,达到了一种新的技术水平。

2. 背景

将顺序计算的减少作为目标也是 Extended Neural GPU 、ByteNet 和 ConvS2S的基础,这些模型都使用卷积神经网络作为基本构建块,用于在所有输入和输出位置上并行计算隐藏表示。在这些模型中,从任意两个输入或输出位置关联信号所需的操作数量随位置间距离增长,对于 ConvS2S 是线性的,对于 ByteNet 是对数的。这使得学习远距离位置之间的依赖关系更加困难 。在 Transformer 中,这被减少到一定数量的操作,尽管由于对注意力加权位置的平均影响而导致有效分辨率降低,我们通过第3.2节中描述的 Multi-Head Attention 技术来抵消这种影响。

自我注意力,有时也称为内部注意力,是一种注意机制,涉及单个序列的不同位置,以计算序列的表示。 自我注意力已成功地应用于多项任务,包括阅读理解、摘要总结、文本蕴含和学习与任务无关的句子表示。

端到端记忆网络基于循环注意机制而不是序列对齐循环,已被证明在简单语言问答和语言建模任务中表现良好。

据我们所知,Transformer是第一个完全依赖于自注意力来计算其输入和输出表示的跨域模型,而不需要使用序列对齐的递归神经网络或卷积技术。在接下来的章节中,我们将描述Transformer,解释自注意力的实现原理,并讨论其优势。

3. 模型架构

大多数具有竞争力的神经序列转换模型均具备编码器-解码器结构。这里,编码器将符号表示的输入序列(x1, …, xn)映射到一系列连续表示z = (z1, …, zn)。给定z,解码器随后逐个元素生成符号的输出序列(y1, …, ym)。在每个步骤中,模型是自回归的,在生成下一个元素时,会将先前生成的符号消耗作为附加输入。Transformer使用堆叠的自我注意力和点对点全连接层作为编码器和解码器的总体架构,分别表示在Figure 1的左半部分和右半部分。
在这里插入图片描述

3.1 编码器和解码器堆叠

编码器:编码器由N = 6个相同的层堆叠而成,每个层包括两个子层。第一个子层是多头自注意力机制,第二个子层是一个简单的位置感知全连接前馈网络。我们采用残差连接来连接这两个子层,接着进行层归一化。也就是说,每个子层的输出都是 LayerNorm(x + Sublayer(x)),其中 Sublayer(x) 是该子层实现的函数。为了方便这些残差连接,模型中的所有子层以及嵌入层的输出维度均为$ d_{model }$= 512。

解码器:解码器还由N = 6个相同层数的堆叠组成。除了每个编码器层中的两个子层外,解码器还插入了一个第三个子层,用于在编码器堆叠的输出上执行多头注意力。与编码器类似,我们在每个子层周围使用残差连接,然后进行层归一化。我们还修改了解码器堆叠中的自我注意子层,以防止参照后续位置。这种屏蔽功能,再加上输出嵌入被一个位置偏移,确保位置i的预测仅依赖于小于i的已知输出位置。

3.2 注意力

注意力机制可被描述为将一个query或一组键值对映射到输出的过程,其中query、keys、 values和output均为向量。输出是值的加权和,其中分配给每个值的权重是由查询与相应键的兼容性函数计算得出的。
在这里插入图片描述

3.2.1 缩放点积注意力(Scaled Dot-Product Attention)

我们将特别关注点称为“缩放点积注意力”(图2)。输入由查询和尺寸为 d k d_k dk的键以及尺寸为 d v d_v dv的值组成。我们计算查询与所有键的点积,每个点积除以 d k \sqrt{d_k} dk ,并应用softmax函数以获得值的权重。

实际应用中,我们同时计算查询集合的注意力函数,将其打包成矩阵Q。键和值也被打包成矩阵K和V。我们计算输出矩阵如下:在这里插入图片描述
最常用的注意力函数有additive注意力和点积(乘法)注意力[2]。点积注意力与我们的算法相同,唯一不同之处在于缩放因子为 1 d k \cfrac{1}{\sqrt{d_k}} dk 1。加性注意力使用单隐藏层的前馈网络计算兼容性函数。虽然两者在理论复杂度上相似,但在实践中,点积注意力更快且更节省空间,因为可以使用高度优化的矩阵乘法代码实现。

虽然对于小值的 d k d_k dk,这两个机制表现相似,但在较大的 d k d_k dk值情况下,加性注意力机制优于不经缩放的点乘注意力机制。我们怀疑当 d k d_k dk越大时,点乘运算结果会变得很大,将softmax函数推向梯度极小的区域;为平衡此影响,我们需要用 1 d k \cfrac{1}{\sqrt{d_k}} dk 1对点乘结果进行缩放。

3.2.2 多头注意力机制

与使用 d m o d e l d_{model} dmodel维度的键、值和查询执行单一的注意力函数不同,我们发现将查询、键和值线性投影h次,每次使用不同的可学习线性投影投影到 d k d_k dk d k d_k dk d v d_v dv维度,有益于提高性能。然后,对这些投影版本的查询、键和值进行并行的注意力函数,产生 d v d_v dv维度的输出值。这些输出值被串联起来,再次进行投影,从而得到最终的值,如图2所示。

多头注意机制允许模型联合关注不同表征空间中的信息,而这些信息位于不同的位置。而单一注意力头则会受到平均值的抑制,从而无法实现上述联合关注。
在这里插入图片描述

3.2.3 模型中注意力的应用

Transformer 在三种不同的方式中使用多头注意力。

  • 在“编码器-解码器注意力”层中,查询来自前一个解码器层,而存储键和值则来自编码器的输出。这使得解码器中的每个位置都可以关注输入序列中的所有位置。这类似于序列到序列模型中的典型编码器-解码器注意机。
  • 编码器包含自注意层。在自注意层中,所有的键、值和查询都来自同一位置,即编码器中前一层的输出。编码器中的每个位置都可以关注到编码器前一层中的所有位置。
  • 编码器包含自注意层。在自注意层中,所有的键、值和查询都来自同一位置,即编码器中前一层的输出。编码器中的每个位置都可以关注到编码器前一层中的所有位置。

3.3 职位感知前馈网络(Position-wise Feed-Forward Networks)

除了注意子层外,我们的编码器和解码器中的每个层都包含了一个完全连接的前馈神经网络,它独立且相同地应用于每个位置。它由两个线性变换和一个介于两者之间的ReLU激活函数组成。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-803K7wi4-1686468840128)(C:\Users\Administration\AppData\Roaming\Typora\typora-user-images\image-20230609191118461.png)]

尽管不同位置上的线性变换相同,但它们在每个层中使用不同的参数。另一种描述方式是将其视为两个卷积核大小为1的卷积运算。输入和输出的维度为 d m o d e l = 512 d_{model} = 512 dmodel=512,而内层的维度为 d f f = 2048 d_{ff} = 2048 dff=2048

3.4 嵌入和Softmax(Embeddings and Softmax)

与其他序列传导模型类似,我们使用学习到的Embeddings将输入标记和输出标记转换为维度为 d m o d e l d_{model} dmodel的向量。我们还使用通常的学习线性变换和softmax函数将解码器输出转换为预测的下一个标记概率。在我们的模型中,我们在两个嵌入层和预softmax线性变换之间共享相同的权重矩阵。在嵌入层中,我们将这些权重乘以 d m o d e l \sqrt{d_{model}} dmodel

3.5 站位编码(Positional Encoding)

由于我们的模型没有循环和卷积,为了让模型利用序列的顺序,我们必须注入一些关于 Table 1 的相对或绝对位置的信息:不同层类型的最大路径长度、每层复杂度以及最小顺序操作数量。其中,n 是序列长度,d 是表示维度,k 是卷积核大小,r 是限制自注意力中邻域的大小。在这里插入图片描述
为此,我们在编码器和解码器堆栈底部的输入嵌入中添加“位置编码”。位置编码具有与嵌入相同的维度 d m o d e l d_{model} dmodel,这样两者就可以相加。有许多位置编码的选择,包括可以学习和固定的。

在这项工作中,我们使用不同频率的正弦和余弦函数:

在这里插入图片描述
其中,pos 表示位置,i 表示维度。也就是说,位置编码的每个维度都与正弦波相对应。波长从 2π 到 10000 · 2π 形成了一种几何级数。我们选择这个函数是因为我们假设这可以让模型轻松学习相对位置的关注,因为对于任何固定的偏移量 k, P E p o s + k PE_{pos+k} PEpos+k 可以表示为 P E p o s PE_{pos} PEpos 的线性函数。

我们还尝试使用学习得到的位置编码来替代,同时发现两个版本产生的结果几乎相同(参见表3中(E)行)。我们选择正弦版本,因为它可以让模型在超出训练范围的序列长度上进行外推。

4. Why Self-Attention

在本节中,我们将自我注意力层与常用于映射一个可变长度符号表示序列(x1,…,xn)到另一个相等长度序列(z1,…,zn)的循环和卷积层进行比较,其中xi, z i ∈ R d z_i∈R^d ziRd,例如典型序列传导编码器或解码器中的隐藏层。为了激励我们使用Self-Attention,我们考虑三个希望实现的目标。

其中一个是每层的总计算复杂度,另一个是可以并行计算的计算量,其测量单位为所需的最小顺序操作数。

第三个问题是网络中远程依赖关系之间的路径长度。学习远程依赖关系是许多序列转换任务中的关键挑战。影响学习此类依赖关系的一个关键因素是前向和后向信号在网络中必须穿越的路径的长度。这些路径在输入和输出序列中的任意位置之间的长度越短,学习远程依赖关系就越容易[12]。因此,我们还比较不同层类型组成的网络中任何两个输入和输出位置之间的最大路径长度。

如表1所示,自注意力层将所有位置连接起来,并执行一定数量的连续操作,而递归层需要O(n)个连续操作。在计算复杂度方面,当序列长度n小于表示维数d时,自注意力层比递归层更快,这在现代机器翻译模型中使用的句子表示中最常见,例如字片段表示[38]和字节对表示[31]。为了提高在涉及非常长的序列的任务中的计算性能,自注意力可以被限制为仅考虑以输出位置为中心的输入序列大小为r的邻域。这将增加最大路径长度到O(n / r)。我们计划在未来的工作中进一步研究这种方法。

具有核宽度 k < n 的单个卷积层无法连接所有输入和输出位置的所有对。在连续卷积的情况下,需要 O(n/k) 层卷积层,而在扩张卷积的情况下,需要 O ( l o g k ( n ) ) O(log_k(n)) O(logk(n)) 层,这会增加网络中任意两个位置之间最长路径的长度。相较于循环层,卷积层通常更加消耗资源,其消耗率为 k 倍。然而,分离卷积 [6] 可以极大地降低计算复杂度,至$ O(k · n · d + n · d^2)$。即便在 k = n 的情况下,分离卷积的计算复杂度仍然等同于自注意力层和逐点前馈层的结合,这也是我们模型采用的方法。

作为副产品,自我注意力机制能够产生更加易于解释的模型。我们检查了我们模型中的注意力分布,并在附录中提供和讨论了示例。不仅每个注意力头明显学会执行不同的任务,许多头也似乎表现出与句子的句法和语义结构相关的行为。

5. 训练

本节介绍我们模型的训练体系。

5.1 训练数据与批处理

我们使用了标准的WMT 2014年英德数据集,其中包含约450万个句子对。句子是使用字节对编码[3]进行编码的,该编码采用了共享源目标词汇表,包含大约37000个标记。对于英法语言,我们使用了规模显著更大的WMT 2014年英法数据集,其中包含了3600万个句子,并将标记划分为一个32000个词片词汇表[38]。根据近似的序列长度,我们将句子对分批处理。每个训练批次包含一组句子对,大约包含25000个源标记和25000个目标标记。

5.2 Hardware and Schedule

我们使用8个NVIDIA P100 GPU在一台计算机上训练了我们的模型。对于使用本文中所述超参数的基础模型,每个培训步骤约需要0.4秒。我们总共训练基础模型100,000个步骤或12个小时。对于我们的大模型(表3中底行所述),步骤时间为1.0秒。大模型训练了300,000个步骤(3.5天)。

5.3 optimizer

我们采用 Adam 优化器[20],β1=0.9,β2=0.98,和 ε=10-9。我们根据以下公式随着训练的进行调整学习率:
在这里插入图片描述
这意味着在前4000个训练步骤中,将学习率线性增加,之后则以步数的倒数平方根成比例地减少。在本研究中,采用了warmup_steps = 4000。

5.4 Regularization

我们在模型训练中使用了三种正则化方法:

残差失效率 我们在每个子层的输出上应用失效率[33],在它被添加到子层输入并进行标准化之前。此外,我们在编码器和解码器堆栈中的嵌入和位置编码的总和上应用失效率。对于基本模型,我们使用 P d r o p = 0.1 P_{drop} = 0.1 Pdrop=0.1的速率。
在这里插入图片描述
标签平滑:在训练过程中,我们采用了标签平滑技术,其值为$\epsilon_{ls} = 0.1 $。这种技术对困惑度造成了一定影响,因为模型学会了更加不确定,但是它能够提高准确率和BLEU得分。

6. 结果

6.1 机器翻译

在WMT 2014英语到德语的翻译任务中,大型Transformer模型(表2中的Transformer(big))比以前报告的最佳模型(包括集成模型)的BLEU得分高出超过2.0,创造了28.4的新的最先进的BLEU得分。该模型的配置列在表3的底部行中。8个P100 GPU上的训练耗时3.5天。我们的基本模型甚至在训练成本远低于任何竞争模型的情况下就能超越所有以前发布的模型和集成模型。

在WMT 2014英法翻译任务中,我们的大型模型取得了41.0的BLEU分数,胜过所有此前公开发表的单一模型,并且训练成本不到此前最先进模型的四分之一。英-法转换器(大型)模型中使用的dropout率为Pdrop = 0.1,而非0.3。

对于基础模型,我们使用了一个通过平均最后5个时间间隔为10分钟的检查点得出的模型。对于大型模型,我们平均了最后20个检查点。我们采用了Beam Search算法,将beam size设为4,长度惩罚参数alpha为0.6 [38]。这些超参数是在开发集上进行实验后选择的。在推理阶段,我们将最大输出长度设置为输入长度+50,但在可能的情况下提前终止 [38]。

表2总结了我们的结果,并将我们的翻译质量和训练成本与文献中其他模型体系结构进行了比较。我们通过将训练时间、使用的GPU数量以及每个GPU的持续单精度浮点容量的估计乘以来估计训练模型所使用的浮点运算次数。

6.2 模型变量

为评估Transformer中不同组件的重要性,我们通过不同方式改变基础模型,并测量其在英德翻译的新闻测试2013年发展数据上的性能指标变化。我们使用了前文所述的束搜索,并且没有进行检查点平均。我们在表3中呈现了这些结果。

在表3标记(A)中,我们变化了注意头的数量以及注意力键和值的尺寸,同时保持计算量不变,正如3.2.2小节所述。虽然单头注意力比最佳设置差0.9 BLEU,但太多的注意力头也会导致质量的下降。

表3:Transformers架构的变化。未列出的数值与基本模型相同。所有度量指标均基于英语到德语的翻译开发集newstest2013。列出的困惑度是基于我们的字节对编码的每个单词片段,并且不应与每个单词的困惑度进行比较。

在这里插入图片描述
表4:Transformer模型在英语短语结构句法分析方面具有良好的推广能力。

在这里插入图片描述
在表3的(B)行中,我们观察到降低注意力键大小dk会损害模型质量。这表明确定兼容性并不容易,比点积更复杂的兼容性函数可能会更有益。我们进一步观察到在(C)和(D)行中,较大的模型如预期的那样更好,并且dropout非常有助于避免过拟合。 在(E)行中,我们将正弦位置编码替换为学习的位置嵌入[9],并观察到与基础模型几乎相同的结果。

6.3 英语成分句法分析

为了评估Transformer是否能够推广到其他任务,我们在英语成分分析上进行了实验。这项任务提出了特定的挑战:输出受到强烈的结构约束,并且明显比输入更长。此外,循环神经网络序列到序列模型在小数据范围内无法达到最先进的结果。

我们基于普林斯顿树库中的华尔街日报部分,包含约 4 万个训练句子,训练了一个 4 层 dmodel = 1024 的 transformer 模型。此外,我们还采用了半监督的方法,在较大的高置信度和 BerkleyParser 语料库中,使用了约 1700 万个句子。对于只基于华尔街日报训练句子的模型,我们使用了包含 16K 个标记的词汇表;对于半监督训练模型,我们则使用了包含 32K 个标记的词汇表。

我们仅执行了少量的实验,以在22部分开发集上选择辍学率、注意力和残差(第5.4节)、学习率和beam大小,其他所有参数均保持不变,与英语到德语基础翻译模型一致。在推断期间,我们将最大输出长度增加到输入长度+300。对于仅使用WSJ和半监督设置,我们使用21的beam大小和α = 0.3。

我们在表4中的结果显示,尽管缺乏特定任务的调整,我们的模型表现出令人惊讶的良好表现,在除了递归神经网络语法[8]之外,比所有以前报告的模型更出色。

与RNN序列到序列模型相比,Transformer 甚至在仅基于40000个句子的WSJ训练集进行训练时,也能胜过BerkeleyParser 。

7. 结论

在这项工作中,我们提出了Transformer,这是第一个完全基于注意力机制的序列转换模型,用多头自注意力替换了在编码器-解码器架构中最常用的递归层。

对于翻译任务,相对于基于递归或卷积层的架构,Transformer的训练速度能够显著加快。在WMT2014英德和WMT2014英法翻译任务上,我们均取得了全新的最佳效果。在前一项任务中,我们的最佳模型甚至超过了所有之前报道的集成模型。我们对基于注意力机制的模型的未来发展感到兴奋,并计划将其应用于其他任务。

我们计划将Transformer扩展到涉及文本以外的输入和输出形式的问题,并研究局部、受限的注意力机制,以有效地处理大的输入和输出,例如图像、音频和视频内容。使生成变得不那么顺序化也是我们的另一个研究目标。

我们使用的用于训练和评估模型的代码可在https://github.com/ tensorflow/tensor2tensor上获得。

致谢:我们感谢Nal Kalchbrenner和Stephan Gouws对我们的工作的有益评论、改正和启发。

提问

1. 顺序计算的基本限制是什么

顺序计算的基本限制是无法在训练示例内进行并行化,尤其当序列长度较长时,内存限制会限制跨示例进行批处理。递归模型通常将计算沿着输入和输出序列的符号位置进行分解。将这些位置与计算时间的步骤对齐,它们生成一系列隐藏状态 h t h_t ht,作为前一个隐藏状态 h t − 1 h_{t−1} ht1和位置t处的输入的函数。这种固有的顺序性质排除了训练示例内的并行化,这在较长的序列长度下尤为关键。注意机制已成为在各种任务中引人注目的序列建模和转换模型的重要组成部分,允许对依赖项进行建模,而不考虑它们在输入或输出序列中的距离。然而,在除了一些情况之外,这些注意机制与递归网络一起使用。

2. 本文的Transformer模型结构是什么

Transformer模型结构是一种基于注意力机制的神经网络,完全摒弃了RNN和卷积网络,因此比传统模型更容易实现并行计算和训练。Transformer模型包含多个编码器和解码器,其中编码器和解码器都包含自注意力机制和编码-解码注意力机制,并通过残差连接相互连接。Transformer模型在机器翻译等任务中表现出色,取得了较高的BLEU分数,并能在短时间内训练出高质量模型,同时泛化能力强,适用于其他任务

3. 残差链接是如何实现的

在Transformer模型中,编码器的残差链接通过在每个子层中添加残差连接和层归一化来实现。具体而言,每个子层的输入是残差连接的输出加上该子层的输入,并进行归一化。然后,在每个子层输出上再应用一个残差连接。这种残差连接的作用在于加快模型的训练。当然,解码器的残差连接同样通过这种方式实现。

4. 缩放点积注意力是什么,如何实现,有何效果

缩放点积注意力是一种用于实现自注意力机制的技术。在Transformer模型中,多头自注意力层的输入包括来自前一层的查询、键和值,将它们输入到缩放点积注意力函数中进行计算。这个函数中的输入会被分成多个向量,称为多头,然后并行地进行计算。最终,对于每个多头,输出被再次连接起来,传递到下一层。这种方法仅使用点积操作,而且通过增加一个缩放因子,可避免点积结果过大。
通过实验证明,缩放点积注意力在自然语言处理任务中具有优秀的效果。在WMT 2014的英德翻译任务上,使用Transformer模型,最高BLEU得分达到了28.4,超越了现有的最佳结果。并且,在WMT 2014的英法翻译任务上,Transformer模型在单机器训练时,达到最佳的BLEU得分,为41.8,训练时间极大地缩短。此外,Transformer模型对于其他任务也具有很好的通用性,比如英文句法分析任务。
总的来说,缩放点积注意力是一种高效并行的自注意力机制,通过它能够学习到全局相关性,在自然语言处理任务中有比较好的应用效果。

5. 多头注意力相比于缩放点积注意力有什么提升

  1. 提高了模型的并行性,使得更多的计算可以同时进行,从而提升了训练速度和效率。
  2. 可以更好地捕捉到不同发现细节和特征之间的关系,从而提高了模型的表现力和性能。
  3. 可以更好地适应不同任务和数据,从而具有更广泛的应用范围和灵活性。多头注意力已经被成功地应用于自然语言处理领域,并被证明是一种有效的注意力机制。

6. Embeddings一词如何理解

嵌入表示是一种将高维度符号化数据转换成低维度向量的方法。这些向量可以被用于机器学习任务,例如分类和聚类。这种表示方法被广泛运用于自然语言处理(NLP)和计算机视觉领域。在NLP中,嵌入表示通常用于单词或短语的表示,目的是使它们更易于用于文本处理任务。计算机视觉领域中,嵌入表示被用于图像和视频的表示,以及人脸识别和物体识别的任务。嵌入表示的学习通常使用神经网络模型和无监督学习方法。

7. 什么是Transformer

Transformer是一种模型架构,它完全排除了RNN和卷积,而是完全依靠自注意力机制建立输入和输出之间的全局依赖关系。相比之下,循环模型会沿着输入和输出序列的符号位置分解计算,这种序列化的特性会限制训练样本内的并行计算,使得在较长的序列长度下,内存限制会限制跨样本进行批处理。自注意力机制已经成为各种任务中引人注目的序列建模和传导模型的重要组成部分,允许对依赖关系进行建模而不考虑它们在输入或输出序列中的距离。在Transformer中,对两个任意的输入或输出位置进行信号相关所需的操作次数是一个常数,因此可以在很大程度上实现并行处理。Transformers可以用非常短的训练时间和最少的硬件资源来达到最新的机器翻译性能表现。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端中间件Midway的使用

一、 关于midway1. 解决什么痛点2. 期望达到什么效果 二、创建应用并使用1. 创建midway应用2. 认识Midway2.1 目录结构2.2 Controller2.3 路由2.4 获取请求参数2.5 Web中间件2.6 组件使用2.7 服务(service) 三、写到最后 一、 关于midway Midway 是阿里巴巴 - 淘宝前端架构团队…

基于深度学习的高精度安全背心检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度安全背心检测识别系统可用于日常生活中或野外来检测与定位安全背心目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的安全背心目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5…

微服务: 01-rabbitmq的应用场景及安装(docker)

目录 1. rabbitmq前言简介: 1.1 RabbitMQ的几个重要作用&#xff1a; -> 1.1.1 解耦&#xff1a; -> 1.1.2 异步通信&#xff1a; -> 1.1.3 流量削峰&#xff1a; -> 1.1.4 消息传递的可靠性和持久性&#xff1a; 2. rabbitmq的安装(docker版) -> 2.1 …

SpringMVC 学习整理

文章目录 一、SpringMVC 简介1.1 什么是MVC1.2 什么是Spring MVC1.3 Spring MVC的特点 二、SpringMVC 快速入门三、RequestMapping注解说明四、SpringMVC获取请求参数4.1 通过ServletAPI获取请求参数4.2 通过控制器方法的形参获取请求参数4.3 通过RequestParam接收请求参数4.4 …

Rust语言从入门到入坑——(2)Rust在windows上搭建开发环境

文章目录 0 引入1、搭建 Visual Studio Code 开发环境1.1、安装 Rust 编译工具1.2 、VS Code安装 2、官网在线3、总结4、引用 0 引入 开始搭建一个适合在windows上运行的Rust环境。 Rust支持的程序语言很多&#xff1a;可详见官网介绍 1、搭建 Visual Studio Code 开发环境 …

[架构之路-211]- 需求- 软架构前的需求理解:ADMEMS标准化、有序化、结构化、层次化需求矩阵 =》需求框架

目录 前言&#xff1a; 一、什么是ADMES: 首先&#xff0c;需求是分层次的&#xff1a; 其次&#xff0c;需求是有结构的&#xff0c;有维度的 再次&#xff0c;不同层次需求、不同维度需求之间可以相互转化&#xff08;难点、经验积累&#xff09; 最终&#xff0c;标准…

【雕爷学编程】Arduino动手做(114)---US-015高分辨超声波模块

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

Floyd 判圈算法(Floyd Cycle Detection Algorithm)

Floyd 判圈算法(Floyd Cycle Detection Algorithm) 前言 Floyd判圈算法属于对指针操作的算法&#xff0c;它一般需要且仅需要两个指针&#xff0c;通过设定不同的指针移动速度&#xff0c;来判定链表或有限状态机中是否存在环。人为规定移动较快的指针称为快速指针(fast poin…

给初级测试工程师的一些避坑建议

我遇到的大多数开发人员都不怎么热衷于测试。有些会去做测试&#xff0c;但大多数都不测试&#xff0c;不愿意测试&#xff0c;或者勉而为之。我喜欢测试&#xff0c;并且比起编写新的代码&#xff0c;愉快地花更多的时间在测试中。我认为&#xff0c;正是因为专注于测试&#…

【Turfjs的java版本JTS】前面讲了Turfjs可以实现几何计算,空间计算的功能,如果后端要做这项功能也有类似的类库,JTS

JTS Java Topology Suite 几何计算&#xff1a; 1. 前端js就用这个 Turfjs的类库。参考网站&#xff1a; 计算两线段相交点 | Turf.js中文网 2. 后端java语言就可以用 JTS这个类库&#xff0c;参考网站&#xff1a; JTS参考网站&#xff1a; 1. https://github.com/locatio…

Windows11 安装 CUDA/cuDNN+Pytorch

一、准备工作&#xff1a; 查看torch版本&#xff1a;进入python交互环境&#xff1a; >>>import torch >>>torch.__version__ 查看cuda版本&#xff1a;CMD窗口 nvcc --version 如果版本不一致&#xff0c;需要卸载再重装。 二、安装 Windows 安装 CU…

unity制作愤怒的小鸟

文章目录 一、 介绍SpringJoint2D 、line renderer制作发射绳基类bird脚本的基础功能给bird添加飞行拖尾效果pig类游戏胜利的小星星烟花界面摄像机跟随移动游戏失败的界面多种小鸟的制作&#xff1a;黄鸟、绿鸟、黑鸟地图选择关卡选择数据保存制作多个关卡场景异步加载游戏全局…

go 调试利器之pprof指标分析

文章目录 概要一、指标类型1.1、堆栈指标1.2、CPU指标分析1.3、http-pprof 二、go tool pprof2.1、可视化2.2、CPU火焰图 概要 Go语言原生支持对于程序运行时重要指标或特征进行分析。pprof是其中一种重要的工具&#xff0c;其不仅可以分析程序运行时的错误&#xff08;内存泄…

绕过激活锁 ,拯救一台旧手机iphone

一台旧的iphone忘了apple id账号和密码了&#xff0c;导致锁住了 某宝上解锁要花50&#xff0c; 不是舍不得花钱&#xff0c;作为一个搞技术的&#xff0c;实在觉得花钱有点丢人 经过一番探索 最终确定了有用的流程 并贴出来 亲测可用 最终实现了趟再床上就可以打卡 1、 刷机 …

【软件测试】性能测试服务端—排查指标问题(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 软件性能测试的目…

node安装后的全局环境变量配置

安装node时&#xff0c;位置最好不要装在c盘&#xff0c;这里&#xff0c;我在D盘下创建了文件夹"node"&#xff0c;安装地址选择在该文件夹下 一直next&#xff0c;直到安装结束&#xff0c;打开"node"文件夹&#xff0c;安装完后&#xff0c;里面的配置…

未来10年,网络安全人才就业的黄金期

随着大数据、物联网、人工智能等新技术的发展&#xff0c;信息技术与经济社会各领域的融合也更加深入。网络攻击行为日趋复杂、黑客攻击行为组织性更强、针对手机无线终端的网络攻击日趋严重&#xff0c;近几年有关网络攻击和数据泄露的新闻层出不穷。因此&#xff0c;随着国家…

Nodejs一、初识

零、文章目录 Nodejs一、初识 1、初识 Node.js &#xff08;1&#xff09;回顾与思考 浏览器中的 JavaScript 的组成部分 为什么 JavaScript 可以在浏览器中被执行 为什么 JavaScript 可以操作 DOM 和 BOM 浏览器中的 JavaScript 运行环境 JavaScript 能否做后端开发&#…

MySQL - 第0节 - MySQL在Centos 7环境安装

目录 1.安装前说明 2.MySQL在Centos 7环境安装 2.1.卸载不要的环境 2.2.配置mysql官方yum源 2.3.检查yum源能否正常工作 2.4.安装mysql 2.5.检查mysql是否安装成功 2.6.启动mysqld数据库服务端 2.7.三种登录方法 2.7.1.登陆方法一 2.7.2.登陆方法二 2.7.3.登陆方法…

Pandas+Pyecharts | 中国高校及专业数据分析可视化

文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. Pandas数据处理2.1 读取数据 &#x1f3f3;️‍&#x1f308; 3. Pyecharts数据可视化3.1 全国高校分布地图3.2 全国高校分布城市地图3.3 本科/专科占比3.4 985/211/双一流高校数量占比…