CS224n笔记——NMT与注意力机制

Neural Machine Translation

NMT即为用一个大型神经网络建模整个翻译过程的系统。其抽象架构就是encoder-decoder系统:

这种模型的输入输出均为词序列,也被称为sequence-to-sequence模型,即seq2seq。

Seq2Seq模型第一次出现是被用在了英法翻译上,简单来说,就是两个RNN:

encoder实际上在其RNN结束时将文本信息转化为一个文本向量"context vector",然后将其输入decoder解码成想要的语言。实际上这个模型更加复杂:

encoder网络的任务是把输入词序列读入seq2seq模型,并生成一个固定维度的文本向量。为了达成这个任务,encoder使用一个RNN网络(目前常常是LSTM)来逐时刻读入单词(其实也不光是单词,也包括一些标点符号和结束符之类的)。最后一刻hidden-layer的输出即为文本向量。然而,由于将一个任意长度的序列压缩成固定大小的向量且蕴含足够的信息十分困难,encoder常常会使用堆叠起来的(stacked)LSTM,就如上图那样,最后一个layer的输出作为文本向量。encoder还会有一些技巧,例如将词序列反序——强化最前面的词在文本向量中的信息,使得decoder更容易有一个正确的开始。假设我们的输入文本为"what is your name",encoder的示例如下所示:

decoder通常也是一个LSTM网络,但是它比encoder要更复杂一些。首先,这也会是一个堆叠起来的LSTM,不过第一层layer的输入是前一时刻的输出单词。此外,我们还需要一个特殊的标记符号告知我们的decoder要开始输出了,这个符号就是符,被附加在输入词序列的末尾位置。如果我们要将"what is your name"翻译成法语,decoder结构如下图所示:

需要注意的是我买的输入序列和输出序列的长度没有任何直接关系,理论上整个系统支持任意长度的词序列的翻译,但是实际上受RNN网络的性能的限制,过长的序列的翻译效果通常不是很好。

接下里我们以上面对"what is your name"翻译成法语"comment t’appelles tu"作为实例把整个过程叙述一遍。

首先,我们的输入是四个one-hot向量,代表四个英语单词"what is your name",然后这四个ont-hot向量经过嵌入层转化为稠密的词向量表示。然后将反序的词向量序列逐时刻输入进堆叠的LSTM网络,即encoder,最终编码成一个文本向量,这个文本向量在语义向量空间中代表着询问别人名字的含义。这个向量被用来初始化另一个堆叠的SLTM网络——decoder——的第一层layer,然后逐步运行这个网络的每一层layer。在deocder网络的最后一层layer,将输出利用softmax预测出翻译结果单词,然后把前一时刻的输出词向量作为当前时刻网络的输入,逐步得到词序列"comment t’appelles tu".如果是在训练阶段,就会计算损失函数,利用反向传播更新整个网络中的参数,此时输出的词序列可能不对,但是多次训练后可以提高得到正确词序列的概率。

之前在依存关系一节中,我们学习到一个单词的依存关系不仅存在于它的前文,也可能存在于后文,但是我们的encoder运行时只能考虑一个方向的依存关系,所以就出现了基于双向LSTM网络的encoder,它分别将正序和倒序的词序列转化为文本向量,然后将其串联得到一个最终的文本向量作为decoder的输入。

NMT模型的优势:

1.end-to-end train.所有参数有一个统一的优化目标函数。

2.distributed representation。更好地利用了短语和词语之间的相似性。

3.better exploitation of context.更好地利用上下文信息,包括原文的部分译文

4.生成的文本更流畅。这一点可能与上面几点相关。

劣势:

1.无法显式地利用语义和语法结构。

2.无法显式地利用指代相消的结果。

Attention Mechanism

当你听到"the ball is on the field"这句话时,你并不会给这六个单词同样的重要性。你主要注意的是"ball","on","field"这三个单词,因为这三个单词最重要,已经足以代表这句话的意思。这就引出了上面的RNN网络的一个缺陷:没有对应对不同部分有不同水平的重要性这一现象的机制。更有甚者,输出的不同部分可能会认为输入中的不同部分的重要性不同。例如,输出的第一个单词会认为输入的前几个单词更重要,而最后一个单词会认为输入的最后几个单词更重要。

注意力机制利用这种观测为decoder网络在解码的每一步中提供了输入序列的全局概览,然后decoder可以判断在当前时刻输入的哪些单词更为重要:

这种机制也与人类译员的工作流程类似:不是先把长长的一个句子暗记于心再开始闭着眼睛翻译,而是草草扫一眼全文,然后一边查看原文一边翻译。这种“一边……一边……”其实类似于语料对齐的过程,即找出哪部分原文对应哪部分译文。而NMT中的attention是隐式地做对齐的。

注意力机制的实现方法有很多,先来看其中一种。

在encoder中,记录下每一个时刻的hidden-layer的输出向量(h1,...,hn) ,称为hidden vectors。然后在deocder中,i时刻的hidden-layer的输出si用下面的递归式来表征:

其中si-1是上一时刻的hidden-layer的输出,yi-1是上一时刻生成的预测单词,ci就是注意力机制添加的新的输入变量,一个与deocder的第几个时刻相关的来源于输入上下文信息的向量,也就是上面说的(h1,...,hn)。

对于encoder中的每一个hidden vector,计算一个评分:

其中a是实域上的任何一个函数,例如可以是由一个全连接神经网络,或者下面三种的一种:

其中中间这个函数比较主流。然后用softmax将其归一化为概率(这个概率也代表模型应该将多少比例的注意力放在对应的历史状态上):

也被称为注意力分数。然后就可以得到ci了:

注意力机制的优势主要在于对长句子的处理上,因为如果没有注意力机制,对于长语句而言,“距离”较远的单词的含义会衰减地很厉害,下面这张图说明了注意力机制的作用:

基本的LSTM擅长生成比较自然的文本,对语义的表现也比较好,但是常常没有把注意力放在原文上,会没头没脑地生成一些词,而注意力机制改善了这一点:

再来看一种注意力机制方法。

在encoder中,hidden vectors表示为,在deocder中,将hidden vectors表示为,评分的获得可以是下面三种函数之一:

相似的,继续计算注意力分数:

以及最后的ci:

还有一种想法是我们或许不应该总是将注意力放在全部的文本上,而只是一部分文本,理论上这似乎对于长文本的处理更有效,但是目前还没有例证说明其作用。

机器翻译系统的评价:

翻译质量的评价是一项非常主观所以也非常棘手的任务。试想,让十位翻译官去翻译同一段话,我们就很可能得到十个不同的答案,有的翻译试图表现文章的隐喻的作者的整体观点,有的翻译倾向于精准表达每一个词语和作者的文字风格,甚至于,机器翻译质量评价已经成为了一个完整的研究领域。

我们先来看两种baseline评价方式。

首先就是人工评价,让人类去评价翻译系统的正确性、满意度和流畅性。虽然这种评价方式的缺点非常明显——花费高昂、效率低下,但是它依然是机器翻译的黄金标准。

然后是任务评价。这种方法就是看翻译的结果能否对完成另一个任务有作用作为评价标准。例如,在问答任务中,如果以你的翻译结果作为输入依然能得到相似的答案,那么说明这个翻译结果蕴含了相关的信息,或者满足了任务的部分需要。这种方法的问题在于这个用来评价的任务常常不能验证翻译结果质量的一些方面。例如,对于查询检索任务,只要把关键词翻译出来就能很好地完成任务,但是语句的语法结构和流畅性被完全忽视了,所以这并不能直接当作质量评价的结果。

最后我们来看一种比较主流的评价方法,Bilingual Evaluation Understudy (BLEU)。

BLEU算法通过比较待评译文和参考译文并计算出一个确切的分数来评价翻译的质量,这个分数来自于利用n-gram模型匹配得到的相似度。

BLEU算法会识别所有匹配的n-gram模型,包括单字模型的匹配,并用精度评分评估匹配的强度。 精度分数是翻译中也出现在参考文献中的n-gram模型的比率。

此算法有两个约束,一是参考译文中的一个n-gram模型只能匹配一次,也就是说,如果参考译文中某个只出现了一次的短语在待评译文中出现了两次,那么也只能计算为1次。还有,我们制造了一个特殊的惩罚,令那些精度达到1的“完美”翻译的小句子不被认为是很好的翻译。例如,如果待评译文中只有一个单独的"there",就算评分达到了1,这显然不是一个好的翻译。

接下来看看评分具体如何计算。

令k为n-gram中最大的那个n.这里,我们假设k=4,那么我们只计算四元模型以下的部分,再大就会被忽略。令

这就是长度为n时的分数。然后,我们使用作为分数的权重,惩罚项为

即为参考译文的长度,即为待评译文的长度。最终的BLEU分数为:

虽然BLEU与人类的评价相关性很好,因此广泛作为基本的评判标准,但是它依然有其局限性。首先,它只能运作在数据集的水平上,因为任何一个0评分的出现都会使整体评分变成0.然后,BLUE分数仅仅由待评译文和单个参考译文得出,这就成为了统计n-gram时的噪声来源。当然,有BLUE的变种会在多种参考译文上做统计。通过BLUE评价对于优秀的机器翻译系统来说只是一个必要非充分条件,目前许多研究人员为提高BLUE分数做着各种努力,但是依然比不上人类翻译。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180131G1C02700?refer=cp_1026

同媒体快讯

相关快讯

扫码关注云+社区