提到机器翻译时,很多心中都会感到疑惑,早在十几年前,我们把一句英文放到金山词霸里,就能被翻译成中文。如今加入了深度学习技术的机器翻译,又能有什么不同呢?
区别当然有很多,最典型的就是机器翻译能够翻译出整篇文章,可普通的翻译技术遇到长一点句子就不行了。原因就是机器翻译并非简单的将一个个单词翻译成另一种语言,而是可以像人一样,不断向前回顾以理解结构复杂的句子,并且结合上下文,理解每一个It/He/She具体指代谁。
实现这种功能,分别依赖于两种神经网络架构,一个是RNN——循环神经网络,另一个则是CNN——卷积神经网络。最近关于RNN和CNN哪个更适用于机器翻译的争论也很多,今天就来看看这两种神经网络都是如何加持机器翻译,拯救外语渣的。
RNN:机器翻译中的Old School
首先我们要明白,对于机器来说,翻译就是一个解码后再编码的过程。如果要把英语翻译成中文,就要先把英语原文解码成“神经代码”,再编码生成中文。
而循环神经网络的关键,就在于循环二字上。系统会“记住”上一次输出的内容,以此来决定下一次输出。有了上一次和下一次的概念,神经网络就不会把输入和输出的信息看做独立的,而是相互关联的时间序列。这样就可以通过以往的序列关联猜测到下一个序列会出现的词,
用最通俗的话讲,我们听多了郭德纲的相声,就知道“于谦的父亲”这一元素,后面接的一定是“王老爷子”。
在翻译时,RNN把源语言当做输入序列,把翻译语言当做输出序列,由于每一次输出都会参考上一次输出的结果,所以机器翻译更具整体性,而不是简单的翻译单词。
目前对RNN应用的最为炉火纯青的应该就是谷歌翻译了 ,去年谷歌提出了用神经网络系统进行机器翻译,据称汉译英的错误率***下降85%,在当时还小小的引起了一番轰动。
如果说传统神经网络在翻译时,永远是用一片空白的大脑面对每一个句子,那么RNN在翻译时则拥有持久的思想,而谷歌翻译所应用的LSTM更加强了这一点。LSTM是RNN的一类变种,被译为长短期记忆网络,是一种时间递归神经网络。RNN的缺陷在于,“于谦的父亲-王老爷子”这种间隔很短的序列预测以前很容易,但要预测“今天出门晚了,所以上班[]”这类句子,需要联系到间隔较远的上下文,这时RNN可能就表现的没那么优秀了。
而LSTM,就可以学习和理解这种长期依赖关系。LSTM通过一系列计算将句子中的各个元素的特征构建成非线性的组合,同时还设立了“遗忘机制”,将权重较低的元素遗忘掉。这就意味着LSTM可以“更新”记忆,让长期依赖因素不断的存在于距离较近的神经元中。
CNN:GPU的宠儿
就在RNN机器翻译还在不断更新时,又有人提出了将CNN——卷积神经网络应用于机器翻译之上。
从上文我们可以得出结论,RNN(LSTM)机器翻译按照序列进行工作,也就是和人一样,按照顺序一个个的进行翻译。但要记住的一点是,目前比较主流的GPU***的有点是可以进行并行计算。这样一来RNN就没法***化利用GPU的计算能力。
而CNN则可以同时处理多个语言片段,并且具有信息分层处理能力。将文本序列化、单词向量化,经过分层处理后再输出结果。在分层过程中,还会不断回顾源文本来确定下一个输出序列。
提出这种技术的是Facebook和最近的机器翻译新秀DeepL。在上半年时,Facebook宣布推出了基于CNN开发的语言翻译模型,据说比基于RNN开发的语言翻译模型速度快9倍,而且准确率更高。在测试上,Facebook翻译系统在英语-德语、英语-法语的测试上都比RNN更接近人工翻译。
而来自德国的DeepL更是在冰岛放了台世界排名23名的超级计算机,每秒能执行5.1peta浮点运算,只为了训练他们的神经网络。
从他们自己展示的数据看来,DeepL的成绩已经远超Facebook、微软甚至谷歌。
不过不管是CNN还是RNN都不是机器翻译的终点,比如谷歌近期提到的不基于RNN的注意力机制,以及多层神经网络、深度神经网络等等,都是解决机器翻译的方法。在速度、计算资源消耗、情感理解等等多种维度上都有不同的表现。
如果从最终的实用性来说,神经网络模型能影响到的仅仅只是一部分。更多的是语料库的大小、繁重的语料标注工作等等,同时这也注定了蒙古语、藏语这种语料较少语言仍然无法受益于机器翻译。
目前的机器翻译,基本还停留在辅助人工翻译的阶段。不论是DeepL的超级计算机,还是谷歌的抛开神经网络,都可以理解成在技术上的一种“炫技”。比使用哪种神经网络更重要的,还是应该让机器翻译更多的进入我们的生活。