神经机器翻译和序列-序列模型:教程

一、介绍

本教程介绍了一组全新的技术,不同地称为“神经机器翻译”或“神经序列到序列模型”。这些技术已被用于处理人类语言的许多任务,并且可以成为任何想要对某种顺序数据建模的人的工具箱中的强大工具。本教程假设读者知道数学和编程的基础知识,但不会假设任何特殊的神经网络或自然语言处理经验。它试图解释所涵盖的各种方法背后的直觉,然后用足够的数学细节对它们进行深入研究,以具体地理解它们,并提出实施练习的建议,读者可以测试他们在实践中理解内容。
在深入细节之前,可能需要描述标题为“神经机器翻译和序列到序列模型”的每个术语。机器翻译是用于翻译人类语言的技术。想一想在科幻电影中出现的通用翻译设备,让您可以轻松地与那些使用不同语言的人进行交流,或者使用任何大量的在线翻译网站来吸收不在您本地的内容语言。毫无疑问,这种消除语言障碍的能力可能非常有用,因此机器翻译技术从数字计算出现后不久。
我们将机器翻译系统的语言输入称为源语言,并将输出语言称为目标语言。因此,机器翻译可以描述为转换源中的单词序列并转换成目标中的单词序列的任务。机器翻译从业者的目标是提出一个有效的模型,使我们能够对各种语言和内容进行准确的转换。标题的第二部分,序列到序列模型,是指包括将一个序列映射到另一个序列的所有模型的更广泛的模型类别。当然,这包括机器翻译,但它也涵盖了用于处理其他任务的其他广泛的方法,如图1所示。实际上,如果我们将计算机程序看作是一系列输入位,然后输出一系列的输出位,我们可以说每一个程序都是一个序列到序列的模型,表达了一些行为(尽管在很多情况下这不是表达事物的最自然或直观的方式)。
使用机器翻译作为这种更大类别的序列到序列模型的代表的动机有很多:
1.机器翻译是广泛认可和有用的序列到序列模型实例,并允许我们使用许多直观的例子证明了在试图解决这些问题时遇到的困难。
2.机器翻译往往是新模型开发背后的主要推动任务之一,因此这些模型倾向于先为MT定制,然后应用于其他任务。

本教程首先从第二部分的机器翻译统计技术的一般数学定义开始。本教程的其余部分将依次描述增加复杂性的技术,从而形成注意模型,这些模型代表当前最先进的技术在该领域。
首先,第3-6节着重于语言模型,它计算目标序列的概率。这些模型不能进行翻译或序列转导,但会为了解序列-序列模型提供有用的预备知识。
第3节介绍n-gram语言模型,简单模型根据一组数据中的计数来计算词的概率。它还描述了我们如何评估这些模型使用困惑等措施的效果。
第4节介绍了对数线性语言模型,它们是基于上下文的特征计算下一个单词的概率的模型。它描述了我们如何通过随机梯度下降法来学习模型的参数 - 计算导数并逐渐更新参数以增加观测数据的可能性。
第5节介绍了神经网络的概念,它允许我们比对数线性模型更容易地将多条信息组合在一起,从而提高建模精度。它给出了一个前馈神经语言模型的例子,它使用神经网络基于之前的几个词计算下一个词的概率。
第6节介绍递归神经网络,各种神经网络具有允许他们记住多个时间步骤的信息的机制。这些导致了经常性的神经网络语言模型,这允许处理在语言或其他顺序数据建模时有用的长期依赖性。
最后,第7节和第8节描述了能够执行机器翻译或其他任务的实际序列 - 序列模型。 第7节描述编码器 - 解码器模型,它使用循环神经网络将目标序列编码为数字向量,另一个网络将此数字向量解码为输出句子。它还描述了基于这个模型生成输出序列的搜索算法。
第8节描述了注意力机制,这是一种允许模型在生成翻译时专注于输入句子的不同部分的方法。这允许更有效和直观的表示句子的方法,并且通常比其简单的编码器 - 解码器对应物更有效。

二、统计机器翻译

首先,在讨论任何特定模型之前,本章更加正式地描述了统计机器翻译(SMT)[16]的总体框架。首先,我们将机器翻译的任务定义为翻译源句子 F=f1,...,fJ=f|F|1 F = f 1 , . . . , f J = f 1 | F | 转换成目标语句 E=e1,...,eI=e|E|1 E = e 1 , . . . , e I = e 1 | E | . 因此,任何类型的翻译系统都可以定义为一个函数

Ê =mt(F)(1) E ^ = m t ( F ) ( 1 )

它给出源句子 F F 作为输入返回翻译假设E^.

统计机器翻译系统是通过为 E E 给定F P(E|F;θ) P ( E | F ; θ ) 的概率创建一个概率模型并找到最大化该概率的目标句子来执行翻译的系统:

Ê =argmaxEP(E|F;θ)(2) E ^ = a r g m a x E P ( E | F ; θ ) ( 2 )

其中θ是指定概率分布的模型的参数。参数θ是从源语言和目标语言中的对齐语句组成的数据中学习的,这些语句在技术术语中称为并行语料库。在此框架中,我们需要妥善处理以下三个主要问题以创建一个良好的翻译系统:

  • 建模:首先,我们需要决定我们的模型 P(E|F;θ) P ( E | F ; θ ) 是什么样的。它有什么参数,参数将如何指定概率分布?
  • 学习:接下来,我们需要一种方法从训练数据中为参数θ学习适当的值。
  • 搜索:最后,我们需要解决找到最可能的句子的问题(解决“argmax”)。这个搜索最佳假设的过程通常称为解码。 这里的材料的其余部分将重点解决这些问题。

三、n-gram 语言模型

虽然统计机器翻译系统的最终目标是创建一个给定源语句 F F P(E|F)的目标语句 E E 的模型,本章我们将退后一步,尝试创建一个语言模型只有目标句子P(E)。基本上,这个模型允许我们做两件实用的事情。

  • 评估自然性 :给出一个句子 E E ,这可以告诉我们,这看起来像目标语言中的一个真实、自然的句子吗?如果我们可以学习一个模型来告诉我们这一点,我们可以用它来评估自动化系统生成的句子的流畅性,以改善其结果。它也可以用来评估人类为了语法检查或纠错而生成的句子。
  • 生成文本:语言模型也可用于通过从目标分布中抽取一个句子E0随机生成文本: E0P(E) E 0 → P ( E ) .从语言模型中随机生成样本本身可能很有意思 - 我们可以看到模型“认为”是一个看起来很自然的句子 - 但在以下章节中描述的神经翻译模型的背景下,它会更实用。在下面的章节中,我们将介绍几种用来计算这个概率 P(E) P ( E ) 的方法。

1、逐词计算概率

如上所述,我们有兴趣计算一个句子 E=eT1 E = e 1 T 的概率。形式上,这可以表示为

P(E)=P(|E|=T,eT1),(3) P ( E ) = P ( | E | = T , e 1 T ) , ( 3 )

句子长度为 (|E|=T) ( | E | = T ) 的联合概率,句子中的第一个单词是 e1 e 1 ,句子中第二个单词的标识是 e2 e 2 ,直到句子中的最后一个单词是 eT e T 。不幸的是,直接创建这种概率分布的模型并不简单,因为序列T的长度没有预先确定,并且有大量可能的单词组合。
图2

作为使事情变得更容易的一种方式,通常将整个句子的概率重写为单词概率的产物。这利用了联合概率:例如 P(e1,e2,e3) P ( e 1 , e 2 , e 3 ) ,可以通过将每个元素的条件概率相乘来计算的事实。在这个例子中,这意味着 P(e1,e2,e3)=P(e1)P(e2|e1)P(e3|e1,e2) P ( e 1 , e 2 , e 3 ) = P ( e 1 ) P ( e 2 | e 1 ) P ( e 3 | e 1 , e 2 ) 。图2显示了这个增量计算“她回家”句子概率的例子。在这里,除了句子中的实际单词之外,我们还引入了一个隐含的句子结尾 (</s>) ( “ < / s > ” ) 符号,我们将在结束该句子时指出它。这意味着我们首先计算“她”在句子开始时出现的概率,然后在以“她”开头的句子中出现“去”的概率,“归属”在“她回家”之后加上句子前缀,然后最后在“她回家”之后结束符号 (</s>) ( “ < / s > ” ) 。更一般地说,我们可以将其表示为以下等式:

P(E)=ΠT+1t=1P(et|et11)(4) P ( E ) = Π t = 1 T + 1 P ( e t | e 1 t − 1 ) ( 4 )

其中 eT+1=</s> e T + 1 =< / s > 。所以回到句尾符号 </s> < / s > <script type="math/tex" id="MathJax-Element-1554"></script>,我们引入这个符号的原因是因为它让我们知道句子何时结束。换句话说,通过检查 </s> < / s > <script type="math/tex" id="MathJax-Element-1555"></script>符号的位置,我们可以确定 |E|=T | E | = T 在我们的原始LM联合概率(3)。在这个例子中,当我们有 </s> < / s > <script type="math/tex" id="MathJax-Element-1557"></script>作为句子中的第4个单词时,我们知道我们已经完成了,并且我们的最终句子长度是3.一旦我们有了公式在等式(4)中,语言建模的问题现在成为计算在前面的词 P(et|et11) P ( e t | e 1 t − 1 ) 给出的下一个词的问题。这比计算整个句子的概率要容易得多,因为我们现在有一组固定的项目,我们正在寻找计算概率。接下来的几节将介绍几种方法。

2、n-gram语言计算模型

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值