动态详情

机器学习翻译和Google翻译算

2017-8-14 9:45:17 分类:技术博客

多年前,翻译一种未知语言的内容是非常耗时的。之所以不能简单的根据词意就这么直白的翻译过来,原因有两个:

  1. 读者必须知道语法规则。

  2. 在翻译整句话时,读者还需要记住所有的语言版本。

现在我们不必再这么费劲了——我们可以通过谷歌翻译就把那些短语、句子甚至是更长的内容都可以翻译过来。但大多数人并不关心机器学习翻译的引擎是如何工作的。这篇文章是写给那些关心的人的。

深度学习翻译问题

如果谷歌翻译引擎想要保持翻译的准确性,即使是短句,也不会起作用,因为每个单词在不同的语境中有不同的意思。最好的办法是教会计算机知道语法规则,并教它根据这些规则来翻译句子。

事实真要是说起来这么简单就好了。

如果你曾经尝试过学习一门外语,你就会知道总是有很多例外的规则。当我们试图获取所有这些规则、异常和例外情况时,翻译的质量就会下降。

现代机器翻译系统使用的是一种不同的方法:通过分析大量的文档从而去判断应该对应哪个规则。

把创建一个简单的自己的机器翻译器的经历写在数据科学简历上面,这会是一个伟大项目

让我们来研究一下称之为机器翻译的“黑匣子”里隐藏了什么东西。深度神经网络即使在非常复杂的任务(语音/视觉对象识别)中也可以获得优异的结果,但尽管它们如此灵活,它们还是只适用于那些输入和目标具有固定维度的任务。

循环神经网络

这是长短期记忆网络(LSTMs)发挥作用的地方,帮助我们处理那些我们无法预知长度的序列。

LSTMs是一种能够学习长期依赖的特殊的循环神经网络(RNN)。所有的RNN看起来就像是重复的模块链。


展开的循环神经网络 

因此,LSTM将数据从一个模块传递到另外一个模块。例如,为了生成Ht,我们不仅需要使用Xt,还需要使用所有之前输入的x值。想了解更多的LSTM的结构和数学模型,请参阅这篇文章

双向RNN

接下来介绍的是双向循环神经网络(BRNNs)。一个BRNN是将一个正常的RNN的神经元分为两个方向:一个用于正时间(或前向状态),另一个用于负时间(或反向状态)。这两个状态的输出并没有连接到反方向的输入。


双向循环神经网络 

要理解为什么BRNNs能比一个简单的RNN工作得更好,可以想象一下假设一个句子由9个单词组成,我们想要预测第5个单词。我们可以让它要么只知道前四个单词,要么知道前四个单词和最后四个单词。显然第二种情况下的结果会更好。

Sequence-to-Sequence

现在我们已经准备好介绍Sequence-to-Sequence模型(也称为seq2seq)的内容了。基本的seq2seq模型由两个RNN组成:一个是处理输入的编码器网络,一个是生成输出的解码器网络。


Sequence-to-Sequence模型 

最后,我们就得到了自己的第一个机器翻译器!

但是,让我们考虑一个技巧。Google翻译目前支持103种语言,因此对于每一对语言来说应该有103x102种不同的模型。当然,这些模型的质量根据语言的流行程度和训练网络所需的文档的数量而有所不同。我们所能做的最大努力就是让一个NN将任何语言作为输入,并能够将其翻译成任意一种语言。

谷歌翻译

这个想法在2016年底被谷歌的工程师们实现了。NNs的架构就是建立在seq2seq模型上的。

唯一不同的就是在编码器和解码器之间,有8层LSTM-RNN在层之间有残余的连接,在精度和速度上有一些调整。如果你想继续深入了解,看看这篇文章

这种方法最主要的特点就是Google翻译算法现在只需要一个系统就可以了,而不是像以前那样,每一种语言都需要很多系统。

这个系统在输入句的开头需要一个“令牌”,它指定了你试图将这个短语翻译成的语言。

这提高了翻译质量,甚至在两种语言之间,也就是系统尚未看到的语言——一种被称为“零镜头翻译”的方法。

更好的翻译有什么特点呢?

当讨论如何改进谷歌翻译算法从而得到更好的结果时,我们如何能够正确地评价第一个翻译的结果比第二个更好?

这不是一个小问题,因为对于一些常用的句子,我们有一些专业翻译人员的译文可以参考,当然这些译文之间会有一些区别。

有很多方法可以解决这个问题的某一部分,但是最流行以及最有效的衡量标准是BLEU(双语评估下的研究)。假设我们有两个来自机器翻译的候选结果:

  • 候选结果1:Statsbot让公司可以很容易地通过自然语言对各种分析平台的数据进行严密监控。
  • 候选结果2:Statsbot使用自然语言精确地分析来自不同分析平台的业务度量。


尽管它们的含义相同,但它们的质量不同,结构也不同。

让我们来看看两个人类译本:

  • 参考1:Statsbot帮助公司通过自然语言密切监视来自不同分析平台的数据。
  • 参考2:Statsbot允许公司通过使用自然语言来仔细监控来自不同分析平台的数据。

与候选结果2相比,候选结果1显然更好一点,因为它分享了更多的单词和短语。这是BLEU方法的关键思想。我们可以将候选的n-grams与n-g的参考译文进行比较,并计算匹配的数量(独立于他们的位置)。我们只使用n克的精确值,因为在多次裁判的情况下计算回忆是困难的,结果是n克分数的几何平均值。

现在,你可以评估一下机器学习翻译的复杂引擎了。下一次当你用谷歌翻译翻译某些内容时,想象一下它是分析了多少个文档才把最好的翻译结果展示给你。