时隔16年Jeff Barr重返10.23-25 QCon上海站,带你看透AI如何重塑软件开发! 了解详情
写点什么

机器学习翻译和谷歌翻译算法

  • 2017-08-20
  • 本文字数:2483 字

    阅读完需:约 8 分钟

机器翻译引擎的基本原理

谷歌机器翻译

Zero-shot:零次

Training:训练

Google Neural Machine Translation:谷歌神经机器翻译

我们每天都在使用不同的技术,但却不知道它们的工作原理。事实上,了解机器学习引擎并不容易。 Statsbot 团队希望通过本博客中的数据故事使机器学习更加清晰易懂。今天,我们来探讨一下机器翻译并解释谷歌翻译算法如何工作。

几年前,翻译未知语言文本是非常耗时的。使用简单的词汇逐词逐字翻译之所以困难,是由于以下两个原因:1)读者必须知道语法规则,2)在翻译整个句子时,需要记住所有语言版本。

现在,我们不需要太多的努力就可以将短语、句子、甚至是大段文本放在谷歌翻译中来翻译。但大多数人并不在意机器学习翻译的引擎如何工作。这篇文章专为那些在意的人而写。

深度学习翻译的问题

如果谷歌翻译引擎将短句的译文保留,则它将会由于可能出现的各种变数而无法工作。最好的方法是教会计算机语法规则,并让它根据这些规则来翻译句子。这听起来很简单。

如果你曾经学过外语,你就知道规则总是有很多例外的。当尝试捕获程序中的所有这些规则、例外和例外中的例外时,翻译的质量就会下降。

现代机器翻译系统采用了不同的方法:它们通过分析大量的 __ 文档 __ 来分配文本中的规则。

创建一个属于你自己的简单的机器翻译器可以作为任何数据科学家应聘简历中的一个重大项目

让我们来研究一下被称之为“黑盒”的机器翻译器中隐藏的东西。深层神经网络可以在非常复杂的任务(语音或视觉对象识别)中取得优异的效果,但尽管十分灵活,它们只能用于输入维数和目标维数固定的任务。

循环 **** 神经网络

而这正是长短期记忆网络(LSTM)派上用场的地方,LSTM 能帮助我们处理不能被先验知道的序列。

LSTM 是一种特殊的循环神经网络(RNN),它能够学习长期性的依赖关系。所有 RNN 看起来都像一连串的重复模块。

一个展开的循环神经网络

因此,LSTM 将数据从一个模块传输到另一个模块,另外,为了生成Ht,我们不仅使用Xt,还使用所有之前的输入值X。要了解有关LSTM 的结构和数学模型的更多信息,请阅读这篇非常棒的文章“了解LSTM 网络”。

双向RNN

我们的下一步是双向RNN(BRNN)。BRNN 将常规RNN 的神经元分成两个方向。一个方向是正向的时间或向前的状态。另一个方向是负向的时间或向后的状态。但这两个状态的输出并不与相反方向状态的输入进行连接。

双向循环神经网络

为什么BRNN 比相对简单的RNN 更好?请想象有一个9 个字的句子,而我们要预测第五个字。我们可以知道前4 个字,或前4 个字和最后4 个字。当然,第二种情况预测的质量会更好。

序列到序列

现在我们可以认识序列到序列模型(也称为seq2seq)了。一个基本的seq2seq 模型由两个RNN 组成即:处理输入的编码器网络和产生输出的解码器网络。

序列到序列模型

最后,我们便可以制作出自己的第一个机器翻译器了!

但是,让我们先思考这一点。谷歌翻译目前支持103 种语言,所以我们应该为每种语言提供103x102 个不同的模型。当然,这些模型质量的好坏会因为语言的普及程度和训练这个网络所需的文件数量而有所不同。我们可以达到的最佳情况是使一个NN(神经网络)能将任何语言作为输入并将其翻译成任何其他语言。

谷歌翻译

该想法谷歌工程师在2016 年底就实现了。NN 的架构基于谷歌已研究的seq2seq 模型之上。

但唯一的不同是编码器和解码器之间有8 层LSTM-RNN,且层与层之间仍有残留的连接,并有一些精度和速度上的调整。如果你想更深入地了解它们,请参考谷歌的神经机器翻译系统

该方法的主要特点在于,现在谷歌翻译算法对于每对语言只使用一个系统,而不是一个庞大的集合。

该系统在输入句子的开头需要一个“令牌”以指定你要将短语翻译成的语言。

这一改变提高了翻译质量,甚至可以在系统从未见过的两种语言之间进行翻译,这种方法被称为“零次(Zero-Shot)翻译”。

什么是更好的翻译?

当谈到谷歌翻译算法的改进和更好的结果时,如何才能正确地评估第一个翻译备选比第二个更好?

这不是一个无关紧要的问题,因为对于一些常用的句子,虽然我们有专业翻译器的参考翻译,但这些翻译仍然有一些差异。

很多方法能部分解决这一问题,但最流行和最有效的指标是 BLEU (双语评估替补)。想象一下,有两个来自机器翻译器的备选:

备选 1:Statsbot makes it easy for companies to closely monitor data from various analytical platforms via natural language. (Statsbot 通过自然语言使企业能轻松地密切监控来自各种分析平台的数据。)

备选 2:Statsbot uses natural language to accurately analyze businesses’ metrics from different analytical platforms.(Statsbot 使用自然语言准确地分析企业来自不同分析平台的指标。)

虽然它们有相同的含义,但质量和结构都不同。

我们再看看来自两个人的翻译:

参考 1:Statsbot helps companies closely monitor their data from different analytical platforms via natural language. (Statsbot 通过自然语言帮助公司密切监测来自不同分析平台的数据。)

参考 2:Statsbot allows companies to carefully monitor data from various analytics platforms by using natural language. (Statsbot 通过使用自然语言使企业能够密切监控来自各种分析平台的数据。)

显然,备选 1 更好,与备选 2 相比,备选 1 包括更多共同的单词和短语。这就是 BLEU 方法的一个关键思想。我们可以将备选的 n-gram (N 元语法)与参考翻译的 n-gram 进行比较,并计算它们的匹配数(匹配数与它们的位置无关)。我们只使用 n-gram 精度,因为在多个参考时计算查全率很难,而且结果是 n-gram 分数的几何平均值。

现在你可以开始评估复杂的机器学习翻译引擎了。下次当你使用谷歌翻译翻译某些内容时,可以想像一下:在给你最好的翻译版本之前,其实谷歌翻译已经分析了数百万份文档。

查看英文原文 https://blog.statsbot.co/machine-learning-translation-96f0ed8f19e4


感谢蔡芳芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-08-20 19:005054

评论

发布
暂无评论
发现更多内容

基于 KubeVela 与 Kubernetes 打造“无限能力”的开放 PaaS

阿里巴巴云原生

容器 开发者 运维 云原生 k8s

蚂蚁金服三面真题:基础+高并发+消息中间件+GC算法+MySQL数据同步

Java架构之路

Java 程序员 架构 面试 编程语言

大话 Python:python 操作 excel 系列 -- 怎样将数据写入 excel 文件?

老王说编程

Python Excel xlsxwriter

程序员的数学

大奎

Synchronized升级成重量级锁之后就下不来了?你错了!

yes

Java JVM

从根上理解高性能、高并发(七):深入操作系统,一文读懂进程、线程、协程

JackJiang

快手基于 Flink 的持续优化与实践

Apache Flink

flink

【数独问题】入门题:判断一个数独是否有效 ...

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

上周刚面的美团 现已拿到offer,分享一下三面面经

Java架构之路

Java 程序员 架构 面试 编程语言

一周信创舆情观察(2.22~2.28)

统小信uos

大话 Python:python 操作 excel 系列 -- 能够操作 excel 的 python 库有哪些?

老王说编程

Python ecxel

Pgbouncer最佳实践:系列三

PostgreSQLChina

数据库 postgresql 软件 开源社区

2021Java岗面试清单最新整理:分布式/Spring/JVM/并发编程等(15专题全面解析)

比伯

Java 编程 程序员 架构 面试

Python基础之:Python中的流程控制

程序那些事

Python 程序那些事 流程控制

容器 & 服务:K8s与Docker应用集群 (一)

程序员架构进阶

容器 k8s 服务化 七日更 28天写作

homework2

Geek_xq

力扣(LeetCode)刷题,简单+中等题(第29期)

不脱发的程序猿

面试 LeetCode 编程之路 28天写作 算法面经

力扣(LeetCode)刷题,简单+中等题(第28期)

不脱发的程序猿

面试 LeetCode 编程之路 28天写作 算法面经

【科创人】融云CEO韩迎:飞信十年珍贵历练,做To B别有取巧的心思

科创人

牛掰,阿里架构师用 115 张原理与流程图,讲清了 Java 程序员常被问及的分布式架构核心知识点

Java架构师迁哥

从业务在线化视角实施数字化落地的两大路径

boshi

数字化 七日更

使用SSO增强身份安全性的四个原因

龙归科技

身份认证 SSO 密码管理

DataPipeline合伙人&CPO陈雷:成为中国的世界级数据中间件厂商

DataPipeline数见科技

四面字节跳动成功斩获offer(Java岗),只有努力复习,方能战胜寒冬

Java架构之路

Java 程序员 架构 面试 编程语言

女乘客跳车、货拉拉涉事司机被批捕

石云升

28天写作 3月日更

【LeetCode】比特位计数Java题解

Albert

算法 LeetCode 28天写作

字节跳动技术总监自爆:Android项目开发如何设计整体架构?建议收藏

欢喜学安卓

android 程序员 面试 移动开发

5G时代,为什么NoSQL和SQL存在短板?

VoltDB

数据库 通信 VoltDB 电信

2021年3月国产数据库排行榜:OceanBase勇夺亚军 神舟挺进20强!

墨天轮

数据库 性能优化 运维

字节跳动Android面试:来一份全面的面试宝典练练手,不吃透都对不起自己

欢喜学安卓

android 程序员 面试 移动开发

JVM 分析工具

insight

JVM 3月日更

机器学习翻译和谷歌翻译算法_语言 & 开发_Daniil Korbut_InfoQ精选文章