NLP论文注意到用神经网络进行序列到序列的学习

本文主要用于记录Google在2014发表的一篇代表作(引用数千篇)和一篇广泛使用的序列对序列模型论文。方便初学者快速入门和自己复习。

论文链接:works.pdf

基本目录如下:

-第一个蘑菇-摘要。

深度神经网络(DNNS)在2014之前已经被证明适用于各种复杂的学习任务,证明了其可行性和高精度。但是它有一个缺点,就是需要足够多的标记数据,所以不适合序列到序列的映射。本文的主要贡献是提出了一个端到端的神经网络模型来学习这种映射关系。作者使用多层LSTM网络将输入序列映射(编码)成具有固定纬度的向量,然后使用另一个多层LSTM网络将向量解码成输出序列。为了论证该模型的可行性,作者将其应用于英法翻译任务中,最终发现其所能达到的效果与当时的最佳成绩(可能是某个SMT,统计机器翻译模型)相差无几。最后,在分析了模型和实验结果后,作者发现了几个有趣的点。1)模型对句子的主动语态和被动语态不敏感,但对输入单词的顺序敏感。2)逆序输入句子可以提高模型效果。

-第二个蘑菇核心想法。

话不多说,只介绍本文提出的模型结构。自然语言处理中的王牌短时记忆模型(LSTM)被选为该模型的基础。主要思想是用一个LSTM(已经被证明很好的解决了长期序列依赖的问题)对输入序列进行编码,一步一个脚印,不限制输入序列的长度!),这样我们就可以得到一个固定纬度的向量表达式,然后用另一个LSTM(本质上是一个语言模型,只不过它的初始状态是对输入序列进行编码得到的向量)对向量进行解码,得到输出序列。可以说,这个Seq2Seq框架的提出,为后续序列图谱任务(如机器翻译)的质量提升打下了坚实的基础。不了解其原理的读者可以再看看论文的图解1,也已经贴在这里了。简单理解输入序列是ABC,输入序列结束符号< EOS & gt,来自< EOS >开始解码WXYZ和结束符号

在介绍模型的第二章中,作者还强调了LSTM的一些改进,概括如下:

1)他们使用了两种不同的LSTM模型,从而增加了模型参数,虽然计算量略有增加,但提高了定量模型的泛化能力。

2)实验表明,深层LSTM模型的性能优于浅层模型,这与我们一贯的认知是一致的。

3)逆序输入句子,即ABC输入的顺序是CBA,实验表征更好。论文本身坦言并没有给出完美的理论依据,但也强行解释了一波。我在这里的理解是,顺序输入和反向输入并没有改变平均距离(这里的距离是指时间步长diff),只是缩短了前几个词的距离,句末词距离变长的代价看起来微不足道,所以反向输入会得到更好的结果。

该模型的另一个细节可以提及,即在解码阶段,采用波束搜索解码方法,可以显著提高精度。其实这种方法的本质就是在解码的每个阶段保留多个候选句子,最后选择概率最大的序列。如果这种方法的预留数是1,其实是一种贪心的想法,每次解码都选择概率最大的值。本文给出的结论是,当规模为2时,该模型的性能最佳。关于这个方法的更多讨论,你可以去这个博客。

关于模型训练的更多细节,我们再仔细看看论文的第三章,这里就不介绍了。我唯一想记录的是,他们尽量保证一批的句子长度差不多,据说提高训练速度2倍。

这里不展示具体的实验结果,原文也很清楚。框架模型

第一类的结果仍然是杠杆。这里有两个有趣且有价值的观点。

1)模型对句子中的词序敏感,对其语音不敏感。下面是原文的另一张图,如下:

如你所见,约翰和玛丽的顺序颠倒后,他们并没有很好地融合,但钦佩和爱上可以融合在一起。因此,我们的模型对句子的顺序非常敏感。

2)框架模式在长句翻译中的表现出乎意料的好。以下是原文图片:

左图显示,随着句子长度的增加,我们模型的性能并没有出现明显的下降趋势(实际上还在上升),只有在超过35个单词后,才略有下降。这也说明模型框架足够胜任处理长句,可以认为在实际应用中可能不需要对长句做特殊处理。

右图展示了模型对那些生僻句子的泛化能力。可见车型下滑趋势还是很明显的,这也不难理解。毕竟,不常用的句子在数据集本身中所占的比例较小。如果有特殊的应用场景,我们一般会在场景中加入特殊的数据,进行微调,应该也能达到不错的效果。

-第三个蘑菇-结论。

至此,整篇论文的核心思想和创新点已经明确。这套seq2seq框架也为后续的序列作图任务奠定了基础。论文作者也特别惊讶于逆序输入句子效果的提升,以及模型对长句的翻译能力!

本文的简要总结是先列出论文摘要,再详细介绍模型细节,最后讨论几个创新点结束论文笔记。希望你看完这篇文章后能进一步加深对这篇论文的理解。有错请指出,多交流,共同进步~?