返回首页

网站导航
资讯首页> 热点推荐 > 谷歌的机器翻译模型 Transformer能处理所有事情?

    谷歌的机器翻译模型 Transformer能处理所有事情?

    热点推荐2018年08月17日
    分享

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


    谷歌的机器翻译模型 Transformer

      
      与基于 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 可以帮助研究人员构建更加强大、更能高效利用数据的算法,泛化性能超越当前最优算法。

    相关阅读