当前位置:   article > 正文

【深度学习】图解机器翻译模型:基于注意力机制的 Seq2Seq_机器学习翻译模型

机器学习翻译模型

基于注意力机制的 Seq2Seq

Sequence-to-Sequence(Seq2Seq)作为一种深度学习模型,在机器翻译、文本摘要、描述图像等任务中取得了诸多进展。谷歌翻译于 2016 年底开始在实际生产中使用该类模型。在 Sutskever et al., 2014Cho et al., 2014 的两篇开创性论文中对这些模型进行了解释。然而,要充分理解模型并实践,一个跟一个的概念会让人望而却步,以视觉化的表达则更容易让人理解。

在这里插入图片描述
机器翻译中,序列(sequence)是一系列单词,一个接一个地处理。同样,输出也是一系列单词。

在这里插入图片描述
该模型由 编码器解码器 组成。

编码器处理输入序列中的每一项,它将捕获的信息编译成一个向量(称为上下文)。处理完整个输入序列后,编码器将上下文发送给解码器,解码器开始逐项生成输出序列。

在这里插入图片描述
这和机器翻译任务类似。

在这里插入图片描述
在机器翻译任务中,上下文是一个向量(基本上是一个数字数组),编码器和解码器往往都是 循环神经网络Recurrent Neural NetworksRNN)。
在这里插入图片描述
在设置模型时可以设置上下文向量的大小,它一般是编码器 RNN 中隐藏单元的数量。上图显示了大小为 4 4 4 的向量,但在实际应用中,上下文向量的大小可能为 256 256 256 512 512 512 1024 1024 1024

根据设计,RNN 在每个时间步都有两个输入:一个输入(在编码器的情况下,输入句子中的一个词)和一个隐藏状态。然而,这个词需要用一个向量来表示。我们可以用 词嵌入 的方法将这些单词转换为向量空间,捕获其语义信息(例如:国王 - 男人 + 女人 = 女王)。

在这里插入图片描述
我们可以使用预训练模型完成嵌入,或者在自己的数据集上训练嵌入模型。典型的嵌入向量大小为 200 200 200 300 300 300,为简单起见,这里仅展示了大小为 4 4 4 的向量。

在介绍完了向量后,再来回顾一下 RNN 的机制。

在这里插入图片描述
下一个步骤(Time step #2)将采用第 2 2 2 个输入向量(Input vector #2)和第 1 1 1 个隐藏状态(hidden state #1)来计算该时间步的输出。

由于编码器和解码器都是 RNN,因此 RNN 的每个时间步骤都会根据其输入和之前看到的输入更新其隐藏状态。

在这里插入图片描述
解码器还维护一个隐藏状态,它从一个时间步传递到下一个时间步。因为我们现在关注的是模型的主要部分,所以并没有在上图中将其可视化。

上下文向量被证明是这类模型的瓶颈,这让模型很难处理长句子。Bahdanau et al., 2014Luong et al., 2015. 提出了一种解决方案。这些论文介绍并完善了一种称为 注意力 的技术,该技术极大地提高了机器翻译系统的质量。Attention 允许模型根据需要关注输入序列的相关部分。

在这里插入图片描述
在第 7 7 7 步,注意力机制允许解码器在生成英文翻译之前能够将注意力集中在单词 étudiant(法语中的学生)上。这种 放大来自输入序列相关部分的信号的能力 使得注意力模型能产生比较好的效果。

注意力模型主要在两个方面不同于经典的 sequence-to-sequence 模型:

首先,编码器能将更多数据传递给解码器。编码器不是传递编码阶段的最后一个隐藏状态,而是将所有隐藏状态传递给解码器:

在这里插入图片描述
其次,注意力解码器在产生输出之前执行额外的步骤。为了专注于与此解码时间步长相关的输入部分,解码器执行以下操作:

  • 查看它接收到的一组编码器隐藏状态。每个编码器隐藏状态都与输入句子中的某个单词最相关。
  • 给每个隐藏状态一个分数(暂时不考虑如何进行评分)。
  • 将每个隐藏状态乘以其 softmaxed 分数,从而放大具有高分的隐藏状态,并忽视具有低分的隐藏状态。

在这里插入图片描述
这个评分过程是在解码器端的每个时间步完成的。

那么注意力过程是如何工作的呢?

  1. 注意力解码器 RNN 接受 <END> 标记的嵌入和初始解码器隐藏状态 h i n i t h_{init} hinit
  2. RNN 处理其输入,产生输出和新的隐藏状态向量 h 4 h_4 h4。输出被丢弃。
  3. 注意步骤:使用编码器隐藏状态(encoder hidden states)和 h 4 h_4 h4 向量来计算该时间步的上下文向量 C 4 C_4 C4
  4. 我们将 h 4 h_4 h4 C 4 C_4 C4 连接成一个向量。
  5. 我们通过前馈神经网络(feedforward neural network,与模型联合训练的网络)传递该向量。
  6. 前馈神经网络的输出表示该时间步的输出词。
  7. 下一个时间步重复上述过程。

在这里插入图片描述
通过另一种方法查看我们在每个解码步骤中究竟关注了输入句子的哪一部分:

在这里插入图片描述
该模型并非无意识地将输出中的第一个单词与输入中的第一个单词对齐。实际上,它在训练阶段学习了如何对齐两种语言中的单词(在本文示例中是法语和英语)。

在这里插入图片描述


实战教程推荐TensorFlow’s Neural Machine Translation (seq2seq) Tutorial

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/372489
推荐阅读
相关标签
  

闽ICP备14008679号