在刚刚结束的 WMT2018 国际机器翻译大赛上,阿里巴巴达摩院机器智能实验室机器翻译团队打败多个国外巨头与研究机构,并在英文-中文翻译、英文-俄罗斯语互译、英文-土耳其语互译这 5 个项目的自动评测指标 BLEU 分值都位居第一。阿里达摩院机器智能实验室的陈博兴博士和司罗教授向机器之心介绍了阿里在机器翻译领域的布局应用,以及如何通过对标准的 Transformer 模型进行改进和优化,而获得更为优秀的神经机器翻译系统。
WMT 的全称是 Workshop on Machine Translation,是国际公认的顶级机器翻译赛事之一,也是各大科技公司与学术机构展示自身机器翻译实力的平台。由陈博兴博士带领的达摩院机器翻译团队,在此次比赛中使用业界最新的 Transformer 结构,进行了网络结构的改进和对词语位置信息的充分利用,全面改进了机器翻译的性能。更重要的是,翻译团队充分利用了阿里的计算资源优势,每一种翻译任务都集成了几十上百个基础模型,这需要非常庞大的计算力而实现最优的性能。
在本文中,我们首先会介绍阿里达摩院为什么要做机器翻译及它在 WMT 2018 所采用的基础模型和修正方法,同时还会介绍达摩院所采用的模型集成方法。随后我们还将介绍阿里在模型训练中所采用的模型调优方法,它们可以令译文具有更好的可读性。最后,我们会介绍这一顶尖神经机器翻译系统的部署与应用。
为什么阿里要做机器翻译?
「机器翻译是阿里国际化的生命线。」印度、拉美、东南亚等新兴市场,都被认为将产生「下一个五万亿美元」。作为阿里达摩院机器智能实验室 NLP 首席科学家,司罗不仅肩负着带领团队探索机器翻译前沿技术的任务,更要支持阿里全球业务的快速发展,帮助阿里国际化跨过「语言」这道门槛。
「这也是为什么阿里在此次 WMT 比赛上,除了英中翻译外,还参加中国企业很少涉足的英文-俄罗斯语互译、英文-土耳其语互译,并在这 4 个项目上战胜诸多国外巨头与研究机构,夺得冠军。这背后的推动力量,正是机器翻译在阿里国际化中体现的巨大业务价值。同时,背靠世界最大、质量最好的跨境电商语料库,也让阿里机器翻译技术能在短时间内,取得世界领先。这就是我们期待看到的,研发与业务的协同发展。」
阿里在神经机器翻译模型上的探索
近年来,基于编码器解码器框架的神经机器翻译系统取得了很大的进步与应用。最开始我们基于循环神经网络构建神经机器翻译的标准模型,后来我们考虑使用卷积神经网络提升并行训练效果,而去年谷歌等研究团队更是提出不使用 CNN 和 RNN 抽取特征的 Transformer。尽管 Transformer 在解码速度和位置编码等方面有一些缺点,但它仍然是当前效果最好的神经机器翻译基本架构。
阿里机器翻译团队在 WMT 2018 竞赛上主要采用的还是 Transformer 模型,但是会根据最近的一些最新研究对标准 Transformer 模型进行一些修正。这些修正首先体现在将 Transformer 中的 Multi-Head Attention 替换为多个自注意力分支,而模型会在训练阶段中将学习结合这些分支注意力模块。其次,阿里采用了一种编码相对位置的表征以扩展自注意力机制,并令模型能更好地理解序列元素间的相对距离。
不过据陈博兴博士介绍,在阿里集成的基础模型中,也会有一些基于 RNN 的 Seq2Seq 模型,它会使用标准的编码器-注意力机制-解码器的架构。这些 Seq2Seq 模型在每项翻译任务中大约占所有集成模型中的 10%,集成模型的主体还是 Transformer 模型。
在 NMT 中,基于 Seq2Seq 的模型一般在编码器中会使用多层 LTSM 对输入的源语词嵌入向量进行建模,并编码为一个上下文向量。但是这样编码的定长上下文向量很难捕捉足够的语义信息,因此更好的方法即读取整个句子或段落以获取上下文和主旨信息,然后每一个时间步输出一个翻译的目标语词,且每一个时间步都关注输入语句的不同部分以获取翻译下一个词的语义细节。这种关注输入语句不同部分的方法即注意力机制。Seq2Seq 模型的最后一部分即将编码器与注意力机制提供的上下文信息输入到由 LSTM 构成的解码器中,并输出预测的目标语。
虽然基于 RNN 的 Seq2Seq 模型非常简洁明了,但目前最优秀的神经机器翻译模型并没有采用这种架构。例如去年 Facebook 在 Convolutional Sequence to Sequence Learning 论文中提出的用 CNN 做神经机器翻译,它在准确度尤其是训练速度上都要超过最初基于 RNN 的模型。而后来谷歌在论文 Attention is all you need 中所提出的 Transformer 更进一步利用自注意力机制抽取特征而实现当前最优的翻译效果。
Transformer 基本架构
阿里在翻译系统中主要采用的模型架构还是谷歌原论文所提出的 Transformer。陈博士表示,目前无论是从性能、结构还是业界应用上,Transformer 都有很多优势。例如,自注意力这种在序列内部执行 Attention 的方法可以视为搜索序列内部的隐藏关系,这种内部关系对于翻译以及序列任务的性能有显著性提升。
如 Seq2Seq 一样,原版 Transformer 也采用了编码器-解码器框架,但它们会使用多个 Multi-Head Attention、前馈网络、层级归一化和残差连接等。下图从左到右展示了原论文所提出的 Transformer 架构、Multi-Head Attention 和标量点乘注意力。本文只简要介绍这三部分的基本概念与结构,更详细的 Transformer 解释与实现请查看机器之心的 GitHub 项目:基于注意力机制,机器之心带你理解与训练神经机器翻译系统。
正如与陈博士所讨论的,上图右边的标量点乘注意力其实就是标准 Seq2Seq 模型中的注意力机制。其中 Query 向量与 Value 向量在 NMT 中相当于目标语输入序列与源语输入序列,Query 与 Key 向量的点乘相当于余弦相似性,经过 SoftMax 函数后可得出一组归一化的概率。这些概率相当于给源语输入序列做加权平均,即表示在翻译一个词时源语序列哪些词是重要的。
上图中间的 Multi-head Attention 其实就是多个点乘注意力并行地处理并最后将结果拼接在一起。一般而言,我们可以对三个输入矩阵 Q、V、K 分别进行 h 个不同的线性变换,然后分别将它们投入 h 个点乘注意力函数并拼接所有的输出结果。这种注意力允许模型联合关注不同位置的不同表征子空间信息,我们可以理解为在参数不共享的情况下,多次执行点乘注意力。阿里的翻译系统其实会使用另一种组合点乘注意力的方法,即不如同 Multi-head 那样拼接所有点乘输出,而是对点乘输出做加权运算。
最后上图左侧为 Transformer 的整体架构。输入序列首先会转换为词嵌入向量,在与位置编码向量相加后可作为 Multi-Head 自注意模块的输入,该模块的输出再与输入相加后将投入层级归一化函数,得出的输出再馈送到全连接层后可得出编码器模块的输出。这样相同的 6 个编码器模块(N=6)可构成整个编码器架构。解码器模块首先同样构建了一个自注意力模块,然后再结合前面编码器的输出实现 Multi-Head Attention,最后投入全连接网络并输出预测词概率。此外,每一个编码器与解码器的子层都会带有残差连接与 Dropout 正则化。
加权的 Transformer 网络
阿里根据论文 WEIGHTED TRANSFORMER NETWORK FOR MACHINE TRANSLATION 修正原版网络架构,陈博士表示:「我们首先将谷歌原论文中的 Multi-Head 改进为 Multi-Branch,也就是在每次执行注意力计算时,模型会考虑多个分支以获得更多的信息。这种机制修正原版 Transformer 中等价处理每一个点乘注意力的方式,而允许为不同点乘注意力分配不同的权重。Multi-Branch 的方法因为简化了优化过程而能提升收敛速度 15 − 40%,且还能提升 0.5 个 BLEU 分值。」
对于加权的 Transformer 来说,我们需要修改谷歌原版中的 Multi-Head 与 FFN。首先计算多个点乘注意力 head_i 的方式是一样的,不过 Multi-Branch 如下会计算 head_i bar 而不是将所有 head 拼接在一起。head_i bar 即归一化的点乘注意力,它输入前馈网络 FFN 并将结果做加权和就能得出 Multi-Branch 的最后输出。
其中所有 k_i 与α_i 的和分别都等于 1,M 表示总的分支数,且表达式 BranchedAttention 会计算所有独立分支注意力值的加权和。如下所示为阿里翻译系统所采用的 Multi-Branch 结构,其中 k 是可学习的参数以缩放所有分支对后续运算的贡献大小,α 同样也评估各注意力分支对结果的贡献大小。
如下所示编码器与解码器的架构基本一致,只不过解码器会增加一个 Mask 层以控制模型能访问的目标语序列,即避免当前位置注意到后面位置的信息。这种 Multi-Branch 的修正结构每一个模块只会增加 M 个参数,即 α 的数量,这对于整体模型来说基本是可忽略不计的。
相对位置表征
除了采用 Multi-branch 代替 Multi-head,阿里在 WMT 2018 竞赛上采用的模型还有一处比较大的修改,即使用一种可以表征相对位置方法代替谷歌原论文中所采用的位置编码。这种位置信息在注意力机制中非常重要,因为 Transformer 仅采用注意力机制,而它本身并不能像 RNN 或 CNN 那样获取序列的位置顺序信息。所以如果语句中每一个词都有特定的位置,那么每一个词都可以使用向量编码位置信息,这样注意力机制就能分辨出不同位置的词。
陈博士说:「我们另一个改进是参考了谷歌最近发表的一篇论文,在自注意力机制中加入相对位置信息。在 Transformer 原论文中,位置编码使用的是绝对位置信息,也就是说每一个位置会给一个固定的描述。但是我们在实践中发现语言中的相对位置非常重要,例如在英语到法语的翻译中,英语是形容词加名词,而法语是名词加形容词。这种位置结构其实与短语所在的绝对位置没有太大的关系,相反相对位置对正确的翻译会有很大的影响。」
在原版 Transformer 中,谷歌研究者使用不同频率的正弦和余弦函数实现位置编码:
其中 pos 为词的位置,i 为位置编码向量的第 i 个元素。给定词的位置 pos,我们可以将词映射到 d_model 维的位置向量,该向量第 i 个元素就由上面两个式子计算得出。也就是说,位置编码的每一个维度对应于正弦曲线,波长构成了从 2π到 10000⋅2π的等比数列。
而阿里机器翻译团队采用的方法会考虑输入序列中成对元素之间的位置关系,因此我们可以将输入词序列建模为一个有向的全连接图。在论文 Self-Attention with Relative Position Representations 中,作者们将词 x_i 到词 x_j 之间的有向边表示为 两个向量,它们分别会与 Value 和 Key 向量相加而添加 x_i 到 x_j 的相对位置信息。
上图展示了将输入词序列表示为一个有向全连接图,成对词之间会有两条有向边。每条边都编码了相对位置信息,且相对位置信息的表达如上已经给出。
如下我们将向原版点乘自注意力运算中加入相对位置信息:
其中 z_i 表示一个点乘注意力,α 表示经过 Softmax 后的概率,它衡量了输入序列需要注意哪些词。后面即 Value 向量加上相对位置信息的过程,因为是自注意力过程,所以 Value 向量等于输入向量。因为 Value 向量与 Key 向量是成对出现的,所以相对位置信息同时还应该添加到 Key 向量中,如下表达式在计算 Query 与 Key 向量间相似性的过程中实现了这一点:
其中 e 为 Query 向量与 Key 向量的内积,度量了它们之间的余弦相似性,如果将这种相似性归一化则可以度量翻译某个词时我们应该关注哪些重要的输入词。同样因为这是自注意力机制,那么 Query 与 Key 向量都是输入向量 x。上式分子中的相加项即将相对位置信息加入 Key 向量中。
除了上述这种标准的相对位置修正外,陈博士还表示阿里机器翻译团队在解码部分也会添加这种相对位置信息,这种改进能提升大概 0.4 个 BLEU 分值。
模型集成
对于追求极致准确度的模型来说,速度并不是阿里参赛系统所首要考虑的事情。陈博士说:「这个比赛系统追求性能上的最大化,因此我们会准备上百到几百个基础模型,然后再根据贪心算法从这些备选的基础模型中获取最优的集成方案。一般这样的集成根据不同的任务会有几十到上百个基础模型。」
其实前面所述的新型 Transformer 架构与修正方案并不会引起翻译质量的质变,阿里翻译模型真正强大的地方在于大规模的模型集成,这强烈地需要阿里云提供算力支持。这种大规模的集成模型除了需要海量的计算力,同时在调参与优化过程中会遇到很多困难。这一点,阿里云与阿里机器翻译团队凭借经验有效地解决了它们。
据陈博士表示,阿里在选择集成的基础模型时会使用贪心算法。也就是说首先选择第一个基于 Seq2Seq 或 Transformer 的基础模型,然后从几百个备选模型中依次选择不同的基础模型,并考虑能获得最优性能的两模型集成方法。有了前面两个模型的集成,再考虑集成哪个模型能获得最好的性能而确定三模型集成方法。这样一直迭代下去,直到添加任何基础模型都不能提升性能就结束集成策略。这一过程对于计算力的需求非常大,因此还是得益于阿里云的支持。
最后在集成模型的联合预测中,阿里机器翻译团队采取所有基础模型预测结果的期望作为下一个词的预测结果。陈博士说:「在集成模型预测下一个词的时候,各个基础模型都会给下一个词打分,而我们会取这些分值的加权平均值作为最后的预测分值。其中各基础模型所加的权也是模型自己学的,优秀基础模型所赋予的权重会大一些,不那么优秀的会赋予小的权重。」
调优与应用
提升译文效果
阿里其实也用了两种技术提升译文的可读性,首先是基于神经网络的词尾预测,这一研究成果阿里已经发表在了今年的 AAAI 上。其次是另一种干预神经网络翻译时间与日期的技术。第一种技术主要解决的是复杂词形的翻译,例如在英语到俄语的翻译中,阿里会将词干与词尾切分开,然后先预测词干再预测词尾。这样词尾的预测能利用更多的信息而提升预测结果,因此也就能提升复杂词形的译文效果。
第二个技术关注于数字或日期等低频词的翻译。因为神经网络很难从细节学习到数字或日期的翻译,所以阿里在原文端使用命名实体识别标记它们,并基于简单的规则系统进行翻译。这样就能提升译文的流利程度与翻译效果。
在 WMT 挑战赛外,在真实场景的翻译中,司罗教授表示:「阿里的翻译团队既包括机器翻译团队,也包括人工翻译团队。其中机器翻译团队完全是算法驱动的,而人工翻译团队会基于机器翻译进行修正。这样机器翻译与人工翻译就能成为一种促进关系,人力可以对翻译结果进行修正并反馈给系统而产生更流畅的译文。」
根据陈博士的解释,阿里巴巴在论文 Improved English to Russian Translation by Neural Suffix Prediction 中提出的这种词尾预测方法在解码过程中会独立地预测词干与词尾,它的基本观察即俄语和土耳其语等语言中的词尾更多与前后词的词尾相关,而与前后词的词干关系比较小。具体来说,在每一个解码过程中都会先于词尾生成词干。且在训练过程中会使用两种类型的目标端序列,即词干序列与词尾序列,它们都是原目标端序列分割出来的。下图展示了目标端(俄语)的这种词干与词尾分割:
其中词尾序列中的标记「N」代表对应词干没有词尾,上图下部分的 stemming 表示从原目标序列切分为词干和词尾两部分。由于词干的数量要远少于词的数量,且词尾的数量甚至只有数百,这很大程度上降低了词汇数据的稀疏性。此外,这种结构在预测词尾时可以考虑前面生成的词干序列,这进一步提升了词尾预测的准确性,也令译文读起来更加流畅。
部署与应用
其实模型在推断过程中也会做一些如量化等模型压缩方法,陈博士表示阿里在训练中会使用 FP32,而在推断中会使用 FP8 以节省计算成本。但为 WMT 2018 准备的高性能模型并不能直接部署到应用中,因为实际应用要求更低的延迟。
陈博士说:「如果要翻译一个 30 词的句子,我们需要控制响应时间在 200 毫秒左右。因此我们需要在效率和性能上找到一个平衡,一般已经应用的在线系统也使用相同的基础模型,但不会如同竞赛系统那样实现大规模的集成。此外,在这一次的 WMT 竞赛中,我们累积了非常多的经验,因此随后我们也会将这些经验逐渐加到在线系统中去。」
阿里翻译团队选择小语种作为攻克对象是根据阿里巴巴业务而定的,不论是俄语还是土耳其语,阿里巴巴电商都需要将英文的产品描述翻译到对应的小语种,所以有这样优秀的翻译平台才能扩展业务。
据悉,阿里现在每天的电商机器翻译总量已达 7.5 亿次。以阿里巴巴国际站为例,七成买家以英语沟通,还有 30% 为小语种。而卖家端的调研数据显示,大约 96% 的卖家对小语种无能为力,需要借助第三方软件工具进行翻译沟通。这一现状,催生了对机器翻译的巨大需求。
伴随着阿里速卖通、全球站在俄罗斯、西班牙、巴西、土耳其等国的发展,目前阿里机器翻译团队已能支持包括俄语、西班牙语、泰语、印尼语、土耳其语在内的 21 种语言。包含跨境贸易所需的商品内容展示,跨语言搜索,买卖家实时沟通翻译等 100 多个跨境电商服务场景。
司罗教授表示:「机器翻译的发展无法脱离用户与场景,阿里机器翻译的不断进步,得益于在电商、新零售、物流等领域积累的丰富场景和数据。特别是在俄语、土耳其语、西班牙语的探索上,让我们看到了机器翻译的巨大商业价值与应用潜力。」