目录
- 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)是一个将源语言句子翻译成目标语言句子的过程。机器翻译的相关研究最开始于19世纪50年代。
2 进展
2.1 规则匹配模型
在19世纪50年代,机器翻译受到冷战时期推动,翻译系统主要是将俄语翻译成英语,通过规则匹配,从双语对应关系字典库中将源语言翻译成目标语言。
2.2 统计模型
从1990年到2010年,主流方法是统计模型,其核心思想就是从数据中学习一种概率模型,例如:法语翻译成英语任务中,给定一个法语句子,我们希望找出最匹配的英语句子,优化函数如下:
使用贝叶斯规则,等同如下:
概率由翻译模型根据翻译统计数据计算出来,而是语言模型,根据语言数据语料可以统计得出。
统计模型需要大量的语料,而且需要很多人工去构建特征,一个好的统计模型将是十分庞大和复杂。
2.3 seq2seq模型
2014年,神经机器翻译模型 (NMT)的诞生,奠定了新的里程碑,模型结构如下所示:
seq2seq模型,其中编码由一个RNN组成,解码由另外一个RNN构成。seq2seq模型是一种有条件约束的语言模型,因为在解码器是从目标句子中预测下一个单词,而有条件约束是因为解码的过程中会依据源语言句子。如下图所示:
在解码decode截断,使用贪心策略,每次用当前输出最大的概率预测词作为下一个预测结果。但是解码过程中只要有一步出错,会导致错误累积越多,越后的解码离正确的越远,这也就是beam search搜索出现的原因,在beam search中,解码截断的每个step提供会保留多个选择,最终选择最好的一个序列。
2.3.1 beam search
接下来,我们看下在解码过程中beam search的运作原理。首先,在翻译模型里,我们希望找到一个最大的,其中的计算形式如下:
如果我们穷举所有的,则计算代价将会非常高,复杂度将为,其中是词典大小,是目标语言长度。而beam search在解码的每一步只需要保留个最大概率的翻译序列部分。是beam size,虽然没法保证全局的最优,但是却十分高效,在实际场景中,效果也很好。
接下来我们看一个解码的例子,以beam size=2为例,如下图所示:
每个step选取top 2个概率最大的序列,依次往下解码,直到结束,其中标有红色的字是每次解码过程中选取的最大的概率最大的词,在最后的解码中,选取最终的概率最大的序列,如下图所示:
绿色字体的序列: 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的一个输入,,其中表示解码阶段上一个步骤预测的词对应的向量,是当前计算出来的context向量,是上一时刻hidden状态向量
- 在decoder阶段分类层的一个输入,预测每个step的下一个词label,,和可以concat到一起
如下图,只将context向量用在decoder每个step的分类层的一个输入上:
上图的计算方式流程步骤如下:
- step 1: encoder阶段得到源句子的每个step的hidden向量
- step2: decoder阶段,在step t时刻,得到hidden向量
- step3: 计算当前step t的attention分值
- step4: 用softmax归一化,得到attention分值的概率分布分数(相加之和为1)
- step 5: 计算attention向量 (context向量)
- step 6: 将attention向量与解码阶段的hidden向量拼接到一起,进入分类层
下图是第二个step计算过程:
以此类推,直到解码结束。
2.3.2.1 attention作用
- atention机制能够让decoder关注与当前解码相关的encoder源句子核心部分,大大提高了神经机器翻译模型效果
- 对梯度消失有一定的帮助,因为attention机制提供了源句子信息与解码过程的直接连接,缩短了路径距离
- attention机制提供了一些可解释性,通过attention分值,可以直观看到每一步的解码过程,decoder更关注encoder源句子的那部分
- attention机制在文章摘要,对话,code生成等多个应用都取得了效果