论文笔记:Neural Machine Translation by Jointly Language Learning to Align and Translate

本文主要是介绍论文笔记:Neural Machine Translation by Jointly Language Learning to Align and Translate,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在前面

Attention 机制在许多领域中都有应用,这些模型都被称为 Attention Based Model,而这篇论文则是将注意力机制应用在神经网络机器翻译中,论文的思路很清楚,首先介绍了传统NMT系统的缺陷,然后针对这一缺陷提出改进,最后实验证明,并进行定量以及定性分析。

首先我们要了解经典的Seq2Seq模型是如何进行翻译的:整体模型使用了一个 Encoder 和一个 Decoder 首先输入的序列经过 Encoder 的处理,压缩成为一个固定长度的向量(Fixed-length Vector),然后在 Decode 阶段,将这个向量中的信息还原成一个序列,从而完成翻译任务。

在这里我们需要尤其注意这个定长向量,可以想象,对于不同长度的句子,在模型中却要将提取的全部信息放在同样长度的向量中,这本身就是不太合理的,一个长度50的句子和一个长度5的句子信息量怎么会在同样长度的向量中合适地表达呢?这也是论文中提到的,在测试的时候,对于长度大于30的句子,RNN Encoder-Decoder 机制的模型就有些力不从心了,因此引入了注意力机制,在 Decode 过程中,仍然可以直接参考原始句子序列中相关的部分。

在学习过程中,看到了这样的说法,使用 Attention 机制进行翻译的过程,就像是人进行翻译的过程,我们在翻译一个长句子的时候,假设翻译到某一个时刻,忘了要翻译的内容,我们会回过头去,找到原始句子的那一部分,然后再决定如何让翻译,Attention 机制解释了这一过程,实验证明,这一方式是非常有效的。

之前参考了一些代码,学习了一下 Seq2Seq + Attention 的代码实现,只能说,即使是论文的模型构建方式懂了,真正落地到代码也还有很长的一段路要走,果然还是要再努力一点啊。

1. Abstract & Introduction & Background

这一部分简要介绍了NMT一些基础共性,论文中提到,目前(当时)的 NMT 模型都属于 Encoder-Decoders 家族,模型的思路本质上就是最大化条件概率: P ( o u t p u t _ s e n t e n c e ∣ i n p u t _ s e n t e n c e ) P(output\_sentence|input\_sentence) P(output_sentenceinput_sentence),而使用固定长度向量来存储信息的做法,就像之前所说的,固定长度的限制无法储存足够多的信息,这就成为了一个瓶颈(Bottleneck)。在生成输出序列的时候,每次模型都只生成一个单词,在生成的时候使用 (soft-)search 的方法搜索输入序列中与要翻译内容最相关的部分,其实也就是 Attention 的思想了。

文中对 Neural Machine Translation 进行了介绍,首先是介绍了概率角度的机器翻译任务(就是最大化那个条件概率),然后对 RNN Encoder-Decoders 模型进行了介绍,并提到,通过使用一些更优秀的循环单元(LSTM),是的这些模型相较之前都有了很大的提升,这里还简单提了 RNN Encoder-Decder 的公式之类的,推荐更深的了解直接看之前的论文,例如 《Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation》

Learning to Align and Translate

第三部分切入正题,这里介绍的顺序是先 Decoder 然后是 Encoder (这算是自顶向下吗?)。首先来看这张图(论文中 Figure 1):

所有的信息都在这张图上了。

Decoder

首先来看 Decoder 部分,这里使用的就是一个简单的 RNN 单元, 只是要注意隐状态的改变:
s i = f ( s i − 1 , y i − 1 , c i ) s_{i}=f(s_{i-1},y_{i-1},c_{i}) si=f(si1,yi1,ci)
可以看到,某个时间点上输入的隐状态由三个因素共同决定:

  • 第一个是上一步的隐状态输出 ( s i − 1 s_{i-1} si1) 。
  • 第二个是上一步的直接输出( y i − 1 y_{i-1} yi1)。
  • 第三个是来自 Encoder 部分所有输出的一个处理结果 ( c i c_{i} ci)。

这一步还是很好理解的,很显然, 问题就在于如何表示来自于 Encoder 部分的输出信息,因为之前提到过,对于输出环节的每一个词语,我们都要找到输入序列的部分信息,然后再决定输出什么。也就是如何表示向量C了。
c i = ∑ j = 1 T x α i j h j c_{i} = \sum_{j=1}^{T_{x}}\alpha_{ij}h_{j} ci=j=1Txαijhj
这里可以看到对于某一步 i i i,对应的 c i c_{i} ci 实际上是一个加权和的形式,与当前步相关大的部分权值大,不太相关的则权值小,这样的过程就是 Attention 的体现,在文中也称 (soft-)search。另一个问题的这个 α i j \alpha_{ij} αij 如何计算,在论文中公式(6)可以看出,每一个权值都是对当前步的隐状态(Decoder阶段)和所有步的隐状态(Encoder阶段)经过一个变换的结果这个变换有必要提一下,这里的变换,也就是公式(6)中的 a ( ) a() a() 有很多实现形式,例如计算余弦距离, 或者是通过一个简单全连接神经网络的形式,这时候也就是 e i j = s i − 1 W h j e_{ij}=s_{i-1}Wh_{j} eij=si1Whj 了,等等。然后对这一批权值,做一个softmax处理,(处理成一个概率分布,相当于一个标准化,不然不同的权值第一步(1,2,3),第二步(100, 200, 300)显得太不平衡了)。

(PS:关于这里 Attention 的权值计算方式,在实现时候多有不同,我见的代码有不使用decoder阶段隐状态而是用decoder阶段输出与encoder所有的输出计算权值的,所以,我觉得理解这个意思就好了,一定程度上不必把所有的细节都完全与论文一样,当然,完全论文复现还是尽量这样的,我的意思只是学习的过程中。。)

另外,更具体的过程可以参考附录部分。

Encoder

Encoder阶段就非常好理解了,这里没有直接使用RNN,而是使用了一个 BiRNN 网络实现,双向循环网络可以更好地捕捉文本上下文信息嘛。这样的话,每一步上Encoder都会有两个输出,这里的处理很简单,直接把两个输出结果 concatenate,也就是论文3.2节中双向箭头那部分向量,把这个拼接后的向量作为我们上面提到的计算 Attention 权重的 h j h_{j} hj 部分。

Experiment Settings

这一部分介绍实验中的一些设置,主要包括两部分,第一部分介绍使用的数据集,第二部分展示了实验中模型的一些参数。

第一部分对于数据集的处理,文中表示对数据集并没有进行一些特殊的操作,首先是数据集选择,去掉了一些不合适的数据,第二步进行分词,然后选择其中最常见的30000词构建词典,这里强调了没有进行其他特殊操作,例如统一对数据小写处理,以及词干化等。

第二部分介绍了实验中的一些参数以及对比模型等。既然是对比试验,文中设计了两类模型,每一种模型又按照长度分为两种(长度不超过30、长度不超过50),分别是:

  • RNN encdec-30
  • RNN search-30
  • RNN encdec-50
  • RNN search-50

具体参数可以看论文这一部分,更具体的参数记录在附录中,这一部分最后也提到了,对于每一个模型,训练了大概5天。。。果然学习最后还是要靠硬件吗。。

Results

感觉这一部分才是论文的核心,对于实验数据的分析,这里分了两部分,第一部分是定量分析(quantitative analysis),第二部分是定性分析(qualitative analysis),这两种分析方法经常在论文中出现。

首先是定量分析,这一部分主要是摆数据,验证论文新模型的效果,第一个表展示了不同模型的 BLEU 分数,对比的基准模型是非常常见的传统模型 Moses,表中分了两类,第一类是只包含词典词语的结果,第二类是包含 unknown 词的结果,结果来看,在更普遍情况下(含 UNK),论文提出的 RNN search-50有最好的结果。第二个实验比较了句子长度增长对模型性能的影响,就像之前分析的结果,确实在最开始,所有模型的结果是差不多的,但是当句子长度增大到20~30以及之后时,采用传统 Encoder-Decoder 模式的模型效果迅速下降,当然 RNNsearch-50 保持了分数稳定。

第二部分进行的是定性分析,这里一开始提到了一个概念:对齐(Alignment),又提到了论文中提出的方法是对(soft-)alignment 的一种很直观的解释,关于这个对齐,我的理解就是输出序列中单词与输入序列中单词的对应关系,这里的 软对齐 ,我的理解是有两层意思吧,第一层是指输出序列中一个单词可能会对应输入序列中的多个单词或者相反,第二层意思是两个序列次序不同的问题,这一点在论文的这一部分有介绍。此外,论文中这一部分给出了两个序列的权重关系图,可以说是非常直接明了了,所以有种说法是 Attention 机制实际上是对翻译过程的形象展示(翻译任务),因为之前的模型方法我们并不清楚模型内部是如何进行转化的,但是 Attention 解释了这个。

在这一部分还直接使用长句子的例子展示了不同的模型的处理结果(具体句子可以看附录),也算是针对之前的介绍的具体解释吧。

Related Work & Conclusion

这一部分,论文中提到,之前使用神经网络的方式进行机器翻译的过程,往往都是作为现有的统计翻译模型的一个组件,例如提供额外特征,或者对候选翻译重新打分等等,但是,作者们提到,完全可以只依赖神经网络方式建立完整的翻译系统。

结论部分就是对之前的各部分工作做了一个总结。

这篇关于论文笔记:Neural Machine Translation by Jointly Language Learning to Align and Translate的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/535197

相关文章

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

操作系统实训复习笔记(1)

目录 Linux vi/vim编辑器(简单) (1)vi/vim基本用法。 (2)vi/vim基础操作。 进程基础操作(简单) (1)fork()函数。 写文件系统函数(中等) ​编辑 (1)C语言读取文件。 (2)C语言写入文件。 1、write()函数。  读文件系统函数(简单) (1)read()函数。 作者本人的操作系统实训复习笔记 Linux

LVGL快速入门笔记

目录 一、基础知识 1. 基础对象(lv_obj) 2. 基础对象的大小(size) 3. 基础对象的位置(position) 3.1 直接设置方式 3.2 参照父对象对齐 3.3 获取位置 4. 基础对象的盒子模型(border-box) 5. 基础对象的样式(styles) 5.1 样式的状态和部分 5.1.1 对象可以处于以下状态States的组合: 5.1.2 对象

DDS信号的发生器(验证篇)——FPGA学习笔记8

前言:第一部分详细讲解DDS核心框图,还请读者深入阅读第一部分,以便理解DDS核心思想 三刷小梅哥视频总结! 小梅哥https://www.corecourse.com/lander 一、DDS简介         DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有低成本、低功耗、高分辨率、频率转换时间短、相位连续性好等优点,对数字信

[vivado]translate_off\on

答疑帖: 1)https://forums.xilinx.com/t5/Synthesis/Question-about-synthesis-translate-on-and-translate-off/td-p/658790

数据库原理与安全复习笔记(未完待续)

1 概念 产生与发展:人工管理阶段 → \to → 文件系统阶段 → \to → 数据库系统阶段。 数据库系统特点:数据的管理者(DBMS);数据结构化;数据共享性高,冗余度低,易于扩充;数据独立性高。DBMS 对数据的控制功能:数据的安全性保护;数据的完整性检查;并发控制;数据库恢复。 数据库技术研究领域:数据库管理系统软件的研发;数据库设计;数据库理论。数据模型要素 数据结构:描述数据库

【软考】信息系统项目管理师(高项)备考笔记——信息系统项目管理基础

信息系统项目管理基础 日常笔记 项目的特点:临时性(一次性)、独特的产品、服务或成果、逐步完善、资源约束、目的性。 临时性是指每一个项目都有确定的开始和结束日期独特性,创造独特的可交付成果,如产品、服务或成果逐步完善意味着分步、连续的积累。例如,在项目早期,项目范围的说明是粗略的,随着项目团队对目标和可交付成果的理解更完整和深入时,项目的范围也就更具体和详细。 战略管理包括以下三个过程

【软考】信息系统项目管理师(高项)备考笔记——信息化与信息系统

信息化与信息系统 最近在备考信息系统项目管理师软考证书,特记录笔记留念,也希望可以帮到有需求的人。 因为这是从notion里导出来的,格式上可能有点问题,懒的逐条修改了,还望见谅! 日常笔记 核心知识 信息的质量属性:1.精确性 2.完整性 3.可靠性 4.及时性 5.经济性 6.可验证下 7.安全性 信息的传输技术(通常指通信、网络)是信息技术的核心。另外,噪声影响的是信道