机器翻译与seq2seq
一、早期的机器翻译
机器翻译(MT)是将句子x从一种语言(源语言)翻译成另一种语言(目标语言)的句子y的任务。
机器翻译发展到现在经历了多个阶段。
1、Early Machine Translation
机器翻译的研究最早开展在1950s,这个时期的机器翻译系统主要是基于规则的,其核心思想是使用双语词典将源语言的单词映射到目标语言的单词,如使用一个双语词典将俄语单词映射到英语单词。
2、Statistical Machine Translation(SMT)
机器翻译的第二个发展时期实在1990s-2010s,这个时期的机器翻译系统主要是基于统计信息的,其核心思想是从数据中学习一个概率模型。
假设我们需要将法语翻译为英语。那么我们要做的事情就是根据给定的法语句子找出与其最匹配的英语句子。
使用贝叶斯规则将其分解为两个要分开学习的部分(如下图所示):
那么我们如何来学习到模型P(x|y)呢?
首先,我们需要大量的并行语料。然后我们将问题进一步分解为求解P(x,a|y),a代表的是词水平的对齐步骤。对齐是翻译句子对中特定单词之间的对应关系。
机器翻译中的对齐需要注意:
1.有些词是找不到其对应的词的
2.对齐可能是一对多的
3.有些词在另一个语言中可能没有对等的单词,但是可能找到与其对等的由多个词组成的短语
4.对齐也可能是多对多的
接下来我们要计算的是:
那我们如何来计算argmax呢,首先,我们很容易想到的就是枚举的方法,枚举每一个可能的y并计算概率,但是这种方法计算量太大了。一种更合适的方法就是使用启发式搜索算法搜索最佳翻译,将概率过低的排除,这个过程被称为解码。
SMT是一个巨大的研究领域,这个系统非常复杂
.在这里数百个重要细节没有被提及
.系统有许多单独设计的子组件
·需要大量的特征工程
·需要编译和维护额外的资源
·需要大量人力维护
二、神经网络与Seq2Seq
1、Neural Machine Translation(NMT)
神经机器翻译(NMT)是一种利用单一神经网络进行机器翻译的方法。这其中使用的神经网络结构又被称为Seq2Seq模型(一般由两个RNN组成)。
其网络结构图如下所示:
需要注意的是,Seq2Seq模型不仅仅是应用与机器翻译的,它还可以应用于多个领域,包括文本摘要、对话系统、文本解析、代码生成等。
Seq2Seq模型是条件语言模型的一个示例。之所以说它是语言模型,是因为解码器正在预测目标句子y的下一个单词,之所以是有条件的,是因为它的预测也取决于源句x。
NMT是直接计算P(x|y)的,其公式如下:
我们在训练NMT的时候。也需要大量的语料。训练示意图如下:
Seq2seq作为单个系统是进行了优化的,其反向传播过程是“端到端”的。
在Decoding部分,方法有很多:
1.Greedy decoding,生成解码的目标句子时,在解码器的每一步上取argmax,但贪心解码无法撤销决策,容易陷入局部最优解。该方法在在我们模型产生<END>令牌的时候停止。
2.Exhaustive search decoding,其核心思想是找到一个(长度T)翻译y,最大化其概率:
这样的话,我们需要尝试去计算所有可能的序列y,这意味着在解码器的每个步骤t,需要找出Vt可能的部分翻译,其中V是词汇大小。这种O(VT)复杂度太高了!
3.Beam search decoding,其核心思想是在解码器的每一步,找出k个最可能的部分翻译。我们假设y1,...,yt的得分是其对数概率:
分数都是负数,分数越高越好。我们寻找高分假设,并且找出每一步的前k个高分。但是这个公式有个缺点,即句子越长分数会越低,因此就有了下面这个使用长度归一化的句子:
但是,Beam search不能保证找到全局最优解,但是它的效率要比Exhaustive search decoding高的多。Beam Size一般取5-10。在Beam search中,当我们到达时间步T(其中T是我们自定义的阈值),或者我们找到了n个值(n是我们自己设定的阈值)
Beam search过程如下:
与SMT相比NMT有如下优点:
1.性能更好,更流畅、能更好的利用上下文、能充分利用短语相似性。
2.使用端到端的单个网络,无需单独优化子组件
3.需要的人力更少,不需要进行特征工程、可对所有语言对进行处理
但是它也有些不足:
1.NMT的解释性较差,难以调试。
2.NMT难以控制,例如,无法轻松指定翻译规则或指南,存在安全问题!
2、MT的评价指标
BLEU (Bilingual Evaluation Understudy),BLEU将机器编写的翻译与一个或多个人工翻译进行比较,并根据以下因素计算相似度分数:1、n-gram精度(通常为1,2,3和4-grams),2、对比较短的系统翻译添加惩罚项。
但是BLEU也有些不足,例如,翻译句子的方法很多因此,良好的翻译可以获得较差的BLEU分数,因为它与人类翻译的n-gram重叠率较低?
3、MT当前面临的问题
就目前来看,MT还面临这许多问题:
1.OOV问题,即未登录词的问题。
2.训练集和测试集之间的域不匹配
3.需不断维护较长文本的上下文
4.语言对的资源比较少
5.无法理解常识
6.训练出的模型存在偏见
7.无法解释系统做的一些奇怪的事情
三、Attention
在机器翻译中,对源语言进行encoding时,要捕获有关源句的所有信息。但传统的Seq2Seq模型无法捕获到全部的信息,特别是句子十分长的时候,因此会产生信息瓶颈。而注意力提供了瓶颈问题的解决方案。其核心思想是:在解码器的每个步骤中,使用与编码器的直接连接的方法来聚焦于源序列的特定部分。
下面是其结构示意图:
其公式部分如下:
Attention的优点如下:
1.允许解码器专注于源语言中的某些重要的部分
2.注意力机制解决了瓶颈问题
3.注意力机制允许解码器直接查看源语言; 绕过瓶颈
4.注意力机制有助于消除梯度问题
5.为远距离状态提供了捷径(不太理解这句话)
6.注意力机制具有可解释性
7.通过可视化操作,我们可以看到解码器所关注的内容
8.网络本身可以自动学习到软对齐
我们已经看到注意力机制是改进机器翻译的序列到序列模型的好方法。但是:您可以在许多架构和任务中中使用注意力机制,即在非Seq2Seq结构和非MT任务中使用。
关于注意力机制的另一种解释是:给定一组矢量值和矢量查询,根据查询来计算值的加权和的方法。
加权和是值中包含的信息的选择性摘要,其中查询确定要关注的值。注意力是获取任意一组表示(值)的固定大小表示的一种方法,取决于某些其他表示(查询)。
下面是几种注意力机制的变体:
假设我们有值和查询。
对于每种Attention,我们都需要计算如下值:
Attention变体: