这篇论文算是 Seq2Seq(Sequenc to Sequence) 的经典论文了。文中提出了一种新的RNN模型结构用于机器翻译等工作,此外,作为LSTM单元的变种和简化版本 GRU 单元也是在文章中首次提出的。很值得一读。
摘要部分就是老规矩了,简要介绍文中所建立的新模型。这种名为 RNN Encoder-Decoder 的模型的通过最大化给定序列的条件下目标序列的概率,即最大化这个条件概率,来同时训练编码器和解码器。不过文中也提到,将这个模型作为一种新的特征来与对数线性模型共同使用,具体来说就是计算短语对出现的概率,然后应用到现有的对数线性机器翻译模型中,可以很好的提高模型的翻译性能。这里的对数线性模型之后会介绍到。
这一部分总体上介绍了深度网络在自然语言处理方向的一些应用,以及稍微详细的介绍了 RNN Encoder-Decoder在机器翻译系统中的使用,这里要注意一点,也就是文中提到了对比其他的模型,本文模型可以学习一个短语的连续表示空间,更好地捕捉到短语的语言规律(linguistic regularity)
这一部分重点介绍了 模型的结构以及计算方式,更具体的计算过程在附录里(即使是很详细的附录我也没有很懂,感觉自己好菜…)。
第一小节中介绍了经典的 RNN 结构,对于每一个时刻,模型单元都会输出一个概率分布,然后对于整个序列来说,将这些概率值相乘,也就是最后的一个序列的总概率值了。
第二小节才是真正的重头戏,详细介绍 RNN Encoder-Deocder模型,其中编码器和解码器都是一层RNN网络,当然,这是改良过的,也就是GRU单元,因此整体可以看成是两层RNN结构级联而成,对于输入的一个序列,首先通过编码器处理,输出一个中间的向量C,然后将C作为解码器的输入,然后将这个C再转化成符号序列,这个思想还是很好理解的,这个部分结合论文中的 Figure 1 更加清楚。要注意的是,这里的输入序列和输出序列的长度不一定是相等的,这与其他的一些模型是不一样的。其实从整体来看,我们最后优化的目标就是让 目标序列在输入序列的条件下 取最大,然后文中还提到了,这个模型的计算过程是可微分的,所以我们可以使用梯度的方式来求解模型的参数。这一小节最后提到了如何使用 RNN Encoder-Decoder 的问题,其实不难看出这两中用法:一种是根据已知的序列生成一个新的序列,第二个是对给定的输入-输出对进行评分,这个评分当然是基于模型计算的概率,关于第二点,我的理解是更像是使用这个模型对数据进行预先处理,然后将这些评分作为其他模型的一些依据,就像是在后面实验部分,就是使用这个模型对短语表中的信息进行了处理,然后将这些信息作为另外的一个MST系统进行翻译标准。
第三小节介绍了模型中使用的隐藏单元,也就是我们所熟知的 GRU 单元,关于这个单元,网络上的介绍也有很多。这个单元是对 LSTM 的一种优化,LSTM 中使用了三个门:输入门,遗忘门,输出门来完成 long-term信息和short term 信息的处理,GRU 则是使用了 Reset gate 和 Update gate,这一部分在附录中也有介绍。(虽然大家都说 GRU 是LSTM 的简化版本,但是我咋觉得这种单元理解上比LSTM费劲呢。。。不过参数数量上来说,确实是减少了很多,如果需要计算速度快一点的话,可以使用 GRU 来替代 LSTM 单元)
整体来说,这一部分介绍了机器翻译 (MST)的一些工作,主要是介绍了很多神经网络在MST中的使用,这样往往是通过最大化条件概率 P(目标序列|条件序列))的形式来翻译一个句子,实际使用中,经常使用一些额外的特征和权重来构建一个对数线性模型,(这个地方不是很理解)
在第一小节,介绍了可以使用 RNN Encoder-Decoder 模型对短语对进行评分,这里提到使用这个模型对现有的短语表进行重新打分,从而将这些评分作为优化算法的输入。
第二小节介绍了一些基于神经网络的MST工作,简答来说就是拉出来“鞭尸”,不断对之前的模型的局限进行突破改进就能得到效果更好的模型,例如文中提到之前有的模型没有考虑到序列之间的顺序,显然这个一个改进点,或者是使用更为适合的网络结构(从卷积结构改进为循环网路结构)等。
聊完模型原理,接下来就是使用实验数据来证明模型的优越性了。这篇文章中,没有将 RNN Encoder-Decoder 作为一种单独的模型,而是将这个作为一个基准模型(Baseline System)的一部分。
第一小节介绍了使用的数据和基准模型,这里使用的数据都是全部数据,而是关注有给定任务最为相关的数据部分,也就是一个 subset, 至于基准模型,使用的 Mose 实现的模型,这个 Mose查了一下是一个机器翻译系统。除此之外,这一部分还详细的列出了训练时候使用的各项参数,例如参数是如何初始化的等等,这里为了进行对比,还使用了一个另一个神经网络模型 ,也就是文中提到的 CSLM,虽说是进行对比,在后面中发现将 CSLM 与本文模型进行结合,回有更好的结果。
第二部分是定量分析,首先文中设计了四种组合方式,也就是 仅仅使用基准模型 使用基准模型+RNN 然后再继续添加 CSLM 等等,这又是一般规律了,最后一种使用了最多的方法的模型取得了最好的效果。这一部分还提到了关于未知词的问题,文章前面提到了,在使用的时候,针对具体的数据集,选择了 15000个单词作为词汇表,这覆盖整个数据集的 93% ,而不是使用所有的单词,其实这也是常用的方式了,因为一些词语的出现频率极低,计算他们意义不大,在词汇表中往往把这些单词设置为 [UNK] ,在实验部分,又考虑了使用未知词的数量作为模型的另一个特征的,但是这没有起到更好的效果。
第三部分是定性分析,这一部分目的在于找到模型的效果提升来源,也就是找到是什么原因使得 RNN Encoder-Decoder 的效果得以提升。这里提到了一个原因就是之前的统计模型往往是只考虑到了频率的方式,这样,对于频率较高的短语就会有更好的效果相比于频率低的数据,但是 RNN Encoder-Decoder 可以同时兼顾 语义规律,这就是可以做的更好的原因。这里有一些数据,在论文中的表格中也列出了一些数据信息,可以发现,莫i选哪个回偏好较短的输出,另外,通过实验,还发现,即使是不使用现有的短语表而仅仅使用 RNN Encoder-Decoder,也能取得很好的效果,未来工作的一个方向就是考虑是否可以使用 RNN Encoder-Deocder 的结果直接取代部分或者全部的短语表。
第四部分则是在实验过程中发现的 RNN Encoder-Deocder 的另一个用处了,也就是用来获取短语的表示,这就像是训练词向量一样。得到一个短语的 embedding。文中表示,这个模型可以同时获取短语的语义结构和句法结构信息。
这里对全文的工作做了一个总结,主要来说,就是建立了一个 RNN Ecoder-Deocder 模型,这个模型主要有两种使用用途,第一是建立序列到序列映射关系(Sequence to Sequence),第二点可以用来对短语对进行评分。此外,在这个过程中,又提出了一种新的RNN单元-- GRU, 在实验中,发现模型可以很好的捕捉短语的语义规则。最后,作者表示,RNN Encoder-Decoder 并不仅仅局限于文中的这些应用,它还可以有更多的应用,例如语音转录等等。
这是在理解这个模型过程中参考的一些资料:
Sequence to Seque https://zhuanlan.zhihu.com/p/36030490
使用机器学习翻译语言:神经网络是Seq2Seq为何效果非凡 https://www.jiqizhixin.com/articles/2016-08-25-3
对于这篇文章,还有很多不太清楚的地方,继续学习~