计算机最早的目标之一是文本的自动翻译。
鉴于人类语言的流动性,自动或机器翻译也许是人工智能最具挑战性的任务之一。传统上,此任务使用基于规则的系统,该系统在1990年代被统计方法取代。最近,深度神经网络模型在恰当地命名为神经网络机器翻译的领域中取得了最先进的成果。
在这篇文章中,您将了解机器翻译的挑战和神经网络机器翻译模型的有效性。
阅读本文后,你将了解:
- 鉴于人类语言固有的歧义性和灵活性,机器翻译具有挑战性。
- 统计机器翻译用从示例中学习翻译的模型取代了传统的基于规则的系统。
- 神经网络机器翻译模型拟合单个模型,而不是一系列经过微调的模型,并且目前取得了最先进的成果。
通过我的新书《自然语言处理深度学习》启动您的项目,其中包括分步教程和所有示例的Python源代码文件。
让我们开始吧。

神经机器翻译简明介绍
照片由Fabio Achilli拍摄,保留部分权利。
什么是机器翻译?
机器翻译是将一种语言的源文本自动转换为另一种语言的文本的任务。
在机器翻译任务中,输入已经由某种语言的符号序列组成,计算机程序必须将其转换为另一种语言的符号序列。
——《深度学习》,2016年,第98页。
给定源语言中的一段文本,没有一个单一的最佳翻译将其翻译成另一种语言。这是因为人类语言固有的歧义性和灵活性。这使得自动机器翻译的挑战变得困难,也许是人工智能中最困难的挑战之一。
事实上,准确的翻译需要背景知识才能解决歧义并确定句子的内容。
——《人工智能:一种现代方法》,第3版,2009年,第21页。
经典的机器翻译方法通常涉及将源语言文本转换为目标语言的规则。这些规则通常由语言学家开发,并且可以在词汇、句法或语义层面操作。这种对规则的关注赋予了该研究领域名称:基于规则的机器翻译,或RBMT。
RBMT的特点是明确使用和手动创建具有语言学依据的规则和表示。
——《自然语言处理和机器翻译手册》,2011年,第133页。
经典机器翻译方法的主要局限性在于开发规则所需的专业知识,以及所需的大量规则和例外。
需要深度学习处理文本数据的帮助吗?
立即参加我的免费7天电子邮件速成课程(附代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
什么是统计机器翻译?
统计机器翻译,简称SMT,是使用统计模型,通过大量的示例语料库学习将文本从源语言翻译成目标语言。
使用统计模型的这个任务可以正式表述如下:
给定目标语言中的句子T,我们寻求翻译器生成T的源句子S。我们知道通过选择在给定T的情况下最有可能的句子S,可以最大程度地减少错误。因此,我们希望选择S以最大化Pr(S|T)。
——《机器翻译的统计方法》,1990年。
这个正式规范明确了在给定输入文本序列的情况下最大化输出序列概率。它还明确了存在一系列候选翻译的概念,以及需要搜索过程或解码器从模型的输出概率分布中选择最可能的翻译。
给定源语言中的一段文本,目标语言中最可能的翻译是什么?[…] 应该如何构建一个统计模型,为“好”翻译分配高概率,为“坏”翻译分配低概率?
——《基于句法的统计机器翻译》,2017年,第xiii页。
该方法是数据驱动的,只需要一个包含源语言和目标语言文本的示例语料库。这意味着不再需要语言学家来指定翻译规则。
这种方法不需要复杂的语际概念本体,也不需要手工编写的源语言和目标语言语法,也不需要手工标注的树库。它所需要的只是数据——可以从中学习翻译模型的示例翻译。
——《人工智能:一种现代方法》,第3版,2009年,第909页。
很快,机器翻译的统计方法超越了传统的基于规则的方法,成为事实上的标准技术。
自1980年代末该领域诞生以来,统计机器翻译最流行的模型[...]一直是基于序列的。在这些模型中,翻译的基本单位是单词或单词序列[...]这些模型简单有效,并且适用于许多语言对。
——《基于句法的统计机器翻译》,2017年。
最广泛使用的技术是基于短语的,其重点是逐段翻译源文本的子序列。
统计机器翻译(SMT)几十年来一直是主导的翻译范式。SMT的实际实现通常是基于短语的系统(PBMT),它翻译单词或短语序列,其中长度可能不同。
——《Google的神经网络机器翻译系统:弥合人机翻译之间的鸿沟》,2016年。
尽管有效,统计机器翻译方法却因为过于关注被翻译的短语而失去了目标文本的整体性。对数据驱动方法的严格关注也意味着这些方法可能忽略了语言学家所知的重要的句法区别。最后,统计方法需要仔细调整翻译流水线中的每个模块。
什么是神经网络机器翻译?
神经网络机器翻译,简称NMT,是利用神经网络模型学习机器翻译的统计模型。
这种方法的关键优势在于,单个系统可以直接在源文本和目标文本上进行训练,不再需要统计机器学习中使用的专业系统流水线。
与由许多独立调整的小子组件组成的传统基于短语的翻译系统不同,神经机器翻译试图构建和训练一个单一的、大型神经网络,该网络读取一个句子并输出一个正确的翻译。
——《通过联合学习对齐和翻译的神经机器翻译》,2014年。
因此,神经网络机器翻译系统被认为是端到端系统,因为翻译只需要一个模型。
NMT 的优势在于它能够以端到端的方式直接学习从输入文本到相关输出文本的映射。
——《Google的神经网络机器翻译系统:弥合人机翻译之间的鸿沟》,2016年。
编码器-解码器模型
多层感知器神经网络模型可用于机器翻译,尽管这些模型受限于输入序列的固定长度,其中输出必须是相同长度。
这些早期模型最近通过使用组织成编码器-解码器架构的循环神经网络得到了极大的改进,允许可变长度的输入和输出序列。
编码器神经网络读取源语句并将其编码为固定长度的向量。然后解码器从编码向量中输出翻译。整个编码器-解码器系统,包括用于语言对的编码器和解码器,被联合训练以最大化给定源语句的正确翻译的概率。
——《通过联合学习对齐和翻译的神经机器翻译》,2014年。
编码器-解码器架构的关键是模型能够将源文本编码为称为上下文向量的内部固定长度表示。有趣的是,一旦编码,原则上可以使用不同的解码系统将上下文翻译成不同的语言。
……一个模型首先读取输入序列并发出一个总结输入序列的数据结构。我们将这个摘要称为“上下文”C。[……]第二个模式,通常是RNN,然后读取上下文C并在目标语言中生成一个句子。
——《深度学习》,2016年,第461页。
有关编码器-解码器循环神经网络架构的更多信息,请参阅该帖子
带有注意力的编码器-解码器
尽管编码器-解码器架构有效,但在翻译长文本序列时仍存在问题。
问题源于必须用于解码输出序列中每个单词的固定长度内部表示。
解决方案是使用注意力机制,该机制允许模型学习在解码输出序列的每个单词时将注意力放在输入序列的何处。
使用固定大小的表示来捕捉一个非常长的句子的所有语义细节 [...] 非常困难。[...] 然而,一种更有效的方法是阅读整个句子或段落 [...],然后一次产生一个翻译的单词,每次都专注于输入句子的不同部分,以收集产生下一个输出单词所需的语义细节。
——《深度学习》,2016年,第462页。
带有注意力的编码器-解码器循环神经网络架构目前在机器翻译的一些基准问题上达到了最先进水平。这种架构被用于谷歌神经机器翻译系统(GNMT)的核心,该系统用于其谷歌翻译服务。
https://translate.google.com
……当前最先进的机器翻译系统由采用注意力的模型提供支持。
——《自然语言处理中的神经网络方法》,2017年,第209页。
有关注意力的更多信息,请参阅该帖子
尽管有效,神经网络机器翻译系统仍然存在一些问题,例如扩展到更大的词汇量以及训练模型速度缓慢。这些是大型生产神经网络翻译系统(例如谷歌系统)目前关注的领域。
神经网络机器翻译的三个固有弱点[...]:训练和推理速度较慢,处理罕见词汇效率低下,有时无法翻译源句中的所有单词。
——《Google的神经网络机器翻译系统:弥合人机翻译之间的鸿沟》,2016年。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
书籍
- 自然语言处理中的神经网络方法, 2017.
- 基于句法的统计机器翻译, 2017.
- 深度学习, 2016.
- 统计机器翻译, 2010.
- 自然语言处理与机器翻译手册, 2011.
- 人工智能:一种现代方法,第3版,2009年。
论文
- 机器翻译的统计方法, 1990.
- 评论文章:基于示例的机器翻译, 1999.
- 使用 RNN 编码器-解码器学习短语表示进行统计机器翻译, 2014.
- 通过联合学习对齐和翻译的神经机器翻译, 2014.
- Google的神经机器翻译系统:弥合人机翻译之间的鸿沟, 2016.
- 使用神经网络进行序列到序列学习, 2014.
- 循环连续翻译模型, 2013.
- 用于基于短语的统计机器翻译的连续空间翻译模型, 2013.
附加内容
- 机器翻译档案
- 维基百科上的神经机器翻译
- 第13章,神经机器翻译,统计机器翻译, 2017.
总结
在这篇文章中,您发现了机器翻译的挑战以及神经网络机器翻译模型的有效性。
具体来说,你学到了:
- 鉴于人类语言固有的歧义性和灵活性,机器翻译具有挑战性。
- 统计机器翻译用从示例中学习翻译的模型取代了传统的基于规则的系统。
- 神经网络机器翻译模型拟合单个模型,而不是一系列经过微调的模型,并且目前取得了最先进的成果。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
给定一个包含数亿行短句的数据库,其中词汇量限制为20000个单词,您认为最好研究字符级RNN还是基于单词的RNN?您的直觉告诉您什么?
从词开始,然后转到字符,看看是否能提升技能或简化模型。
我在我的欧洲术语Facebook页面上分享了您的有趣文章
谢谢!
Jason,很棒的帖子,machinelearningmastery.com 已经成为我实际学习的新家,因为我开始掌握一些机器学习技术。我有一个建议,可能会对其他人有所帮助...
您能否整理一个简单的教程来开发“生产就绪”模型。例如,一旦模型开发完成,如何使用新数据进行更新,并使用该模型对新数据进行持续分类和预测。我遇到的一些方法是手动将新输入更新到代码中,手动将新输入更新到 .CSV 文件中,对于更大的数据集,将新数据更新到模型识别的 .H5 文件中。这将有助于将您提供的大量学习提升到一个水平,使模型成为工作或研究的持续工具......这绝对是我尚未掌握的!
很好的建议,谢谢。
请参阅有关最终模型的这篇帖子
https://machinelearning.org.cn/train-final-machine-learning-model/
以及这篇关于生产中模型的帖子
https://machinelearning.org.cn/deploy-machine-learning-model-to-production/
希望这些能作为一个开始有所帮助。
先生,您的文章信息量很大,它让我对这个领域有了新的直觉。
非常感谢您分享您的知识。
我完全是这个领域的新手。
事实上,我过去常常将研究论文和文章作为我的自由职业工作进行翻译。所以,我在计算机科学领域没有任何学术知识。
然而,我从两年前就开始对机器学习感兴趣。我使用Python并参加了一些在线课程。整个领域充满了乐趣,当然也充满了挑战。
我不是英语母语者,这可以从我的英语写作能力中推断出来;对此感到抱歉。
我的母语是波斯语(Farsi),波斯语没有ASCII表示。我们使用Unicode字符集,就像阿拉伯语一样。
我很好奇,上述问题(缺乏ASCII支持)以及波斯语的特殊属性(例如,其语法与英语、西班牙语、法语甚至阿拉伯语都大相径庭)是否会影响Google Translate等翻译服务中使用的NLP技术和算法?
我认为谷歌服务在英语-阿拉伯语对方面的翻译比英语-波斯语对方面要好得多,我觉得这与为引擎提供的数据量(特别是波斯语文本)无关。
此外,我真的很想开发一个最小的机器翻译项目(用于我的研究目的),但我不知道最佳算法、平台或技术。
如果您能就此特定问题与我们分享您的意见,那将非常有帮助,我将不胜感激。
再次感谢您在此处发布的直观信息。
最美好的祝愿,
来自波斯的Ali
这是一个有趣的问题,我对此知之甚少。凭直觉,我会尝试使用 Unicode 而不是字符来建模这个问题,但我鼓励你阅读文献,了解它是如何普遍解决的。
亲爱的Jason
您对NNT在圣经翻译任务中的实用性有什么看法?我为一家圣经翻译机构提供咨询,并渴望展示NNT在世界小语种和濒危语言中生成初稿翻译的应用。仅供参考:希伯来圣经只有大约6000多个离散词,基督教新约也差不多。许多小语种和濒危语言的离散词数量也差不多。
我不知道。也许可以制作一些模型原型,看看它的表现如何。
嗨,Jason,NMT 是一种将代码从一种语言翻译成另一种语言(例如从 R 翻译成 Python)的好方法吗?谢谢
也许可以。
你好 Jason,
感谢您的帖子,它非常有建设性和有趣,并给我很好的理解,但我对神经网络机器翻译有一些疑问
1 据我理解,在NMT中我们不需要单独的语言模型,那么解码器如何在预测下一个词时学习目标语言的语法,或者Seq2seq模型不需要学习语言的语法?
它学习一个条件概率模型,例如,在给定输入和目前已生成的单词的情况下输出下一个单词。
你好,Jason
碰巧的是,我很高兴看到您这篇信息丰富的帖子。这是一篇很好的介绍——感谢您出色的分析和温和的方法(您的标题把我吸引到这里)。
我从事日语到英语翻译工作大约40年了,自从机器翻译诞生以来,我确实看到了令人惊喜的进步,但似乎西方语言中的“注意力”或同等水平的改进比亚洲语言更大,正如本博客中一些早期帖子中您所暗示的那样。最近日本的愚蠢谷歌翻译(Google地图)成为头条新闻,此外还有对中英翻译的持续求助。
我认为这仍然只是一个“文化问题”,随着时间的推移,这也将得到改善;很抱歉在错误的论坛发帖。在我看来,NMT提供商至少应该在发布(有时是反常的)翻译之前进行合格的人工检查。“好吧,这迟早会好起来的。”
很棒的评论,本,谢谢分享。
关于中文翻译,我预计百度系统可能比谷歌系统更有效。
可能其中一个问题是,历史上大部分投资来自西方(IBM、谷歌),而且用许多人都能理解的语言(英语)进行合作更容易。
然而,我认为您可能想看看DeepL,我在中国和日本的客户都对它非常满意 (https://www.deepl.com/en/blog/20200319)
非常感谢您对神经网络机器翻译工作原理的全面解释,我有一个关于概率学习的问题;对于常用词、代词、助动词等,它们是否与特定领域术语区别对待?
谢谢!
如果你愿意,可以区别对待它们,或者在需要时完全删除它们。
对这个迷人领域进行了宝贵而结构良好的概述,对此表示衷心感谢。
我非常尊重神经网络给语音和语言技术带来的巨大进步——我自己的兴趣是实时转录。尽管如此,我仍然相信还需要另一个非常重要的飞跃。这将涉及弥合神经网络方法与人类方法之间巨大的能力差距:人类方法明确地受到“意义”的指导。
虽然神经网络编码了创建示例目标文本所需的人类“意义驱动”技能,但它们没有明确的意义概念。因此,它们仍然可能“偏离主题”。即使是在句子层面而不是单词或短语层面工作,句子通常也不是一个独立的实体:句子通常是一个自洽文本的一部分,该文本是为了一个目的而创建的——为了从一个人向另一个人传达意义。
我很想听听您对此的评论,以及如何在普遍的SLT中实现下一个跨越式发展,以解决尊重上下文和意义的挑战?
谢谢。
我认为自撰写本文以来,情况已经取得了长足的进步。我认为不需要任何飞跃,只需逐步改进即可。
较新的方法似乎不再会在长输入序列后“失去主线”。
谢谢你。我被要求写一篇论文,主要讨论现代翻译工具及其对翻译过程和产品的影响。还有机器翻译的挑战。那么,对于这两个想法,哪些翻译工具适合研究?
我建议进行文献综述。
谢谢你。
不客气。
亲爱的 Jason,
在您的书《深度学习与自然语言处理》第15章中,预测结果似乎不受训练轮数的影响。将训练轮数增加到40仍然给我一个错误的预测。
然而,增加电影评论示例的详细程度给了我一个很好的预测。
这证实了您的评论“这可能是因为两个精心编造的评论非常短,而模型期望的是1000个或更多单词的序列。”
诚挚的问候,
Dominique
很棒的发现,谢谢!
你好,
我正在寻找一种将旧版本语言机器翻译成现代对应语言的方法。例如,我希望能够将古法语文本翻译成现代法语。任何帮助或建议将不胜感激。
谢谢!
先尝试seq2seq模型。那应该是最简单的。
您的帖子信息量很大。
我在哪里可以获得以下实际代码:
序列到序列模型
编码器解码器模型
带注意力机制的编码器解码器模型
另外,关于神经网络机器翻译的实践课程有什么建议吗?
我将非常感谢您的帮助。
非常感谢!
这里有一个简单的模型。你觉得这有帮助吗? https://machinelearning.org.cn/develop-neural-machine-translation-system-keras/