一、机器翻译发展历程
基于规则的-->基于实例的-->基于统计方法的-->基于神经网络的
传统统计机器翻译把词序列看作离散空间里的由多个特征函数描述的点,类似
于 n-gram 语言模型,这类模型对数据稀疏问题非常敏感。神经机器翻译把文字序列表示为实数向量,一方面避免了特征工程繁重的工作,另一方面使得系统可以对文字序列的“表示”进行学习。
神经网络模型在机器翻译上的实践发展:
CNN/RNN:存在梯度消失问题
LSTM:seq2seq学习的方法,缓解了梯度消失/爆炸问题,通过遗忘门的设计让网络选择性的记忆信息,缓解了序列中长距离依赖的问题。但句子越长损失的信息越多,模型无法对输入和输出序列的对齐进行建模,不能有效保证翻译质量。
注意力机制:可以有效地处理长句子的翻译,而且注意力的中间结果具有一定的可解释性。但模型计算量很大。
GNMT系统:google发布的基于多层RNN的方法。
Transformer:完全摒弃了RNN和CNN,仅通过多头注意力机制和前馈神经网络的框架。解决了长距离依赖的问题,训练速度快,翻译效果更好。
二、基于RNN的模型
2.1 编码器-解码器
2.1.1 框架结构
编码器将输入的文字序列通过某种转换变为一种新的“表示”形式。解码器把这种“表示”重新转换为输出的文字序列。其中的核心问题是表示学习。
当今主流的神经机器翻译系统中,编码器由词嵌入层和中间网络层组成。当输入一串单词序列时,词嵌入层会将每个单词映射到多维实数表示空间,这个过程也被称为词嵌入。
之后中间层会对词嵌入向量进行更深层的抽象,得到输入单词序列的中间表示。中间层的实现方式有很多,比如:RNN、CNN、自注意力机制等都是模型常用的结构。解码器的结构基本上和编码器是一致的,只比编码器多了输出层,或者多一个编码-解码注意力子层。
编码器-解码器框架已经成为了神经机器翻译系统的标准架构。
2.2 基于RNN的翻译建模
序列表示问题:如何描述文字序列。
对序列中某个位置的答案进行预测时需要记忆当前时刻之前的序列信息,这就是RNN网络诞生的背景。RNN处理序列问题的实例: 循环单元的输入由上一时刻的输出和当前时刻的输入组成。
在RNN神经机器翻译里,把源语言句子、目标语言句子分别看作两个序列,使用两个RNN分别对其进行建模。一个就是编码器,另一个就是解码器。
三个关键问题:
(1)词嵌入,即词的分布式表示问题。RNN网络的输入。
(2)句子的表示学习,即在词嵌入的基础上获取整个序列的表示。RNN网络的最后一层输出。
(3)译文单词生成,即每个目标语言单词的概率。 softmax输出层来获得所有单词的分布。
2.3 LSTM模型 (长短时记忆模型)
LSTM 模型是 RNN 模型的一种改进。相比 RNN 仅传递前一时刻的状态,LSTM 会同时传递两部分信息:状态信息和记忆信息 。
LSTM的结构主要分为三部分: 遗忘、集已更新、输出。
见之前博文:理解LSTM模型-CSDN博客
2.4 双向RNN模型
双向循环网络,同时考虑前文和后文的信息。编码器可以看作由两个RNN构成,第一个RNN从句子的右边进行处理,第二个RNN从句子左边开始处理,最终将正反向得到的结果融合后传递解码器。