深| 使用机器学习进行语言翻译:为什么神经网络和 seq2seq 效果这么好?

 2024-01-23 02:03:15  阅读 0

机器之心合集

参加人员:吴攀、李亚洲、杜夏德

本文是有趣系列文章的第五部分,讲解深度学习在机器翻译中的应用。 本系列的上一篇文章《机器之心》也已传播(),大家可以点击链接进行浏览。 您可以点击阅读英文原文。

我们都知道并且喜欢谷歌翻译( ),这个网站可以像魔术一样几乎实时地在 100 多种不同的人类语言之间进行翻译。 我们还可以通过手机和智能手表使用谷歌翻译:

谷歌翻译失败解决方法是什么_谷歌翻译失败解决方法_谷歌翻译失败解决方法有哪些

翻译背后的技术称为机器翻译 ( ),它已经通过帮助人们相互交流来改变世界。

但我们知道,15 年来,高中生一直在使用谷歌翻译来……嗯……帮助他们完成西班牙语作业。 这不是什么新鲜事吗?

谷歌翻译失败解决方法是什么_谷歌翻译失败解决方法_谷歌翻译失败解决方法有哪些

事实上,在过去的两年里,深度学习已经改写了我们进行机器翻译的方式。 对语言翻译一无所知的深度学习研究人员提供的相对简单的机器学习解决方案正在击败最优秀的人类专家构建的语言翻译系统。

这一突破背后的技术称为序列到序列学习(-to-)。 这是一种非常强大的技术,可以用来解决许多类型的问题。 在我们了解如何使用该技术进行翻译之后,我们还将了解如何使用该算法来编写人工智能聊天机器人和描述图像。

那么我们就开始吧!

让机器来做翻译

那么,为了让计算机翻译人类语言,我们该如何编程呢?

最简单的方法是将要翻译的句子中的每个单词替换为目标语言中对应的单词。 以下是从西班牙语到英语的逐字翻译的简单示例:

我们只是将每个西班牙语单词替换为相应的英语单词。

这很容易做到,因为您只需要一本可以查找每个单词翻译的词典。 但结果非常糟糕,因为它没有考虑任何语法和上下文。

因此,下一步可能是添加一些特定于语言的规则来改进获得的结果。 例如,您可能需要将常见的 2 个词短语翻译为单个短语。 您可能还想交换名词和形容词的顺序,因为它们在西班牙语中的顺序在英语中是相反的:

这个方法有效! 如果我们不断添加更多规则直到我们能够处理语言的每个部分,那么我们的程序应该能够翻译任何句子,对吧?

这就是最早的机器翻译系统的工作原理:语言学家提出复杂的规则,然后将它们一一编程到系统中。 冷战期间,世界上一些最聪明的语言学家多年来努力创建翻译系统,以便更容易破译苏联的通信。

不幸的是,这种方法仅适用于简单且结构直接的文档,例如天气预报。 它不能可靠地处理现实世界的文档。

问题在于人类语言不遵循一套固定的规则。 人类语言充满了例外、地区差异和纯粹的违反规则的情况。 数百年前入侵英国的人们比那些坐下来定义语法规则的人们更受我们说英语的方式的影响。

使用统计数据让计算机翻译得更好

基于规则的系统失败后,开始使用基于概率和统计(而不是语法规则)的模型开发新的翻译技术。

构建基于统计的翻译系统需要大量的训练数据,其中包含至少两种语言的相同文本。 这个对应的翻译文本称为平行语料库( )。 与 1800 年代科学家使用罗塞塔石碑破译希腊语中的古埃及象形文字类似,计算机可以使用并行语料库来猜测一种语言的文本是如何翻译成另一种语言的。

幸运的是,在许多奇怪的地方都存在大量的几种语言的对应文本。 例如,欧洲议会 ( ) 将其程序 ( ) 翻译成 21 种语言。 因此研究人员可以使用这些数据来帮助开发翻译系统。

谷歌翻译失败解决方法有哪些_谷歌翻译失败解决方法是什么_谷歌翻译失败解决方法

训练数据太刺激了! 但这不过是数万亿行无聊的政府文件而已……

用概率的方式思考

与使用统计翻译系统的根本区别在于,它们不会尝试生成精确的翻译。 相反,他们会生成数千种可能的翻译,然后根据它们正确的可能性对它们进行排名。 他们通过检查翻译与训练数据的相似程度来确定翻译的“正确”程度。 它的工作原理如下:

第一步:将原句拆成小块

首先,我们将句子分成简单的块,每个块都可以很容易翻译:

第 2 步:找到每件作品的所有可能翻译

接下来,我们检查训练数据中该块的所有人工翻译并翻译每个块。

需要强调的是,我们不仅仅是在简单的翻译词典中查找这些块,我们还在研究真实的人们如何在现实世界中翻译这些相同的块。 这有助于我们捕捉它们在不同上下文中的不同使用方式:

谷歌翻译失败解决方法是什么_谷歌翻译失败解决方法有哪些_谷歌翻译失败解决方法

即使是最常见的短语也有多种可能的翻译

其中一些可能的翻译比其他翻译更常用。 根据每个翻译在我们的训练数据集中出现的频率,我们可以对其进行评分。

例如,当人们说“”时,表达“我想要”比“我尝试”更常见。 这样,我们可以根据训练数据中“”表示“我想要”的频率,为该翻译赋予更高的权重( )。

第三步:生成所有可能的句子并找出其中最有可能的一个

接下来,我们将使用这些块的每种可能的组合生成一堆可能的句子。 仅从我们在步骤 2 中列出的块翻译中,我们就可以通过不同的块组合生成近 2500 个不同的句子变体! 这里有些例子:

我爱| 离开| 在 | | 的 | 更整洁。

我的意思是| 上 | 至 | 开放空间| 最多。

我喜欢| 成为|上| 根据 | 更多的。

我的意思是| 去吧| 至 | 开放空间| 最整洁。

但在现实世界的系统中,词块的组合可能有更多,因为我们还尝试了不同的词序和在句子中对词进行分块的不同方式:

我尝试| 运行| 在 | | 的 | 开放空间。

我想要| 运行| 每 | 越整洁| 开放空间。

我的意思是| 至 | 在 | | 的 | 海滩。

我尝试| 去吧| 每 | 越整洁| 。

现在我们需要扫描所有生成的句子,以找到其中“最人性化”的翻译。

为此,我们需要将生成的句子与英语书籍和新闻故事中的数百万个真实句子进行比较。 我们获得的英文文本越多,结果就越好。

以这个可能的翻译为例:

我尝试| 离开| 每 | 最| 开放空间。

以前可能没有人用英语写过这样的句子,所以它不会与我们数据集中的任何句子非常相似。 我们给这种可能的翻译一个较低的概率分数。

但看看这个可能的翻译:

我想要| 去吧| 至 | | 的 | 海滩。

这句话将与我们训练集中的某些内容非常相似,因此它会获得很高的概率分数。

在尝试了所有可能的句子后,我们选择既包含该块最有可能的翻译,又与真正的英语句子整体最相似的句子。

我们的最终翻译将是“我想去海滩”。 不错!

统计机器翻译是一个巨大的里程碑

如果有足够的训练数据,统计机器翻译系统的性能要比基于规则的系统好得多。 Franz Josef Och 完善了这些想法,并在 2000 年代初用它们开发了 翻译。 世界终于可以使用机器翻译了!

早期每个人都感到惊讶,这种“愚蠢的”基于概率的翻译方法比语言学家设计的基于规则的系统效果更好。 这导致了20世纪80年代研究人员中广泛流传的一句话:

每次我解雇一名语言学家,我的准确性就会提高。

“当我开火时,我的就会上升。”

统计机器翻译的局限性

统计机器翻译系统运行良好,但其开发和维护相当复杂。 您想要翻译的每组语言对都需要专家微调和优化新的多步骤翻译流程。

由于开发这些不同的翻译流程需要大量工作,因此必须进行一些权衡。 如果你希望谷歌将格鲁吉亚语翻译成泰卢固语,它必须首先在内部将其翻译成英语作为中间步骤,因为世界上没有那么多格鲁吉亚语到泰卢固语翻译人员使用这种语言对工作,大量投资是不明智的在相互翻译中。 而如果你想做一个更常见的法语到英语的翻译,你使用的翻译过程可能会更简单一些。

如果我们让计算机来完成所有烦人的开发工作不是很好吗?

让计算机翻译得更好——不再需要那些昂贵的人力

机器翻译的圣杯是一个黑匣子系统,它可以通过查看训练数据来学习如何自行翻译。 即使有了统计机器翻译,仍然需要人类来开发和调整多步骤统计模型。

2014年,Kyung Hyun Cho的团队取得了突破。 他们发现了一种利用深度学习构建黑盒系统的方法。 他们的深度学习模型利用并行语料库来学习如何在没有人工干预的情况下翻译两种语言。

这种方法背后有两个关键思想——循环神经网络和编码。 我们可以结合这两种方法来构建一个自学习翻译系统。

循环神经网络

我们已经讨论过循环神经网络,让我们快速回顾一下它们。

常规(非循环)神经网络是一种通用机器学习算法 - 它采用数字列表并计算结果(基于之前的训练)。 神经网络可以作为黑匣子来解决大量问题。 例如,我们可以使用它根据房屋的属性计算其大致价值。

谷歌翻译失败解决方法有哪些_谷歌翻译失败解决方法是什么_谷歌翻译失败解决方法

但与大多数机器学习算法一样,神经网络不会保存使用信息。 您输入一个数字列表,然后神经网络计算结果。 如果你向它显示相同的数字,它会计算出相同的结果。 这不是对之前结果的记忆,换句话说,2+2 总是等于 4。

循环神经网络 (RNN) 是一种稍微修改过的神经网络。 在RNN中,先前的网络状态是下一次计算的输入之一,这意味着先前的计算将改变未来计算的结果。

谷歌翻译失败解决方法有哪些_谷歌翻译失败解决方法_谷歌翻译失败解决方法是什么

人类讨厌他:一个让机器变得更聪明的奇怪小把戏!

我们为什么要这样做? 这是否意味着无论我们最终计算出什么,2+2 不应该总是等于 4 吗?

该技术允许神经网络学习数据序列中的模式。 例如,您可以使用它根据前几个单词来预测句子中最有可能的下一个单词。

谷歌翻译失败解决方法_谷歌翻译失败解决方法有哪些_谷歌翻译失败解决方法是什么

这是智能手机键盘应用程序实现“自动更正”的一种方式。

任何时候您都可以使用 RNN 来学习数据模式。 由于人类语言是一种庞大而复杂的模式,RNN 越来越多地应用于自然语言处理的许多领域。

编码()

另一件需要回顾的事情是编码,我们在有关人脸识别的第 4 部分中讨论过。 为了解释编码,让我们快速了解一下计算机如何区分两个人。

当您使用计算机来区分两个不同的人时,您可以收集每张面孔的不同指标,并使用这些指标来比较面孔。 例如,我们可以测量每只耳朵的大小、眼睛之间的距离,然后比较测量结果来确定他们是否是同一个人。

您可能已经在 CSI 等热门侦探节目中熟悉了这种方法:

谷歌翻译失败解决方法是什么_谷歌翻译失败解决方法_谷歌翻译失败解决方法有哪些

我非常喜欢 CSI 中这张愚蠢的 gif,所以我仍然会使用它,因为它清楚地演示了这种方法,尽管它可能根本没有意义。

将面容转化为尺寸的方法是一种编码方法。 我们获取原始数据(面部图像),然后将其转换为一系列测量值来表示它(编码)。

但正如我们在第 4 部分中看到的,我们不必拿出特定的面部特征列表来测量自己,我们只需使用神经网络来生成面部特征的测量值即可。 计算机比我们更擅长找出哪种测量方法最能区分两个相貌相似的人。

由经过训练的神经网络生成的面部特征测量可用于确保不同的面部生成不同的测量数字。

这就是编码()。 使用简单的东西(128 个数字)来表示非常复杂的东西(一张脸的图片)。 现在比较两张不同的面孔更容易了,因为我们只需要比较每张面孔的 128 个数字,而不是整个图像。

猜猜你还能用这种方法做什么? 我们可以用同样的方式处理句子! 我们还可以生成一系列唯一数字的编码来表示每个可能的不同句子:

这个数字列表代表英语句子“is Fun!” 不同的句子可以表示为不同的数据集。

为了生成这种编码,我们将把句子放入这个 RNN 中,一次一个单词。 处理最后一个单词后的最终结果将是代表整个句子的值:

谷歌翻译失败解决方法是什么_谷歌翻译失败解决方法_谷歌翻译失败解决方法有哪些

因为这个 RNN 为经过它的每个单词形成了“记忆”,所以它计算的最终编码代表了句子中的所有单词。

好吧,现在我们有办法将整个句子表示为一系列唯一的数字! 我们不知道编码中每个数字的含义,但这并不重要。 只要每个句子都可以根据自己的一组数字来识别,我们就不需要知道这些数字是如何生成的。

让我们开始翻译吧!

我们知道如何使用 RNN 将句子编码为一系列唯一的数字。 这对我们有什么帮助? 这就是事情开始变得有趣的地方!

如果我们将两个 RNN 端到端连接起来会怎样? 第一个 RNN 生成表示句子的编码。 然后,第二个 RNN 接受这些编码并反转相同的逻辑以再次解码原始句子:

谷歌翻译失败解决方法_谷歌翻译失败解决方法是什么_谷歌翻译失败解决方法有哪些

当然,能够再次对原始语句进行编码和解码并没有多大帮助。 但如果我们可以训练第二个 RNN 将原始英语解码为西班牙语呢? 我们可以使用并行语料库训练数据来训练它们:

谷歌翻译失败解决方法是什么_谷歌翻译失败解决方法_谷歌翻译失败解决方法有哪些

就像这样,我们有一个将英语单词序列转换为西班牙语对应项的通用方法。

这是一个有用的想法:

请注意,我们没有讨论使其对现实数据有效的一些工作。 例如,有一项额外的工作是处理不同长度的输入和输出句子。 还有生僻字的翻译问题。

构建您自己的序列到序列翻译系统

如果您想构建自己的语言翻译系统,这里有一篇关于如何使用它进行英法翻译的指导性文章:。 然而,这里的内容不适合新手或预算有限的人; 该技术仍然是新技术,需要资源。 即使您拥有一台带有高端显卡的超快计算机,也可能需要一个月的处理时间来训练您自己的语言翻译系统。

同样,序列到序列的机器翻译技术正在迅速发展,很难跟上。 最近的许多进展(例如添加 或 )极大地改善了结果,但由于太新,甚至还没有维基百科页面。 如果您确实想使用序列到序列学习,则需要及时了解这项新研究。

序列到序列模型的力量

那么,我们还能用序列到序列模型做什么呢?

大约一年前,谷歌研究人员表明,可以使用序列到序列模型来开发人工智能机器人。 这个想法很简单,但令人惊讶的是它确实有效。

首先,他们抓取了谷歌员工和谷歌技术支持团队之间的聊天记录。 然后,他们训练了一个序列到序列的模型,将员工的问题作为输入句子,将技术支持团队的回答作为“翻译”。

谷歌翻译失败解决方法是什么_谷歌翻译失败解决方法有哪些_谷歌翻译失败解决方法

当用户与机器人交互时,他们可以使用系统“翻译”用户的每条消息以获取机器人的响应。

最终结果是一个半智能机器人,可以(有时)回答真正的技术支持挑战。 以下是他们论文 ( ) 中的一段对话示例:

人们:连接被拒绝或类似的情况

机器:我可以知道您所连接的网络连接版本吗?

人:我不确定版本是什么。

机器:网络连接是否提示需要任何用户证书?

人:是的

机器:你在家还是在工作? 在办公室?

人:我在家

机器:试试这个。转到页面并输入您的用户名和密码

人: 完成

机器:尝试输入并检查它现在是否有效

人:是的,我现在可以工作了

机器:非常好。 还有什么需要我帮你的吗?

他们还尝试构建一个基于数百万电影字幕的聊天机器人。 这个想法是利用字幕之间的对话来训练机器人,使其能够像人类一样说话。 输入的句子是一个角色的对话,“翻译”是下一个角色的对话:

谷歌翻译失败解决方法有哪些_谷歌翻译失败解决方法是什么_谷歌翻译失败解决方法

结果真的很有趣。 该机器人不仅能像人类一样说话,而且还表现出一定的智能:

人:我叫大卫,我叫什么名字?

机器:大卫

人:我叫约翰,我叫什么名字?

机器:约翰

人:你是领导者还是追随者?

机器:领导者

人:你是追随者还是领导者?

机器:领导者

这只是一切可能的开始。 我们不限于将一个句子转换为另一个句子。 您还可以使用图像到(​​图像到序列)模型将图像转换为文本。

谷歌的另一个团队就是这么做的,他们用卷积神经网络取代了第一个 RNN。 这允许输入是图片而不是句子。 其余工作基本相同:

谷歌翻译失败解决方法_谷歌翻译失败解决方法有哪些_谷歌翻译失败解决方法是什么

就像这样,我们可以将图像转换为文本内容(只要我们有大量的训练数据)!

这些想法通过单独处理图像的不同区域得到扩展,创建了一个可以详细描述图像内容的系统。

谷歌翻译失败解决方法_谷歌翻译失败解决方法有哪些_谷歌翻译失败解决方法是什么

这使得构建可以查找与搜索查询匹配的图像的图像搜索引擎成为可能:

谷歌翻译失败解决方法是什么_谷歌翻译失败解决方法_谷歌翻译失败解决方法有哪些

一些研究人员也在研究相反的问题——根据文本描述生成完整的图片。

从这些例子中,你可以想象未来会怎样。 如今,从语音识别到计算机视觉,存在序列到序列的应用。 我敢打赌明年将会有更多的应用程序。

©本文由机器之心编译。 转载请联系本公众号获取授权。

✄------------------------------------------------

加入机器之心(全职记者/实习生):

贡献或寻求报道:

广告及商务合作:

标签: 翻译 序列 句子

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码