Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

Mostafa Dehghani 等 作者机器之心编辑部编译

谷歌的机器翻译模型 Transformer,现在可以用来做任何事了

去年,谷歌发布了机器学习模型 Transformer,该模型在机器翻译及其他语言理解任务上的表现远远超越了以往算法。今天,谷歌发布该模型最新版本——Universal Transformer,弥补了在大规模语言理解任务上具有竞争力的实际序列模型与计算通用模型之间的差距,其 BLEU 值比去年的 Transformer 提高了 0.9。在多项有难度的语言理解任务上,Universal Transformer 的泛化效果明显更好,且它在 bAbI 语言推理任务和很有挑战性的 LAMBADA 语言建模任务上达到了新的当前最优性能。

去年,谷歌发布了一种新的机器学习模型 Transformer(参见:机器翻译新突破:谷歌实现完全基于 attention 的翻译架构),该模型在机器翻译及其他语言理解任务上的表现远远超越了现有算法。在 Transformer 之前,多数基于神经网络机器翻译方法依赖于循环神经网络(RNN),后者利用循环(即每一步的输出馈入下一步)进行顺序操作(例如,逐词地翻译句子)。尽管 RNN 在建模序列方面非常强大,但其序列性意味着该网络在训练时非常缓慢,因为长句需要的训练步骤更多,其循环结构也加大了训练难度。

与基于 RNN 的方法相比,Transformer 不需要循环,而是并行处理序列中的所有单词或符号,同时利用自注意力机制将上下文与较远的单词结合起来。通过并行处理所有单词,并让每个单词在多个处理步骤中注意到句子中的其他单词,Transformer 的训练速度比 RNN 快很多,而且其翻译结果也比 RNN 好得多。然而,在更小、更加结构化的语言理解任务或简单的算法任务中(如拷贝一个字符串(如将输入「abc」转换为「abcabc」)),Transformer 则表现欠佳。相比之下,在这些任务中表现良好的模型(如神经 GPU 和神经图灵机)在大型语言理解任务(如翻译)中表现不好。

谷歌研究人员在《Universal Transformers》一文中使用一种新型高效的时间并行循环(parallel-in-time recurrence)方式(可在更广泛任务上产生更强大的结果)把标准 Transformer 扩展为计算通用(图灵完备)模型。研究者将该模型建立在 Transformer 的并行结构上,以保持其快速的训练速度。但是他们用单一、时间并行循环的变换函数的多次应用代替了 Transformer 中不同变换函数的固定堆叠(即,相同的学习变换函数在多个处理步骤中被并行应用于所有符号,其中每个步骤的输出馈入下一个)。关键在于,RNN 逐个符号(从左到右)处理序列,而 Universal Transformer 同时处理所有符号(像 Transformer 一样),然后使用自注意力机制在循环处理步骤(步骤数量可变)上,对每个符号的解释进行改进。这种时间并行循环机制比 RNN 中使用的顺序循环(serial recurrence)更快,也使得 Universal Transformer 比标准前馈 Transformer 更强大。

Universal Transformer 模型使用自注意力机制结合不同位置的信息,应用循环变换函数,以并行化方式重复为序列的每个位置细化一系列向量表征(如图自 h_1 到 h_m)。箭头表示操作间的依赖关系。

在每一步中,信息利用自注意力从每个符号(例如句中单词)传递到其他符号,就像在原始 Transformer 中一样。但是,现在这种转换的次数(即循环步的数量)可以提前手动设置(比如设置为固定数字或输入长度),也可以通过 Universal Transformer 本身进行动态设定。为了实现后者,谷歌研究人员在每个位置都添加了一个自适应计算机制,它可以分配更多处理步骤给较模糊或需要更多计算的符号。

用一个直观的例子来说明这是如何起作用的,比如这句话「I arrived at the bank after crossing the river」。在这个案例中,与没有歧义的「I」或「river」相比,推断「bank」一词最可能的含义需要用到更多的语境信息。当我们用标准 Transformer 对这个句子进行编码时,我们需要把同样的计算量无条件地应用于每个单词。然而,Universal Transformer 的自适应机制允许模型仅在更模糊的单词上花费更多计算,例如,使用更多步骤来整合消除单词「bank」歧义所需的额外语境信息,而在没那么模糊的单词上则花费较少的步骤。

起初,让 Universal Transformer 仅重复应用单一学习函数来处理输入似乎是有限制性的,尤其是与应用不同函数的固定序列的标准 Transformer 相比。但是,学习如何重复应用单一函数意味着应用的数量(处理步骤)现在是可变的,而这是一个很重要的区别。如上所述,除了允许 Universal Transformer 对更模糊的符号应用更多的计算之外,它还允许模型根据输入的整体大小来调整函数应用的数量(更长的序列需要更多的步骤),或者基于训练期间学习到的其它特性来动态地决定将函数应用到输入的任何给定部分的频率。这使得 Universal Transformer 在理论上更加强大,因为它可以有效地学习对输入的不同部分应用不同的变换。而这是标准 Transformer 无法做到的,因为它由只应用一次的学习变换块(learned Transformation block)的固定堆叠组成。

尽管 Universal Transformer 在理论上更加强大,但研究人员仍关心实验性能。实验结果证明,Universal Transformer 确实能够从样本中学习如何复制和反转字符串,以及如何比 Transformer 或 RNN 更好地执行整数加法(尽管不如神经 GPU 效果好)。此外,在多项有难度的语言理解任务上,Universal Transformer 的泛化效果明显更好,且它在 bAbI 语言推理任务和很有挑战性的 LAMBADA 语言建模任务上达到了新的当前最优性能。但或许最令人感兴趣的是,Universal Transformer 在与基础 Transformer 使用相同数量参数、训练数据以相同方式进行训练时,其翻译质量比后者提高了 0.9 个 BLEU 值。在去年 Transformer 发布时,它的性能比之前的模型提高了 2.0 个 BLEU 值,而 Universal Transformer 的相对改进量是去年的近 50%。

因此,Universal Transformer 弥补了在大规模语言理解任务(如机器翻译)上具有竞争力的实际序列模型与计算通用模型(如神经图灵机或神经 GPU)之间的差距,计算通用模型可使用梯度下降来训练,用于执行随机算法任务。谷歌很高兴看到时间并行序列模型的近期进展,以及处理深度中计算能力和循环的增加,谷歌希望 Universal Transformer 可以帮助研究人员构建更加强大、更能高效利用数据的算法,泛化性能超越当前最优算法。

论文:Universal Transformers

  • 论文链接:https://arxiv.org/pdf/1807.03819.pdf

  • Universal Transformer 代码:https://github.com/tensorflow/tensor2tensor/blob/master/tensor2tensor/models/research/universal_transformer.py

摘要:自注意力前馈序列模型已被证明在序列建模任务上效果显著,这些任务包括机器翻译 [31]、图像生成 [30] 和 constituency parsing [18],从而提供了可以替代循环神经网络(RNN)的令人信服的方案,尽管 RNN 至今仍是许多序列建模问题事实上的标准架构。然而,尽管取得了这些成功,像 Transformer [31] 这样的前馈序列模型却无法泛化至很多循环模型可以轻松处理的任务上(例如,在字符串或公式长度超过训练时模型观察到的类型时,复制字符串甚至简单的逻辑推断 [28])。此外,与 RNN 相比,Transformer 模型在计算上不通用,这限制了其理论表达能力。本论文提出了 Universal Transformer,它可以解决这些实践和理论缺陷。我们展示了它可以在多项任务中实现性能提升。Universal Transformer 不像 RNN 那样使用对句中单个符号的循环,而是使用每个循环步骤重复修改句子中所有符号的表征。为了结合句子不同部分的信息,该模型在每个循环步中都使用了自注意力机制。假设有充足的记忆,则其循环会使 Universal Transformer 成为计算通用模型。我们进一步使用自适应计算时间(adaptive computation time,ACT)机制,使模型动态调整句子中每个位置的表征被修改的次数。除了节省计算量以外,ACT 还能够提高模型的准确率。我们的实验结果表明,在许多算法任务及大量大规模语言理解任务中,Universal Transformer 的泛化性能大大增强,在机器翻译中的表现超越了基础 Transformer 及 LSTM,在 bAbI 语言推理及富有挑战性的 LAMBADA 语言建模任务中达到了新的当前最优性能。

参考链接:https://ai.googleblog.com/2018/08/moving-beyond-translation-with.html.

理论谷歌机器学习模型Transformer机器翻译
8
相关数据
神经图灵机技术

神经图灵机(NTMs)是Alex Graves等人发表的一种递归神经网络模型。NTM将神经网络的模糊模式匹配能力与可编程计算机的算法能力相结合。一个NTM有一个神经网络控制器连接到外部存储器资源,通过注意机制与外部存储器资源进行交互。 记忆交互是端对端可区分的,可以使用梯度下降对其进行优化。 具有长期短期记忆(LSTM)网络控制器的NTM可以从输入和输出示例推断简单的算法,例如复制,排序和关联回忆。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

注意力机制技术

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

机器翻译技术

机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

梯度下降技术

梯度下降是用于查找函数最小值的一阶迭代优化算法。 要使用梯度下降找到函数的局部最小值,可以采用与当前点的函数梯度(或近似梯度)的负值成比例的步骤。 如果采取的步骤与梯度的正值成比例,则接近该函数的局部最大值,被称为梯度上升。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

堆叠技术

堆叠泛化是一种用于最小化一个或多个泛化器的泛化误差率的方法。它通过推导泛化器相对于所提供的学习集的偏差来发挥其作用。这个推导的过程包括:在第二层中将第一层的原始泛化器对部分学习集的猜测进行泛化,以及尝试对学习集的剩余部分进行猜测,并且输出正确的结果。当与多个泛化器一起使用时,堆叠泛化可以被看作是一个交叉验证的复杂版本,利用比交叉验证更为复杂的策略来组合各个泛化器。当与单个泛化器一起使用时,堆叠泛化是一种用于估计(然后纠正)泛化器的错误的方法,该泛化器已经在特定学习集上进行了训练并被询问了特定问题。

推荐文章
暂无评论
暂无评论~