| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Attention Is All You Need 翻译 Transformer翻译 -> 正文阅读 |
|
[人工智能]Attention Is All You Need 翻译 Transformer翻译 |
下载论文请点击摘要?????主流的序列转换模型都是基于复杂的循环或者卷积神经网络的,他们都包含一个编码器和一个解码器。做的最好的模型也是通过注意力机制将编码器和解码器连接起来。我们提出了一个简单的网络结构–Transformer,仅依赖于注意力机制,完全放弃递归和卷积。在两个机器翻译任务中的实验表明:这些模型在翻译效果上更好,同时更并行化,训练需要的时间明显更少。我们的模型在 WMT 2014英语转德语翻译任务中达到了28.4 BLEU,比现有的最好的结果高出 2 BLEU。在WMT 2014英语转法语翻译任务中,我们的模型建立了一个新的单模型,在8块GPU上训练了3.5天后取得了到目前为止最好的BLEU–41.8分。这是文献中的最好的训练模型的训练代价的一小部分。我们将Transformer成功的运用在了大但有限的训练数据集上来做英语选区解析,表现了Transformer对其他任务具有良好的泛化能力。 引言?????特别的,循环神经网络,长短期记忆网络,门控循环神经网络,作为目前最好的模型,是已经在序列模型和转换问题上建立了稳固地位的,比如:语言模型和机器翻译。但是大量的努力继续推动着循环语言模型和编码器-解码器架构的发展。 2、背景?????减少按照顺序计算的目标也是Extended Neural GPU[16], ByteNet [18] and ConvS2S [9]网络产生的基础,他们都是用卷积神经网络作为一个基础构造块。并行计算所有输入和输出位置的隐藏表示。在这些模型中,将两个任意输入或输出位置的信号关联起来所需的操作数随着位置之间的距离变长而增加,对于ConvS2S是线性级的,对于ByteNet是对数级的。这让学习远距离位置之间的依赖关系变的更困难。在Transformer中这减小到了一个固定的操作数,尽管是以平均加权注意力位置的分辨力的有效性降低为代价的,我们用3.2节中的多头注意力机制来抵消这种影响。 3、模型架构?????最具竞争力的神经序列转换模型有一个编码器-解码器结构。这里编码器用符号表示的输入序列(x1, …, xn)映射到了用连续表示的一个序列z = (z1, …, zn)。给定z,然后,解码器一次生成一个元素的符号输出序列。模型的每一步都是自回归,使用之前生成的符号作为生成下一个符号的输入。 3.1、编码器和解码器堆编码器 :编码器是由N=6的特征层堆叠而成的。每个层有两个子层。第一个子层是一个多头的自注意力机制,第二个是一个简单的, 具有position-wise的全连接前馈网络, 我们在每个子层都使用了残差连接,每个子层然后再做层标准化。也就是这样的,每个子层的输出是LayerNorm(x + Sublayer(x)),在这里边Sublayer(x)是一个函数由sub-layer自己实现(Sublayer(x)其实是图一中的Multi-Head Attention或者Feed forward)。为了方便残差链接,在模型中的所有子层以及embedding layers(嵌入层),产生的输出维度都是
d
m
o
d
e
l
d_{model}
dmodel? = 512。 3.2、注意力机制????? 注意函数可以描述为将一个 query和一组 key-value对映射到一个输出, query, keys, values和输出都是向量。输出是values的加权和。其中,指派给每个value的权重是由query和相应的key的调和函数计算的。 3.2.1、比例点积注意力????? 我们称我们的特殊的注意力为”比例点积注意力“(Figure 2)。输入由维度为
d
k
d_k
dk?的queries和 keys组成,values的维度为
d
v
d_v
dv?。我们将query和所有的keys计算点积,每一个都除以
d
k
\sqrt{d_k}
dk??, 用softmax函数(作用在上述结果上)获得values的权重。(看公式1) 3.2.2、多头注意力????? 而不是用
d
m
o
d
e
l
d_{model}
dmodel?-维度的 keys, values 和 queries执行一个单个的注意力函数,我们发现用不同的线性投影将queries、keys和values分别线性投影到dk、dk和dv维上h次是有益的。在每一个这些queries, keys 和values的投影版本中,我们接着并行执行注意力函数,生成
d
m
o
d
e
l
d_{model}
dmodel?-维输出值。把它们Concat在一起,然后再执行一次投影,将结果作为最终的值,就像Figure 2 : 中描绘的那样。 3.2.3、在我们模型中注意力的应用Transformer以三个不同的方式使用了多头注意力:
3.3、Position-wise 前馈网络????? 除了去关注子层,在我们的编码器和解码器中的每一层都包含一个全连接前馈网络。它们被应用到了相同的位置上。这包含了两个线性变换,两线性变换之间用一个ReLU激活函数。 3.4、嵌入层和softmax层????? 和其他序列转换模型类似,我们用已学习过的嵌入层将输入tokens和输出tokens转换成 d m o d e l d_{model} dmodel?维度的向量。我们也用已学习过的寻常转化和softmax函数将解码器的输出转换为预测下一个token的概率。在我们的模型中,我们在两个嵌入层和pre-softmax线性转换上共享相同的权重矩阵,与[30]类似。在嵌入层,我们用权重乘以 d m o d e l \sqrt{d_{model}} dmodel??。 3.5、位置编码????? 由于我们的模型没有包含循环和卷积,为了模型能够利用序列的有序性,我们必须再序列中注入token的相对或者绝对位置信息。为此,我们在编码器和解码器堆的底部将“位置编码”添加到输入嵌入层,位置编码和嵌入层有相同的维度
d
m
o
d
e
l
d_{model}
dmodel?,因此两个可以相加。位置编码有很多可选方式,比如:可以学习的和固定位置的。在本文中,我们用不同频率的sin和cos函数(属于固定位置的一种位置编码编码方式)。
P
E
p
o
s
,
2
i
=
s
i
n
(
p
o
s
/
1000
0
2
i
/
d
m
o
d
e
l
)
PE_{pos, 2i}=sin(pos/10000^{2i/d_{model}})
PEpos,2i?=sin(pos/100002i/dmodel?)
P
E
p
o
s
,
2
i
+
1
=
c
o
s
(
p
o
s
/
1000
0
2
i
/
d
m
o
d
e
l
)
PE_{pos, 2i+1}=cos(pos/10000^{2i/d_{model}})
PEpos,2i+1?=cos(pos/100002i/dmodel?)其中,pos是当前位置,
i
i
i是维度。位置编码的每一个维度对应一个正弦波,波长是从2π到10000*2π的几何数列。我们选择这个函数是因为我们认为这个函数通过添加相对位置信息能让模型学起来更容易。因为对于任何固定的偏移量k,
P
E
p
o
s
+
k
PE_{pos+k}
PEpos+k?被认为是
P
E
p
o
s
PE_{pos}
PEpos?的一个线性函数。 4、为什么是自注意力????? 在这部分,我们对比了自注意力层与循环层和卷积层的很多方面,用于映射用符号( x 1 , . . . , x n x_1, ..., x_n x1?,...,xn?)表示的一个变长序列到另一个等长序列 ( z 1 , . . . , z n z_1, ..., z_n z1?,...,zn?),其中 x i , z i ∈ R d x_i, z_i\in \mathbb R^d xi?,zi?∈Rd, 比如在一个经典的序列转换编码器或者解码器中的一个隐藏层。激励我们用自注意力的原因主要有三个:
Table 1: 不同类型层的最大路径长度,每一层的复杂度,和最小的序列操作数。
n
n
n是序列长度,
d
d
d表征维度,
k
k
k卷积核大小,
r
r
r是受限的自注意力的邻域大小。 5、训练?????这部分描述了我们模型的训练组织方式。 5.1、训练数据和批量大小?????我们在标准的 WMT 2014英语转德语数据集上训练,这个数据集包括450万个句子对。句子是用字节对编码的,这个数据集大约共享了37000个tokens的源词汇和目标词汇。对于英语转法语,我们用了特别大的WMT 2014 英语转法语的数据集,数据集包括3500万个句子,将token拆分成了32000个词条。句子对成批次放置在一起,批次大小近似为序列长度。每个训练批次包含一组句子对,包含了大约25000个源tokens和25000个目标tokens。 5.2、硬件和调度?????我们在 8 NVIDIA P100 GPUs上训练模型,我们的基础模型使用的超参数在整篇论文中已经被介绍过了。每个训练step大概需要0.4秒,我们训练基础模型总共用了 100,000 steps或者12 小时。对于我们的大模型(在table 3的底部上),每个step用时1秒。大模型训练了30万steps(3.5天)。 5.3、优化?????我们用
β
1
=
0.9
,
β
2
=
0.98
和
ε
=
1
0
?
9
\beta_1 = 0.9, \beta_2 = 0.98 和 \varepsilon = 10^{-9}
β1?=0.9,β2?=0.98和ε=10?9 的Adam优化器。在整个训练的过程中,我们根据下面的公式修改学习率:
l
r
a
t
e
=
d
m
o
d
e
l
?
0.5
?
m
i
n
(
s
t
e
p
n
u
m
?
0.5
,
s
t
e
p
n
u
m
?
w
a
r
m
u
p
_
s
t
e
p
s
?
0.5
)
(
3
)
lrate = d^{-0.5}_{model}*min(step_num^{-0.5}, step_num * warmup\_steps^{-0.5}) \quad\quad\quad\quad\quad\quad\quad(3)
lrate=dmodel?0.5??min(stepn?um?0.5,stepn?um?warmup_steps?0.5)(3) 5.4、正则化?????我们在训练的过程中用了三种正则化方法:
6、结果Table 2: Transformer比以前的最好的模型在英语转德语和英语转法语上取得了更好的BLEU得分,且仅花费了以前训练代价的一部分。 6.1、机器翻译?????在WMT 2014英语转德语翻译任务中,大transformer模型(Transformer (大)在 Table 2)比以前最好的模型 (包括整体上)高了2.0 BLEU,建立了一个新的最好的28.4的BLEU得分。这个模型的配置信息已经放在了Table 3的底部。在 8 P100 GPUs上训练了3.5天。甚至我们的基础模型都比以前的所有模型好,训练代价只是任何一个比赛模型的一部分。 6.2、模型变量?????为了评估 Transformer的不同部分的重要性,用不同的方法改变我们的模型。在development set newstest2013上检验英语转法语的翻译效果。我们用了束搜索,就像上边说的那样,但是没有做检查点取平均。我们将这些结果展示在了Table 3中。 Table 3: Transformer架构上的变量。未列出的值与基本模型的值相同,所有的度量是在英语转德语的development set,newstest2013.上进行的。列出来的困惑度是每个词条的,是根据我们的字节对编码的,不应该认为是每个词的困惑度。 6.3、英语选区解析?????为了评估 Transformer在其他任务中是否具有泛化能力,我们在英语选区解析上做了实验。这个任务表现出了明显的挑战:输出受到强烈的结构约束,且明显比输入长。而且RNN 序列到序列的模型,在小数据区域不能达到最好的结果。 7、总结?????在本篇论文中,我们展示了Transformer,完全基于注意力的序列转换模型,用多头注意力层取代了在编码器解码器架构中最常用的卷积层。 感谢: 我们非常感谢 Nal Kalchbrenner 和 Stephan Gouws,因为他们富有成效的,评论、改正和启发。 参考文献: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:48:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |