这篇文章是在2017年ICLR会议上由Google Brain团队Prajit Ramachandran 、Peter J. Liu、Quoc V. Le共同发表的,与上期介绍的Google 2015年发表的 Semi-supervised Sequence Learning 可谓一脉相承。本文描述了一种通用的非监督预训练方法,提升了seq2seq模型的准确性。seq2seq模型是一种根据给定变长序列,通过特定方法生成另一个变长序列的方法,感兴趣的朋友可以查阅本文后的参考资料[1][2]。作者用两个语言模型的预训练权重分别初始化了seq2seq模型的encoder 与decoder,然后再用监督数据对模型进行finetune,这种做法在机器翻译和概要提取任务上大大超过了以前的纯监督模型,证明了预训练的过程直接提高了seq2seq模型的泛化能力,再次提出了预训练的重要性和通用性。
文章指出seq2seq模型以及所有深度神经网络的一个共同弱点就是当监督数据量很小的情况下,模型非常容易过拟合。他们提出了一种方法,使用两个预训练语言模型的参数来初始化seq2seq模型的encoder网络和decoder网络。并在finetune过程中,联合训练seq2seq的目标和语言模型的任务目标来避免过拟合的发生。他们的结果是该方法在CNN和Daily Mail文章数据上的英文转德文任务和概要提取任务的结果,超过了所有当时的最强算法。
同时文中通过做对比实验确认了,对机器翻译来说,模型对泛化能力的主要提升就来自于预训练的参数特征,而对摘要提取,encoder的预训练为模型效果的巨大提升和泛化能力的提高做出了贡献。图2为预训练seq2seq模型的结构,红色为encoder部分,蓝色为decoder部分,所有方框内参数均为语言模型预训练的,而方框外的参数为随机初始化。在机器翻译任务中,作者对两种语言空间都收集了大量无标签数据,各自独立地训练了语言模型,作为encoder,decoder的初始化参数。为了使其后训练更加高效,decoder的softmax层也由目标侧的语言模型softmax参数初始化。

当seq2seq模型按照上述方式被初始化以后,接着应该在监督数据上进行fine-tune。但作者引用了2013年Goodfellow的文章[3],认为直接finetune会引起所谓的catastrophic forgetting(灾难性遗忘),即是模型在之前语言模型任务上的表现会急速下降,导致模型泛化能力降低,特别如果是在较小数据集上finetune的。所以他们通过将seq2seq模型loss和语言模型loss的平均,来达成联合训练,并显著提升了模型的效果。
作者提到除了为效果提供了最大贡献的预训练方法和seq2seq和语言模型的联合优化,另外还有两个贡献小但稳定的优化点,一个是residual connections(残差连接), 另一个是Multi-layer attention(多层注意力机制)。使用残差连接原因是高层的LSTM参数是随机初始化的,可能会导致随机的梯度对预训练好的参数造成影响。所以,同时让第一层的LSTM也有梯度可以与decoder的Softmax之间流转,提高了模型稳定性和效果。多层注意力机制使模型对两层LSTM的节点都有关注,从而提升了模型效果。最后,文章在机器翻译和概要提取任务上进行了不少模型效果的实验比较,证明了方法可以打败当时最好的模型。
编者认为这篇文章最大的贡献是证明了在大量无监督数据上预训练语言模型,并在少量有监督数据上finetune这个思路对seq2seq模型同样具有效性,并提出了seq2seq目标和语言模型目标联合训练以提高泛化能力的想法。文章的思路借鉴了s上期介绍的Semi-supervised Sequence Learning对预训练语言模型的应用,并进一步将其发展,展现了该方法在自然语言处理中的通用性。