题图:quino-al-137872-unsplash
这是第 200 篇原创
建议阅读时间:5~20分钟
1 统计翻译模型(SMT)
斯坦福大学的 cs224 自然语言处理课程笔记,接着介绍 NLP 与deep learning 结合出现的两个非常重要模型: seq2seq 和 seq2seq with attention. 通过此篇推文先初步形成对它们的一个感性认识,知道这两个模型是怎么回事,可能解决什么问题。之后才是理解他们的模型实现代码,最后应用这些模型实战。
机器翻译(machine translation, 简写为 MT),是指用源语言(source language) 组成的句子 x 翻译为用目标语言(target language) 构成的句子 y 的一项任务。
语言翻译任务最走可以追溯到1950年,翻译系统仅支持俄语和英语间的翻译,通过建立map字典实现。1990到2010年,翻译模型是以统计翻译模型为主(statistical machine translation,简称为 SMT),核心思想是从数据中提炼一个概率模型。基于统计的机器翻译可能过时,不展开论述。值得注意的,google已经从SMT切换到NMT,也就是基于seq2seq的机器翻译模型。
不管哪种模型,翻译任务都需要知道一个概念:对齐(alignment),它指对于单词级别,源语言句子 x 中的单词在目标语言的句子 y 中的对应。这个对齐关系是复杂的,不仅仅存在简单的一对一关系,还可能有一对多,多对一,多对多。
2 神经网络翻译模型(NMT)
2014年出现的基于神经网络的机器翻译模型(Neural Machine Translation,简称为 NMT),它是 seq2seq 模型,它由两个RNN网络构成。一个称为编码器(encoder),对用A语言输入的句子 x 编码后,作为另一个解码器(decoder)隐含层的初始输入,如下图所示,解码成B语言表达的目标句子 y ,作为输出。这种模型是带条件的语言模型(conditioned language model)的例子,被称为 conditioned 是因为对句子 x 编码后作为第二个RNN的隐含层输入。
对此端对端的网络训练手段依然是反向传播。注意到上图中输出目标句子时,是通过 argmax 的贪心策略,输出每个时步中最可能的单词。更好地一个方法是通过束搜索( beam search )策略搜素假设空间,并找到最好的。关于 beam search 可以参考课程中的实例。
以上seq2seq对源句子的编码,融合并等同地看待了所有的单词,会出现 RNN的信息瓶颈。后来展开了很多研究,其中最明显的提升是带有注意力的seq2seq模型的出现。它的核心思想:在解码的每一个时步,专注于输入序列的某一个(某几个)单词。如下图所示,在解码时,重点对第一个单词做关注,并把它和上一个RNN的输出结合预测 y1
最后一个时步的输出如下图所示,中间过程可详细参考课程。
毫无疑问,注意力模型更加优秀,极大地提升了NMT的性能,同时解决了语言瓶颈,梯度消失问题,并且可以得到自动学得单词间的对齐关系。