网站的标题,艺术网站定制,响应式 网站 开发,快三彩票网站开发1.论文介绍
Attention Is All You Need 2017年 NIPS transformer 开山之作 回顾一下经典#xff0c;学不明白了 Paper Code
2. 摘要
显性序列转导模型基于包括编码器和解码器的复杂递归或卷积神经网络。性能最好的模型还通过注意力机制连接编码器和解码器。我们提出了一个新…1.论文介绍
Attention Is All You Need 2017年 NIPS transformer 开山之作 回顾一下经典学不明白了 Paper Code
2. 摘要
显性序列转导模型基于包括编码器和解码器的复杂递归或卷积神经网络。性能最好的模型还通过注意力机制连接编码器和解码器。我们提出了一个新的简单的网络架构Transformer完全基于注意力机制完全免除了递归和卷积。在两个机器翻译任务上的实验表明这些模型在质量上是上级的同时具有更好的并行性并且需要更少的训练时间。我们的模型在WMT 2014英语到德语翻译任务中达到了28.4 BLEU比现有的最佳结果包括集成提高了2 BLEU以上。在WMT 2014英语到法语的翻译任务中我们的模型在8个GPU上训练了3.5天后建立了一个新的单模型最先进的BLEU得分为41.0这是文献中最佳模型训练成本的一小部分。
Keywordstransformer纯注意力机制
3.Introduction
递归模型通常沿输入和输出序列的符号位置沿着因子计算。将位置与计算时间中的步骤对齐它们生成隐藏状态ht的序列作为前一个隐藏状态ht-1和位置t的输入的函数。这种固有的顺序性质排除了训练示例中的并行化这在较长的序列长度下变得至关重要因为内存约束限制了示例之间的并行化。最近的工作通过因式分解技巧和条件计算实现了计算效率的显着提高同时还提高了后者的模型性能。然而顺序计算的基本约束仍然存在。注意力机制已经成为各种任务中引人注目的序列建模和转导模型的组成部分允许在不考虑它们在输入或输出序列中的距离的情况下对依赖关系进行建模。然而除了少数情况外在所有情况下这种注意力机制都与循环网络结合使用。在这项工作中我们提出了Transformer一个模型架构避免复发而是完全依赖于注意力机制以绘制输入和输出之间的全局依赖关系。Transformer支持更高的并行化在8个P100 GPU上训练12小时后翻译质量就能达到最新水平。
减少顺序计算的目标也构成了扩展神经GPUByteNet 和ConvS 2S 的基础所有这些都使用卷积神经网络作为基本构建块并行计算所有输入和输出位置的隐藏表示。在这些模型中将来自两个任意输入或输出位置的信号关联起来所需的操作数量随着位置之间的距离而增长对于ConvS 2S是线性的而对于ByteNet是线性的。这使得学习远距离位置之间的依赖关系变得更加困难。在Transformer中这被减少到恒定数量的操作尽管由于平均注意力加权位置而降低了有效分辨率。自我注意力英语Self-attention有时也被称为内部注意力intra-attention是一种将单个序列的不同位置联系起来以计算该序列的表示的注意力机制。自我注意已成功用于各种任务包括阅读理解抽象概括文本蕴涵和学习任务独立的句子表征。端到端记忆网络基于循环注意机制而不是序列对齐的循环并且已被证明在简单语言问题回答和语言建模任务中表现良好。然而据我们所知Transformer是第一个完全依靠自我注意力来计算其输入和输出的表示而不使用序列对齐的RNN或卷积的转换模型。 传统的递归模型通常沿着输入和输出序列的符号位置进行计算这意味着它们需要依次处理每个符号的位置这在处理长序列时会导致效率低下。 最近的一些研究工作尝试通过不同的技术来改善计算效率但是仍然受到顺序计算的基本限制。注意力机制是一种常见的用于处理序列数据的方法它允许模型在不考虑符号在输入或输出序列中的距离的情况下对它们之间的依赖关系进行建模。然而传统的注意力机制通常与循环神经网络RNN结合使用而且仍然受到顺序计算的限制。 为了克服这些限制作者提出了一种名为Transformer的新型模型架构它完全依赖于自我注意力机制来处理序列数据而不使用循环神经网络或卷积。这使得Transformer能够更有效地处理长序列并且支持更高的并行计算因此能够更快地训练模型并获得更好的性能。Transformer已经在机器翻译等任务中取得了很好的表现。 4. 网络结构详解
大多数竞争性神经序列转导模型具有编码器-解码器结构。这里编码器将符号表示的输入序列x1xn转换为连续表示序列z z1…Zn。给定z解码器然后生成输出序列y1…ym中的每一个。在每一步模型都是自回归的在生成下一个符号时模型会使用先前生成的符号作为额外的输入。Transformer遵循这种整体架构编码器和解码器均使用堆叠的自注意和逐点全连接层结构如下图所示。 编码器和解码器堆栈 编码器编码器由N 6个相同层的堆栈组成。每层有两个子层。第一个是多头自注意机制第二个是一个简单的位置明智的全连接前馈网络。两个子层的每一个周围使用残差连接然后进行层归一化。也就是说每个子层的输出是 L a y e r N o r m ( x S u b l a y e r ( x ) ) LayerNorm(x Sublayer(x)) LayerNorm(xSublayer(x))其中Sublayerx是子层本身实现的函数。为了促进这些残差连接模型中的所有子层以及嵌入层产生维度dmodel 512的输出。
解码器解码器也是由一个堆栈的N 6相同的层。除了每个编码器层中的两个子层之外解码器还插入第三子层该第三子层对编码器堆栈的输出执行多头注意。与编码器类似我们在每个子层周围使用残差连接然后进行层归一化。我们还修改了解码器堆栈中的自关注子层以防止关注后续位置。这种掩蔽结合输出嵌入偏移一个位置的事实确保了位置i的预测只能依赖于小于i的位置处的已知输出。
注意力 注意力函数可以被描述为将查询和一组键值对映射到输出其中查询、键、值和输出都是向量。输出被计算为值的加权和其中分配给每个值的权重由查询与对应键的兼容性函数计算。
标度点积注意力如下图所示输入包含查询、键维度dk以及维度dv的值组成。计算查询与所有键的点积将每个键除以 √ d k √dk √dk并应用softmax函数来获得值的权重。这些查询被打包到一个矩阵Q中。键和值也被打包到矩阵K和V中。我们计算输出矩阵为 两种最常用的注意力函数是加法注意力和点积乘法注意力。点积注意力计算相似度与我们的算法相同除了比例因子为 1 d k \frac{1}{\sqrt{d_k}} dk 1。加法注意力使用具有单个隐藏层的前馈网络计算兼容性函数。虽然两者在理论复杂度上相似但点积注意力在实践中要快得多空间效率更高因为它可以使用高度优化的矩阵乘法代码来实现。虽然对于较小的dk值这两种机制的表现相似但在dk值较大的情况下加法注意力优于点积注意力。我们怀疑对于较大的dk值点积的大小会变大从而将softmax函数推到梯度非常小的区域。为了抵消这种影响我们将点积缩放 1 d k \frac{1}{\sqrt{d_k}} dk 1。 多头注意我们发现与使用 d m o d e l d_{model} dmodel维的键、值和查询来执行单个注意力函数。不同的是使用不同的学习线性投影将查询、键和值分别线性投影h次到dk、dk和dv维是有益的。在这些查询、键和值的每个投影版本上并行执行注意力函数产生dv-dimensional输出值。这些数据被连接起来并再次投影从而得到最终值如下图所示。多头注意允许模型在不同的位置联合注意来自不同表示子空间的信息。对于一个单一的注意力头平均化抑制了这一点。 其中投影是参数矩阵 W i Q ∈ R d m o d e l × d k W^Q_i ∈ R^{d_{model}×d_k} WiQ∈Rdmodel×dk W i K ∈ R d m o d e l × d k W^K_i ∈ R^{d_{model}×d_k} WiK∈Rdmodel×dk W i V ∈ R d m o d e l × d v W^V_i ∈ R^{d_{model}×d_v} WiV∈Rdmodel×dv和 W O ∈ R d v × d m o d e l W^O ∈ R^{dv ×dmodel} WO∈Rdv×dmodel。在这项工作中采用h 8平行注意层或头。对于每一个我们使用dk dv dmodel/h 64。由于每个头的维数降低总的计算成本是类似的单头注意与全维。 在“编码器-解码器注意”层中查询Q来自先前的解码器层并且存储器键K和值V来自编码器的输出。这使得解码器中的每个位置都可以覆盖输入序列中的所有位置。这模仿了序列到序列模型中典型的编码器-解码器注意力机制。编码器包含自注意层。在自关注层中所有的键、值和查询都来自同一个地方在这种情况下是编码器中前一层的输出。编码器中的每个位置可以涉及编码器的前一层中的所有位置。类似地解码器中的自关注层允许解码器中的每个位置关注解码器中的所有位置直到并包括该位置。我们需要防止解码器中的冗余信息流以保持自回归特性。我们通过屏蔽设置为−∞softmax输入中对应于非法连接的所有值来实现这一点。
位置前馈网络除了注意力子层之外编码器和解码器中的每一层都包含一个完全连接的前馈网络该网络单独且相同地应用于每个位置。这包括两个线性变换中间有一个ReLU激活。 虽然线性变换在不同位置是相同的但它们在层与层之间使用不同的参数。另一种描述这种情况的方式是两个卷积内核大小为1。输入和输出的维度为dmodel 512内层的维度为dff 2048。
嵌入式和Softmax与其他序列转换模型类似使用学习的嵌入将输入令牌和输出令牌转换为维度dmodel的向量。还使用常用的学习线性变换和softmax函数将解码器输出转换为预测的下一个令牌概率。在我们的模型中我们在两个嵌入层和pre-softmax线性变换之间共享相同的权重矩阵。在嵌入层中我们将这些权重乘以嵌入模型。
位置编码 由于transformer不包含递归和卷积为了让模型利用序列的顺序必须注入一些关于序列中token的相对或绝对位置的信息。为此在编码器和解码器堆栈的底部向输入嵌入添加“位置编码”。位置编码与嵌入具有相同的维度dmodel因此两者可以相加。有许多位置编码的选择学习和固定。在这项工作中我们使用不同频率的正弦和余弦函数 其中pos是位置i是尺寸。即位置编码的每个维度对应于正弦曲线。波长形成从2π到10000 · 2π的几何级数。之所以选择这个函数是因为我们假设它可以让模型很容易地学会通过相对位置来参与因为对于任何固定的偏移量kPEposk都可以表示为PEpos的线性函数。我们还尝试使用学习的位置嵌入发现两个版本产生了几乎相同的结果。我们选择正弦版本因为它可以允许模型外推到比训练期间遇到的更长的序列长度。
为什么用自注意力 一个是每层的总计算复杂度。另一个是可以并行化的计算量这是通过所需的最小顺序操作数来衡量的。第三个是网络中长距离依赖之间的路径长度。学习长程依赖性是许多序列转导任务中的关键挑战。影响学习这种依赖关系的能力的一个关键因素是前向和后向信号必须在网络中穿过的路径的长度。输入和输出序列中任意位置组合之间的路径越短就越容易学习长程依赖性。
5.总结
它没有用递归和卷积只用注意力机制。包含一个编码器一个解码器每个都有N层在最开始有位置编码实现序列结构信息。编码器的每层包含一个多头自注意力和一个前馈神经网络层。 解码器包含一个多头自注意力、一个前馈神经网络外加一层对输出进行多头自注意力。