笔记:读Sequence to Sequence Learning with Neural Networks

读Sequence to Sequence Learning with Neural Networks

作者:Sutskever.H et al.

目录

  • Introduction

  • Model

  • Experiment

  • Related Paper

  • Conclusion

1 Introduction

本文作者基于Deep Neural Networks(DNNs),具体基于LSTM(适合处理序列数据),使用一种sequence to sequence方法--即输入一个序列经过编码器如LSTM等结构将其映射为一个固定维度的向量,之后另一个LSTM再根据vector将其解码为目标序列。这类问题很常见如机器翻译、序列标注任务等,因此本文作者提出sequence to sequence方法解决DNNs不能将句子映射成句子的问题,具体实验针对的是机器翻译任务。

整个结构大致流程如下图Figure 1所示。

笔记:读Sequence to Sequence Learning with Neural Networks

其中增加的特殊的句子结尾标志,由于序列长度不一定相同,用于标识序列结束。

2 Model

对序列进行处理RNN是一个不错的选择,给定一个输入序列\((x_1,...,x_T)\),那么RNN迭代的计算其对应的输出序列即\((y_1,...,y_T)\),具体迭代计算方式大致如下图所示。

笔记:读Sequence to Sequence Learning with Neural Networks

其中,\(h_t\)为hidden state,即当前时刻t的隐状态为上一时刻\(h_{t-1}\)与当时间步的输入\(x_t\),经过线性非线性变换即RNN(LSTM)得到当前的隐状态或者LSTM中当前时刻节点的输出\(h_t\),再利用\((h_1,...,h_t)\)序列,简单处理就使用最后一次的输出,即\(h_t\)作为与解码器之间的联系,将其作为解码部分的输入,进行解码即得到\(y_t\)。

本文使用的是LSTM,其最终目标就是估算条件概率\(p(y_1,...y_{T_y}|x_1,...,x_{T_x})\),其中X,Y分别为输入输出序列,且长度不一定相同,具体概率得分公式如下。

笔记:读Sequence to Sequence Learning with Neural Networks

其中,v即之前提到的LSTM最后一次的输出即\(h_T\),Eq. (1)经典的LSTM-LM语言模型公式,根据v可以理解为上下文向量context vector以及之前已经预测的词,对当前词即\(y_t\)预测,每个条件概率\(p(y_t|v,y_1,...,y_{t-1})\)都是softmax处理的分布式表示就一向量,维度为比如选取1000个最常用的词作为标准的化,其维度就是1000--即多分类1000个类别,最后简单的方法可能就根据贪心对于每个\(y_t\)的预测选取最大概率的(如假设只有三种词,\(y_1 = (0.1,0.5,0.4)\),就选第二个)。

本文作者用了个小技巧,即输入序列为原序列的倒序,实验证明效果更好一些,具体原因每明确说明,估计类似Bi-LSTM考虑上下文语义,下文语义也有很大的作用,文中说是由于RNN都有时间的滞后性,采用reverse sequence能更好的利用词之间的依赖。

原文核心部分

笔记:读Sequence to Sequence Learning with Neural Networks

3 Experiment

数据集 WMT14,使用两个深层LSTM,针对机器翻译任务,最后标签选择使用简单的left-to-right beam search deocder(集束搜索:贪心的改进)。详见原文,这里就附几个实验的图。

笔记:读Sequence to Sequence Learning with Neural Networks

笔记:读Sequence to Sequence Learning with Neural Networks

笔记:读Sequence to Sequence Learning with Neural Networks

Dai et al.,NIPS 2015,的一篇Semi-supervised Sequence Learning.

4.1 Major Work

这篇paper主要讲的就是预训练方面的工作,提出了两种预训练方法--recurrent language model和sequencce autoencoder。一下本文指的是Sutskever.2014。

其中sequence eautoncoder与本文的sequence to sequence编码器相似,唯一不同的是这个是预训练模型,使用的是大量无标注数据,因此属于是无监督学习模型(本文做的是翻译任务,有监督的训练),目的是对自身序列的重构--把本文中的输出序列换成重构的输入序列即输入的是这个序列输出的还是它只不过是经过了encoder-decoder之后重构的序列了不在做语言翻译的转换了,流程如下图。Dai.2015实验证明将无监督数据训练带到的预训练模型的参数用于监督任务网络模型参数初始化是可行的性能有提升。

笔记:读Sequence to Sequence Learning with Neural Networks

至于语言模型,就是将本文中的sequence to sequence模型中的编码器去掉,剩下的多层解码器LSTM就是一个语言模型,类似工作如Peters et al.2018 ELMo,以及Peters et al.2017 TagLM都是比较具有代表性的预训练语言模型的工作。

5 Conclusion

本文提出了sequence to sequence 模型之后被广泛用于各个任务,另一篇Dai et al 2015.则描述了两种预训练方法并通过实验证明使用大量无标注数据训练得到的预训练模型参数可以很好的用于之后监督任务模型的初始化,因此也称之为半监督学习,后续也有大量使用类似方法的工作即预训练模型如LM等用于各种任务。

参考

[1] Ilya Sutskever.Oriol Vinyals.Quoc V. Le.Sequence to Sequence Learning with Neural Networks.NIPS 2014.

[2] Andrew M. Dai.Quoc V. Le.Semi-supervised Sequence Learning.NIPS 2015.

[3] Matthew E. Peters, Waleed Ammar, Chandra Bhagavatula, Russell Power. Semi-supervised sequence tagging with bidirectional language models. ACL, 2017.

[4] Matthew E. Peters, Mark Neumann, Mohit Iyyer, Matt Gardner,Christopher Clark, Kenton Lee, Luke Zettlemoyer.Deep contextualized word representations.NAACL-HLT 2018.

上一篇:Raki的读paper小记:Bilateral Multi-Perspective Matching for Natural Language Sentences


下一篇:logback高级特性使用(二) 自定义Pattern模板