神经机器翻译
构造一个大型网络,以一种端到端的方式对这个网络进行训练和优化
端到端指的是(编码器-解码器结构)还是源语言-目标语言?
Encoder:将输入序列压缩成一个语义向量c
Decoder:根据语义向量c生成一个指定的序列
两种模式:
(1)将语义向量c作为decoder的初始状态
(2)将语义向量c当做decoder每一步的输入
神经机器翻译 的优势:
(1)用端到端的形式进行训练,可以从一个单一的损失函数同时训练模型的所有参数
(2)分布式表示,允许在相似的词和短语之间建立统计关系,并借此获得更好的预测。
(3)更好的利用上下文信息(原因:分布式表示能够共享统计关系,传统的机器翻译系统使用的是词的one-hot表示,由于数据的稀疏性,不能构造超过5-gram的模型)。
(4)生成更流畅的文本
注意力机制
思想:
传统的机器翻译模型在长句上的表现不好,与其使用编码器的最后一个隐层状态Y来生成目标语句,不如直接编码过程中所有的隐层编码向量,即源对应的所有编码状态都可以用来进行翻译工作了,因此我们在翻译任何词的时候,需要知道使用哪个编码器状态,注意力机制告诉我们源的哪一部分是用于下一步的翻译的,也就是建立了源和翻译输出的一种隐式的对应关系,所有隐式状态被保存在内存中。
实现:
在开始生成后,想要生成下一个词时,使用隐层状态去决定访问之前产生的哪一个隐层状态(存在内存中 ),由于此时还没有生成当前的隐层状态,因此选用前一个隐层状态作为注意力机制的基准,结合前一个隐层状态和当前隐层状态的一个元素给内存中中的每个状态一个分数。再根据注意力机制给出的权值计算上下文向量。
注意力函数->得到分数
基本方法:使用解码器隐层状态和编码器隐层状态的内积来实现,相当于找相似的词(即相同语义的词)并基于此生成分数。
不同的论文研究中score函数有所不同。
目前在注意力机制中的发展:
(1)使用两次注意力机制(两个方向)。
(2)fertility?(还没看懂:论文:More substantive models of attention using:position+Markov+fertility)