目录

  • 1 定义
  • 2 进展
  • 2.1 规则匹配模型
  • 2.2 统计模型
  • 2.3 seq2seq模型
  • 2.3.1 beam search
  • 2.3.2 BLEU (Bilingual Evaluation Understudy)
  • 2.3.2 attention
  • 2.3.2.1 attention作用
  • 3 参考


1 定义

机器翻译 (Machine Translation)是一个将源语言句子机器翻译 transformer数据集预处理 机器翻译 模型_统计模型翻译成目标语言句子机器翻译 transformer数据集预处理 机器翻译 模型_机器翻译_02的过程。机器翻译的相关研究最开始于19世纪50年代。

2 进展

2.1 规则匹配模型

在19世纪50年代,机器翻译受到冷战时期推动,翻译系统主要是将俄语翻译成英语,通过规则匹配,从双语对应关系字典库中将源语言翻译成目标语言。

2.2 统计模型

从1990年到2010年,主流方法是统计模型,其核心思想就是从数据中学习一种概率模型,例如:法语翻译成英语任务中,给定一个法语机器翻译 transformer数据集预处理 机器翻译 模型_统计模型句子,我们希望找出最匹配的英语句子机器翻译 transformer数据集预处理 机器翻译 模型_机器翻译_02,优化函数如下:
机器翻译 transformer数据集预处理 机器翻译 模型_机器翻译_05
使用贝叶斯规则,等同如下:
机器翻译 transformer数据集预处理 机器翻译 模型_ci_06
机器翻译 transformer数据集预处理 机器翻译 模型_机器翻译_07概率由翻译模型根据翻译统计数据计算出来,而机器翻译 transformer数据集预处理 机器翻译 模型_ci_08是语言模型,根据语言数据语料可以统计得出。
统计模型需要大量的语料,而且需要很多人工去构建特征,一个好的统计模型将是十分庞大和复杂。

2.3 seq2seq模型

2014年,神经机器翻译模型 (NMT)的诞生,奠定了新的里程碑,模型结构如下所示:

机器翻译 transformer数据集预处理 机器翻译 模型_机器翻译_09

seq2seq模型,其中编码由一个RNN组成,解码由另外一个RNN构成。seq2seq模型是一种有条件约束的语言模型,因为在解码器是从目标句子机器翻译 transformer数据集预处理 机器翻译 模型_机器翻译_02中预测下一个单词,而有条件约束是因为解码的过程中会依据源语言句子机器翻译 transformer数据集预处理 机器翻译 模型_统计模型。如下图所示:

机器翻译 transformer数据集预处理 机器翻译 模型_ci_12


在解码decode截断,使用贪心策略,每次用当前输出最大的概率预测词作为下一个预测结果。但是解码过程中只要有一步出错,会导致错误累积越多,越后的解码离正确的越远,这也就是beam search搜索出现的原因,在beam search中,解码截断的每个step提供会保留多个选择,最终选择最好的一个序列。

2.3.1 beam search

接下来,我们看下在解码过程中beam search的运作原理。首先,在翻译模型里,我们希望找到一个最大的机器翻译 transformer数据集预处理 机器翻译 模型_机器翻译_13,其中机器翻译 transformer数据集预处理 机器翻译 模型_机器翻译_13的计算形式如下:

机器翻译 transformer数据集预处理 机器翻译 模型_ci_15

如果我们穷举所有的机器翻译 transformer数据集预处理 机器翻译 模型_机器翻译_02,则计算代价将会非常高,复杂度将为机器翻译 transformer数据集预处理 机器翻译 模型_ci_17,其中机器翻译 transformer数据集预处理 机器翻译 模型_机器翻译_18是词典大小,机器翻译 transformer数据集预处理 机器翻译 模型_机器翻译_19是目标语言长度。而beam search在解码的每一步只需要保留机器翻译 transformer数据集预处理 机器翻译 模型_统计模型_20个最大概率的翻译序列部分。机器翻译 transformer数据集预处理 机器翻译 模型_统计模型_20是beam size,虽然没法保证全局的最优,但是却十分高效,在实际场景中,效果也很好。

接下来我们看一个解码的例子,以beam size=2为例,如下图所示:

机器翻译 transformer数据集预处理 机器翻译 模型_统计模型_22


每个step选取top 2个概率最大的序列,依次往下解码,直到结束,其中标有红色的字是每次解码过程中选取的最大的概率最大的词,在最后的解码中,选取最终的概率最大的序列,如下图所示:

机器翻译 transformer数据集预处理 机器翻译 模型_机器翻译_23


绿色字体的序列: start the poor don’t have any money为解码序列。

2.3.2 BLEU (Bilingual Evaluation Understudy)

在机器翻译中,通常用BLEU指标来评估机器翻译的效果,BLEU主要是通过对比机器翻译的结果和人类翻译的结果来计算分值,主要基于如下两点:

  • n-gram的精确度(通常用3-grams或者4-grams)
  • 翻译太短会受到惩罚
    BLEU是有用的,但是不够完美,主要存在的问题是,在翻译领域,翻译一个句子通常会有很多种方法,一个好的翻译有可能会得到一个很差的BLEU分值,因为和人类的翻译在n-gram上有较少的重叠。

2.3.2 attention

attention的核心思想是在decoder解码的每一个step,关注源目标句子最相关的部分,这部分叫做context向量,在解码的每一个步骤,context向量都是动态计算出来的,主要是通过decoder阶段上一个时刻step (或者当前step) RNN的hidden向量与encoder的所有step的hidden 向量计算attention权重,然后得到加权后的context向量,具体可以参考博文 seq2seq model: beam search和attention机制理解,context向量可以作用如下两块:

  • decoder阶段RNN的一个输入机器翻译 transformer数据集预处理 机器翻译 模型_机器翻译_24,其中机器翻译 transformer数据集预处理 机器翻译 模型_ci_25表示解码阶段上一个步骤预测的词对应的向量,机器翻译 transformer数据集预处理 机器翻译 模型_统计模型_26是当前计算出来的context向量,机器翻译 transformer数据集预处理 机器翻译 模型_ci_27是上一时刻hidden状态向量
  • 在decoder阶段分类层的一个输入,预测每个step的下一个词label,机器翻译 transformer数据集预处理 机器翻译 模型_统计模型_28机器翻译 transformer数据集预处理 机器翻译 模型_统计模型_29机器翻译 transformer数据集预处理 机器翻译 模型_统计模型_26可以concat到一起

如下图,只将context向量用在decoder每个step的分类层的一个输入上:

机器翻译 transformer数据集预处理 机器翻译 模型_ci_31


上图的计算方式流程步骤如下:

  • step 1: encoder阶段得到源句子的每个step的hidden向量
    机器翻译 transformer数据集预处理 机器翻译 模型_统计模型_32
  • step2: decoder阶段,在step t时刻,得到hidden向量 机器翻译 transformer数据集预处理 机器翻译 模型_ci_33
  • step3: 计算当前step t的attention分值
    机器翻译 transformer数据集预处理 机器翻译 模型_机器翻译_34
  • step4: 用softmax归一化,得到attention分值的概率分布分数(相加之和为1)
    机器翻译 transformer数据集预处理 机器翻译 模型_ci_35
  • step 5: 计算attention向量 (context向量)
    机器翻译 transformer数据集预处理 机器翻译 模型_统计模型_36
  • step 6: 将attention向量机器翻译 transformer数据集预处理 机器翻译 模型_机器翻译_37与解码阶段的hidden向量机器翻译 transformer数据集预处理 机器翻译 模型_统计模型_38拼接到一起,进入分类层
    机器翻译 transformer数据集预处理 机器翻译 模型_ci_39

下图是第二个step计算过程:

机器翻译 transformer数据集预处理 机器翻译 模型_机器翻译_40


以此类推,直到解码结束。

2.3.2.1 attention作用
  • atention机制能够让decoder关注与当前解码相关的encoder源句子核心部分,大大提高了神经机器翻译模型效果
  • 对梯度消失有一定的帮助,因为attention机制提供了源句子信息与解码过程的直接连接,缩短了路径距离
  • attention机制提供了一些可解释性,通过attention分值,可以直观看到每一步的解码过程,decoder更关注encoder源句子的那部分
  • attention机制在文章摘要,对话,code生成等多个应用都取得了效果