一.Machine Translation

    机器翻译(MT)是将一个句子 x 从一种语言( 源语言 )转换为另一种语言( 目标语言 )的句子 y 的任务。

     【cs224n-7】Machine Translation, Seq2Seq and Attention

1.1 1950s: Early Machine Translation

     机器翻译研究始于20世纪50年代初。

  • 俄语 →英语(冷战的推动)
  • 系统主要是基于规则的,使用双语词典来讲俄语单词映射为对应的英语部分

1.2 1990s-2010s: Statistical Machine Translation(SMT)

  • 核心想法:从数据中学习概率模型。

         假设我们正在翻译法语 →英语。我们想要找到最好的英语句子 y ,给定法语句子 x

                       argmaxyP(y|x)

          使用Bayes规则将其分解为两个组件从而分别学习

                  argmaxyP(x|y)P(y)

  • P(x|y)--翻译模型
    • 分析单词和短语应该如何翻译(逼真)
    • 从并行数据中学习
  • P(y)--语言模型

    • 模型如何写出好英语(流利)
    • 从单语数据中学习
  • SMT是一个巨大的研究领域

          一个好的SMT系统,需要针对特定的语音现象设计对应的功能特性、需要编译和为维护额外的资源(比如等价短语表)、需要大量的人力来维护、针对不同的语言都需要重复操作。 

        SMT可用于构建基于单词或短语的翻译系统。正如你所想到的,一个简单的的基于单词的翻译系统将完全不能捕获语言之间的排序差异(例如,否定词移动,句子中的主语和动词的位置等)。

         基于短语的翻译系统可以根据短语序列考虑输入和输出,相比比基于词的系统可以处理更复杂的语法。然而,在基于短语的翻译系统仍然难以捕获长距离的信息。

 1.3 Neural Machine Translation (NMT)  

     神经机器翻译是利用单个神经网络进行机器翻译的一种方法,神经网络架构称为sequence-to-sequence (又名seq2seq),它包含两个RNNs。

     【cs224n-7】Machine Translation, Seq2Seq and Attention

  • 编码器RNN生成源语句的编码。源语句的编码为解码器RNN提供初始隐藏状态
  • 解码器RNN是一种以编码为条件生成目标句的语言模型
  • Seq2Seq 模型通常被称为“编码器-解码器模型”。
  • NMT直接计算 P(y|x)

 【cs224n-7】Machine Translation, Seq2Seq and Attention

  • Seq2Seq architecture - encoder

编码器网络的作用是读取输入序列到我们的 Seq2Seq 模型中,然后对该序列生成一个固定维度的上下文向量 C。为此,编码器使用一个循环神经网络单元——一般使用 LSTM——每个时间步读取一个输入单词。单元的最终隐藏状态就是 C 。然而,因为将一个任意长度序列压缩到一个单一固定大小的向量是很困难的(特别是像翻译这样的困难任务),编码器通常由堆叠的 LSTM 组成:一系列 LSTM“层”,其中每层的输出是下一层的输入序列。LSTM 最后一层的最终隐藏状态就是 C。

  • Seq2Seq architecture - decoder

       解码器也是一个 LSTM 网络,但是它的使用比编码器网络略微复杂。从本质上讲,我们希望它能作为一个语言模型,可以“知道”到目前为止生成的单词和输入。为此,我们将编码器保持“堆叠”的 LSTM 架构,但是我们将使用编码器生成的上下文向量来初始化第一层的隐藏层;然后编码器将使用输入的上下文向量来逐词地生成输出。

        一旦我们有了输出序列,我们就像往常一样使用相同的学习策略。我们对预测序列定义一个交叉熵损失函数,然后用梯度下降算法和反向传播算法来最小化损失函数。同时对编码器和解码器进行训练,使得它们都学习到相同的上下文向量表示。

1.4 Sequence model decoders

      Exhaustive search :这是最简单的思路。对每个可能的序列计算其概率,然后我们从中选择概率最高的序列。但是,搜索空间对输入的大小是呈指数级增长的,所以这个方法在很难扩展到大规模输出的情况。

     Ancestral sampling :在时间步 t,我们计算基于时间步 t 前面的单词的条件概率分布,并从该分布中进行抽样得到 xt。

【cs224n-7】Machine Translation, Seq2Seq and Attention

       理论上这个技术是有效的渐进精确的。然而在实际中,这个方法的表现很差和会出现高方差。

     Greedy Search :在每个时间步,我们选择最可能的单词,换而言之

【cs224n-7】Machine Translation, Seq2Seq and Attention

        这种技术是有效的,但是它探索了一小部分的搜索空间,如果我们在一个时间步中出现一个错误,那么剩下的句子生成可能会受到很大的影响。

      Beam search :这个方法在解码器的每一步,跟踪 k 个最可能的部分翻译(我们称之为 hypotheses 假设 )。 随着增加 K 的增加,我们获得了准确率和渐近地精确。然而,提高并不具有单调性,所以我们要设置一个 K,既要考虑合理性能又要考虑计算效率。正因为如此,beam search 是在 NMT 中最常见的方法。

1.5 Evaluation of Machine Translation Systems

    评估机器学习翻译的质量已经自成体系为一个研究领域,已经提出了许多评估的方法 TER, METEOR, MaxSim, SEPIA 和 RTE-MT 。我们将重点关注两个基准评估方法和 BLEU。

  •   Human Evaluation

          第一个也是最不令人惊讶的方法是让人们手动评估系统的正确性、充分性和流畅性。就像图灵测试一样,如果你能骗过一个人,让他无法区分人工翻译和系统翻译,那么你的模型就通过了看起来像真实句子的测试!这种方法的一个明显问题是成本高且效率低,尽管它仍然是机器翻译的黄金标准。

  • Evaluation against another task

       评估机器学习模型的一种常见方法是输出有用的表示数据(表示为翻译或摘要),如果您的预测对解决某些具有挑战性的任务很帮助,那么模型必须在预测中编码相关信息。例如,您可能会考虑在翻译语言的问答任务中训练翻译预测。也就是说,您使用系统的输出作为其他任务(问答)模型的输入。如果您的第二个任务在您的预测上和在翻译语言的格式良好的数据上一样出色,这意味着您的输入具有满足任务需求的相关信息或模式。

这种方法的问题在于,第二个任务可能不会受到许多翻译细节的影响。例如,如果您在查询检索任务中衡量翻译质量(例如,提取搜索查询的正确网页),你会发现一个翻译有助于保护文档的主题句,但忽略了语法和语法仍然可能适合的任务。但这并不意味着翻译质量是准确可靠的。因此,确定翻译模型的质量只是为了确定任务本身的质量,这可能是也可能不是一个好的标准。

  •  Bilingual Evaluation Understudy (BLEU)

      在 2002 年,IBM 的研究者提出了 Bilingual Evaluation Understudy(BELU),时至今日,该方法的很多变体,是机器翻译中最可靠的评估方法之一。

       BELU 算法通过参考人工翻译来评估机器翻译的精确度分数。参考人工翻译被假定为是一个翻译的模型样例,然后我们使用 n-gram 匹配候选翻译与人工翻译之间的相似程度作为度量标注。

【cs224n-7】Machine Translation, Seq2Seq and Attention

二.Attention

  •    核心理念 :

             在解码器的每一步,使用 与编码器的直接连接 来专注于源序列的特定部分

        【cs224n-7】Machine Translation, Seq2Seq and Attention

  • Motivation

        当你听到句子“the ball is on the field”,你不会认为这 6 个单词都一样重要。你首先会注意到单词“ball”,“on” 和 “field”,因为这些单词你是觉得最“重要”的。类似的,Bahdanau 等人注意到使用 RNN 的最终状态作为 Seq2Seq 模型的单一“上下文向量”的缺点:一般而言,输入的不同部分具有不同的重要程度。再者,此外,输出的不同部分甚至可以考虑输入的不同部分是“重要”的。例如,在翻译任务中,输出的第一个单词是一般是基于输入的前几个词,输出的最后几个词可能基于输入的几个词。

       注意机制利用这一观察结果,为解码器网络提供了在每个解码步骤查看整个输入序列的功能;然后解码器可以在任何时间点决定哪些输入单词是重要的。

  • Bahdanau et al. NMT model

Seq2Seq 模型是由两部分组成,一个编码器将一个输入句子编码,以及利用解码器所提取的信息生成翻译句子的解码器。

    Encoder

    令 (h1,…,hn)是输入句子的隐藏向量表示。这些向量是例如 bi-LSTM 的输出,并且捕获句子中每个单词的上下文表示。

    Decoder

          我们想使用以下形式的递归公式计算解码器的隐藏状态 si

               【cs224n-7】Machine Translation, Seq2Seq and Attention

         其中 si−1是前面的隐藏向量, yi−1 是前面时间步生成的单词,和 ci 是从原始句子捕获与解码器的时间步 i相关的上下文的上下文向量。

        上下文向量 ci捕获对第 i 个解码时间步的相关信息(与标准的的 Seq2Seq 模型只有一个上下文向量不同)。对每个原始句子的隐藏向量 hj ,计算分数

                 【cs224n-7】Machine Translation, Seq2Seq and Attention

      其中 a是在 R 中具有值的任意函数,例如是一个单层的全连接神经网络。然后,我们得到一系列标量值 ei,1,…,ei,n 。然后,使用 softmax 层对这些分数进行归一化,得到向量 αi=(αi,1,…,αi,n)

               【cs224n-7】Machine Translation, Seq2Seq and Attention

      然后,计算原始句子的隐藏向量与注意力向量的加权平均值作为上下向量 ci

                      【cs224n-7】Machine Translation, Seq2Seq and Attention

      直观上看,该向量从原始句子的解码器的第 i 个时间步中捕获相关的上下文信息。

  • Luong et al. NMT model

       Luong 等人在论文 《Effective Approaches to Attention-based Neural Machine Translation》 提出了一个注意力机制模型的变体,是由两个不同的注意力机制组成。

    Global attention

          我们运行简单的 Seq2Seq NMT。我们称编码器的隐藏状态 h1,…,hn,解码器的隐藏状态 ¯h1,…,¯hn 。现在对每个 ¯hi ,我们计算编码器的隐藏状态的注意力向量。我们可以使用下面其中一个得分函数:

              【cs224n-7】Machine Translation, Seq2Seq and Attention

        现在我们有一个分数的向量,然后可以用 Bahdanau 等人提出的方法来计算一个上下文向量。首先,我们通过一个 softmax 层来对分数进行归一化,得到向量 αi=(αi,1,…,αi,n)

                 【cs224n-7】Machine Translation, Seq2Seq and Attention

       然后再计算上下文向量,我们可以使用上下文向量和隐藏状态对解码器的第 i 个时间步计算一个新的向量

                                  【cs224n-7】Machine Translation, Seq2Seq and Attention

       最后一步是使用 ~hi 来对解码器进行最终预测。为了解决覆盖问题,Luong 等人使用了一个 input-feeding 方法。注意力加权的向量 ~hi 是作为解码器的输入,而不是最终预测。这类似于 Bahdanau 等人提出的方法,他们使用上下文向量来计算解码器的隐藏向量。

   Local attention

       该模型预测输入序列中的对齐位置。然后,它使用以此位置为中心的窗口来计算上下文向量。这个计算耗费的计算资源是恒定的,不会随着句子的长度而暴增。

相关文章:

  • 2021-04-23
  • 2021-04-01
  • 2021-06-23
  • 2022-12-23
  • 2021-09-19
  • 2021-08-31
  • 2021-08-13
猜你喜欢
  • 2021-09-09
  • 2021-06-22
  • 2021-05-16
  • 2021-09-12
  • 2021-08-09
  • 2021-08-05
  • 2021-09-03
相关资源
相似解决方案