人工智能论文:2017.6 Attention Is All You Need-3-训练;结果;结论;Transformer模型相当于 E=MC^2

5 训练Training


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

5.1 训练数据和批次处理Training Data and Batching


我们在标准的WMT 2014英德数据集上进行了训练,该数据集包含约450万个句子对。句子使用字节对编码[3]进行编码,其共享源-目标词汇表包含约37000个标记。对于英法翻译,我们使用了更大的WMT 2014英法数据集,其中包含3600万个句子,并将标记拆分为一个包含32000个单词片段的词汇表[31]。句子对按近似序列长度进行批次处理。每个训练批次包含一组句子对,其中大约包含25000个源标记和25000个目标标记。

5.2 硬件和训练计划


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

5.3 优化器


我们使用了Adam优化器[17],其中β1 = 0.9,β2 = 0.98,且 = 10−9。我们根据以下公式在训练过程中调整了学习率:

这对应于在前warmup_steps个训练步骤中线性增加学习率,之后则根据步骤数的逆平方根成比例地减小学习率。我们使用了warmup_steps = 4000。

5.4 正则化


我们在训练过程中采用了三种正则化方法:
残差丢弃法:在每个子层的输出上应用丢弃法[27],然后再将其添加到子层输入并进行归一化。此外,我们还在编码器和解码器堆栈的嵌入和位置编码的总和上应用了丢弃法。对于基础模型,我们使用的丢弃率为Pdrop = 0.1。

在训练过程中,我们采用了值为 ls = 0.1 的标签平滑[30]。这会增加困惑度,因为模型会学习变得更加不确定,但是可以提高准确率和BLEU得分。

6 结果 Results


6.1 机器翻译


在WMT 2014英德翻译任务上,大型Transformer模型(表2中的Transformer(大型))在BLEU得分上超过了之前报道的最佳模型(包括模型集合)超过2.0分,达到了新的最佳BLEU得分28.4。该模型的配置列在表3的底部。在8个P100 GPU上训练需要3.5天。即使我们的基础模型也超过了之前发布的所有模型和模型集合,且训练成本仅为任何竞争模型的一小部分。

在WMT 2014英法翻译任务上,我们的大型模型达到了41.0的BLEU得分,超过了之前发布的所有单一模型,且训练成本不到之前最佳模型训练成本的四分之一。用于英法翻译的Transformer(大型)模型使用的丢弃率Pdrop = 0.1,而不是0.3。

对于基础模型,我们使用一个由最后5个检查点平均得到的单一模型,这些检查点每10分钟写入一次。对于大型模型,我们平均了最后20个检查点。我们使用束搜索,束大小为4,长度惩罚α = 0.6[31]。这些超参数是在开发集上进行实验后选择的。我们在推理过程中设置最大输出长度为输入长度+50,但在可能的情况下会提前终止[31]。

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

6.2 模型变体


为了评估Transformer中不同组件的重要性,我们以不同方式修改了基础模型,并在开发集newstest2013上测量了英德翻译性能的变化。我们使用了上一节描述的束搜索,但没有使用检查点平均。我们在表3中列出了这些结果。

在表3的行(A)中,我们改变了注意力头的数量和注意力键与值的维度,同时保持计算量不变,如3.2.2节所述。虽然单头注意力比最佳设置差0.9个BLEU点,但注意力头过多也会导致质量下降。

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

7 结论


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

对于翻译任务,Transformer的训练速度显著快于基于循环或卷积层的架构。在WMT 2014英德和WMT 2014英法翻译任务上,我们都达到了新的最佳水平。在前一个任务中,我们的最佳模型甚至超过了之前报道的所有模型集合。

我们对基于注意力的模型的未来充满期待,并计划将它们应用于其他任务。我们计划将Transformer扩展到涉及非文本输入和输出模态的问题,并研究局部、受限的注意力机制,以有效处理大型输入和输出,如图像、音频和视频。使生成过程减少顺序性也是我们的另一个研究目标。我们用于训练和评估模型的代码可以在https://github.com/tensorflow/tensor2tensor找到。

Ankie的评论:

最近阅读了大量关于transformer和GPT相关的文章视频等,对transformer的理解也逐步加深。

transformer最开始只是为了解决机器翻译的问题。相比较之前RNN等方案,transformer的通过attention机制,明显提高了机器翻译的准确率。

出乎意料的是,OpenAI基于transformer在GPT1/2/3/4上的逐步改进优化,加上大力出奇迹,竟然基本解决了机器和人的沟通问题,远远超过原来的机器翻译的小目标。后来的Sora文生视频更是让人咋舌。

Attention Is All You Need这篇论文对于近代人工智能产业相当于爱因斯坦的狭义相对论。

Transformer模型相当于 E=MC^2

  • 42
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
"Attention is All You Need" 是一篇由 Vaswani 等人于 2017 年提出的论文,提出了一种名为 Transformer模型架构,用于进行序列到序列的任务,如机器翻译。这个模型使用了自注意力机制(self-attention)来捕捉输入序列中不同位置之间的依赖关系,取代了传统的循环神经网络和卷积神经网络。 关于 "Attention is All You Need" 的代码实现,你可以在 GitHub 上找到多个开源的实现版本。其中最著名的是由 Google Brain 团队开发的 TensorFlow 实现和由 Hugging Face 团队开发的 PyTorch 实现。 以下是一个简单的示例代码,展示了如何使用 PyTorch 实现 Transformer 模型: ```python import torch import torch.nn as nn import torch.nn.functional as F class Transformer(nn.Module): def __init__(self, input_dim, hidden_dim, num_heads, num_layers): super(Transformer, self).__init__() self.embedding = nn.Embedding(input_dim, hidden_dim) self.encoder = nn.TransformerEncoder( nn.TransformerEncoderLayer(hidden_dim, num_heads), num_layers ) self.decoder = nn.Linear(hidden_dim, input_dim) def forward(self, x): x = self.embedding(x) x = self.encoder(x) x = self.decoder(x) return F.log_softmax(x, dim=-1) # 创建一个 Transformer 模型实例 model = Transformer(input_dim=1000, hidden_dim=256, num_heads=4, num_layers=6) # 定义输入数据 input_data = torch.tensor([[1, 2, 3, 4, 5]]) # 运行模型 output = model(input_data) ``` 这只是一个简单的示例,实际的代码实现可能会更加复杂,包括数据预处理、训练循环等。你可以根据自己的需求和具体的任务进行相应的修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ankie(资深技术项目经理)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值