【论文向】Sequence to Sequence Learning with Neural Networks

【论文向】ACL2014-seq2seq

Sequence to Sequence Learning with Neural Networks

 

目录

 


注:论文阅读笔记仅帮助大家快读了解、知晓论文的创新点、重点等,如需详细掌握请点击上方标题自行阅读,在此是存在一定博主和读者偏见的,有任何问题欢迎留言指正或讨论。

Humble opinion

愚见总结:
神作

  1. 模型对句子的主动与被动语态并不敏感,但是对输入词的顺序很敏感
  2. 倒序输入句子能提升模型效果,很神奇:)

Abstract

尽管DNNs在大规模有标注数据集上训练效果很好,但无法解决seq2seq(序列到序列)问题。在这篇论文中,我们提出一种了对序列结构做最小假设的端到端方法,将使用多层LSTM来映射输入序列到固定维度的向量。我们主要的成果是对数据集WMT’14 的b英语到法语翻译任务,通过LSTM的翻译在整个数据集上获得了34.8的分数(BLEU),其中LSTM的分数会因out-of-vocabulary问题受到惩罚。值得注意的是,LSTM在长句上没有困难。对比而言,基于短语的机器翻译系统(SMT)在同样的数据集上实现了33.3分数。当我们用LSTM来重排序1000个由基于短语的SMT产生的假设时,达到了36.5的分数。LSTM同样学习到了习语和句向量,如对词序较为敏感,但对主被动相对不敏感。最终,我们发现反向读取源句(而不是目标句)中的单词顺序可以显著提高LSTM的性能,因为这样做引入了许多源句和目标句的短期依赖关系,这样使得优化问题更加容易。

问题:传统的基于短语的SMT(a phrase-based SMT system)怎样实现的?
一般的,基于短语的SMT将任意连续的字符串都看作短语,从词对齐的双语语料库中自动学习双语短语,以短语为单位进行翻译。Och[1]提出对齐模板方法,将单词映射到词类中,实现了句子和短语级两级对齐;Chiang[2] 提出了层次短语模型,形式上是一个同步的上下文无关法,允许短语内部包含子短语。
形式化:将一个汉语句子 f 1 J = f 1 f 2 . . . f J f_1^J = f_1f_2...f_J f1J​=f1​f2​...fJ​翻译成英语句子 e 1 I = e 1 e 2 . . . e I e_1^I = e_1e_2...e_I e1I​=e1​e2​...eI​
1 将汉语句子 f 1 J = f 1 f 2 . . . f J f_1^J = f_1f_2...f_J f1J​=f1​f2​...fJ​进行短语切分 f ′ 1 J = f ′ 1 f ′ 2 . . . f ′ J {f'}_1^J= {f'}_1{f'}_2...{f'}_J f′1J​=f′1​f′2​...f′J​
2 对短语进行调序
3 根据翻译模型,为每一个汉语短语选择合适的英语译文
上述系统存在的问题:(1)短语切分的难度(2)短语切分的等概率性。任意连续的字符串都看作短语,例如,中国建筑业对外开放 应当看作中国建筑业|对外开放,但任意连续的字符串都可以看作短语,中国建筑业对外|开放等引起切分难度且等概率切分将产生语义问题。

问题:反向读取源句而不是目标句,具体如何实现?
在文中2 model最后给出了一个例子将句子abc 翻译为αβγ,将输入改为映射cba到αβγ,这种简单的数据转换将使得翻译更加接近,并使SGD容易在输入和输出间“建立联系”(establish communication),极大地提高LSTM性能

1 Introduction

DNNs取得了不错的表现,诸如语音辨别和物体识别。DNN的强大之处在于能通过有限的步骤来执行任意的并行计算。如N位排序 N-bit数仅需要大小为二次大小的2层隐藏层[3]来实现。虽然神经网络与传统统计模型有相关性,但神经网路可以进行更为复杂的计算。另外,DNNs可以通过足够大的有标注数据集通过bp来实现参数训练。
尽管DNNs有一定的扩展性和强大性,DNNs只能用于输出和输出都能被固定维度向量编码的问题。这是一个明显的局限性,因为很多重要问题最好通过序列表示,它们的长度是预先不知道的,如语音识别和机器翻译都是序列问题,存在不等长的序列映射问题。同样,QA(question-answering)也可被看作问题序列的词映射到回答序列的词。因此,一种domain-independent的序列到序列方法显然是有意义的。
本论文中,我们展示了LSTM架构的一个直接应用,可以解决一般的序列到序列问题。想法是这样的,使用一个LSTM来一次一步(ont timestep at a time)读取输入序列,来获取固定维度的向量表示,同样用另一个LSTM来提取输出序列,·如图2。第二个LSTM本质上是一个RNN语言模型除了它取决于输入序列。LSTM具有学习长时间相关性的数据能力使得成为seq2seq应用的选择,因为在输入和输出之间存在相当长的时间滞后(图2)
我们的方法与K和B[4]密切相关,他们是第一个将整个输入句子映射到向量的人,也与Cho等人[5]的方法有关,尽管Cho是重新检索基于短语的系统产生的假设。Graves[6] 引入了一种新的可区分注意力机制,使得神经网络能够专注于输入的不同部分,B等人将这一想法应用于NMT。连接主义序列分类(The Connectionist Sequence Classification)是另一种通过神经网络进行序列映射的方法,但它假设输入和输出是单调对齐的[7]。

LSTM在长句上并没有受到影响,因为我们反向了源句中的单词顺序,通过这样做我们引入了许多短期的依赖关系,使得优化问题变得简单。颠倒源句中的单词的简单技巧是这项工作的关键技术之一。
LSTM的一个有用的特性是,它学会将可变长度的输入语句映射为固定维向量表示。

问题:DNNs为什么存在输入和输出必须被编码为固定维度的问题?
因为DNNs模型中输入和输出是通过隐藏层的参数(Dense)传递的,·如图1,输入都可以编码为四个绿色圈,输出都可以被编码为三个红色圈。输入和输出在构建神经网络时已经固定维度了。

2 The model

【论文向】Sequence to Sequence Learning with Neural Networks

只要输入和输出的对齐性已知,RNN可以轻松解决序列到序列问题。然而,对于不定长且复杂非单调关系的序列问题,RNN无法解决。

最简单的技巧是使用一个RNN将输入序列映射到固定维度的向量,之后再通过另一个RNN将该向量映射到目标(这种方法见[5])。大体上RNN可以使用,但处理具有长期依赖性的序列很难训练处理。因此选用了LSTM来解决该问题。

LSTM的目标是优化条件概率 p ( y 1 , . . . , y T ′ ∣ x 1 , . . . , x T ) p(y_1,...,y_T'|x_1,...,x_T) p(y1​,...,yT′​∣x1​,...,xT​),其中 x 1 , . . . , x T x_1,...,x_T x1​,...,xT​是输入序列, y 1 , . . . , y T ′ y_1,...,y_T' y1​,...,yT′​是相应的输出序列(注意是相应的,不是全部的,是与 y 1 . . . y_1... y1​...相关的输出序列)。LTSM计算该条件概率是通过首先获得输入序列的固定维度向量表示v(由最后一个隐藏状态得到),然后通过一个标准的LSTM-LM公式计算 y 1 , . . . , y T ′ y_1,...,y_T' y1​,...,yT′​的可能性,其初始隐藏状态被设置被 x 1 , . . . , x T x_1,...,x_T x1​,...,xT​的向量v:
p ( y 1 , . . . , y T ′ ∣ x 1 , . . . , x T ) = ∏ t = 1 T ′ p ( y t ∣ v , y 1 , . . . , y t − 1 ) (1) p(y_1,...,y_T'|x_1,...,x_T) = \prod_{t=1}^{T'}p(y_t|v,y_1,...,y_{t-1}) \tag{1} p(y1​,...,yT′​∣x1​,...,xT​)=t=1∏T′​p(yt​∣v,y1​,...,yt−1​)(1)

在这个公式中,每一个 p ( y t ∣ v , y 1 , . . . , y t − 1 ) p(y_t|v,y_1,...,y_{t-1}) p(yt​∣v,y1​,...,yt−1​)概率分布是通过整个词表的词的softmax计算得到。我们使用的LSTM公式来自Grave[6]。注意,我们要求每个句子的末尾要加上特殊的句尾符号<EOS>,这样可以使模型在所有可能的序列长度上定义概率分布,就像图2一样。

我们实际的模型与上述描述有三点重要的不同。一,我们使用了两种LSTM,一个用于输入序列、另一个用于输出序列,这样做会以可忽略的计算代价增加模型的参数量,并且使在多语言环境训练时LSTM训练效果自然。二,我们发现深层LSTM显著优于浅层LSTM,故选择了4层LSTM。三,我们发现颠倒源句中的词序极其有价值,例如简单的a b c 映射到 αβγ,我们将要求LSTM将 c b a 映射到αβγ,其中αβγ是句子abc的翻译表示。通过这种方式,将使得翻译更加接近,并使SGD容易在输入和输出间“建立联系”(establish communication),我们发现这个简单的数据转换可以极大地提高LSTM性能

3 Experiments

我们将以两种方式将我们的方法应用到WMT’14 英语到法语的翻译任务上。我们直接使用它直接翻译输入句子,而不使用参考SMT系统,并重算了SMT基线的n-best列表,最终给出了这些翻译方法的准确率、翻译示例以及可视化生成句子的表示。

3.1 Dataset details
我们使用了WMT’14 英语到法语的数据集。我们选取了一个12M 句子的子集进行训练,其中包含了348M 法语词 和 304M 英语词,这个子集是被“选定”的干净子集[8]。选择这个翻译任务和特定子集是因为有一个标记的训练和测试集以及基线SMT的1000个最佳列表可以公开使用[8]。
典型的语言模型依赖于每个单词的向量表示,因此我们对两种语言都使用固定的词汇表。我们使用了16万个最常见的源语言单词和8万个最常见的目标语言单词。每个词汇表之外的单词都被替换为一个特殊标记“UNK”。

3.2 Decoding and Rescoring
本实验的核心包括通过多组句子对训练一个大且深的LSTM。我们通过最大化对给定源句S的正确翻译T的log概率来进行训练,故训练目标为:
1 / ∣ S ∣ ∑ ( T , S ) ∈ S log ⁡ p ( T ∣ S ) 1/|S| \sum_{(T,S)\in S}\log{p(T|S)} 1/∣S∣(T,S)∈S∑​logp(T∣S)

其中S是训练集。当训练结束时,我们根据LSTM的最接近翻译来产生翻译:
T ′ = a r g m a x T p ( T ∣ S ) (2) T' = argmax_{T} p(T|S) \tag{2} T′=argmaxT​p(T∣S)(2)

我们使用一种简单的从左到右的beam search 解码器来搜索最可能的翻译,该解码器保留少量的部分假设B,其中部分假设是某个翻译的前缀。在每个timestep上,我们用词汇表中的每一个可能的单词扩展局部假设,这大大增加了假设的数量,所以我们根据模型计算的S log概率,舍去所有除了B个最有可能的假设。一旦<EOS>加入到了该部分假设中,该假设便从beam移除,并添加到完整假设的集合中。虽然该解码器是近似的,但实现起来很简单。有趣的是,我们的系统即使在beam size为1时表现良好,在2时已可以产生大多数适合的翻译(Table 1)。
我们同样使用LSTM来重写由基线NMT[8]的1000-best,为了重写一个n-best列表,我们计算了每个假设的log概率,并对它们的得分和LSTM的得分取一个平均。

3.3 Reversing the Source Sentences
即使LSTM善于处理具有长期依存性的问题,我们也发现LSTM在源句被颠倒时学习效果更强(目标句顺序不变)。通过这样做,LSTM的测试困惑度(test perplexity)从5.8降到4.7,BLEU分数从25.9到30.6。

虽然我们对于这个现象没有一个彻底的解释,但我们相信这是由于对于数据集引入了许多的短期依存性。通常,当我们将源句和目标句对应时,源句中的每一个词都是目标句中的对应词。结果就是,这样将产生一个明显的"最小时间延迟"(minimal time lag)问题[9]。通过颠倒源句,源句和目标句中的对应词的平均距离不变。然而,源语言的最初几个单词现在非常接近目标语言的最初几个单词,所以最小时间延迟问题便被解决了。另外,反向传播更容易在源句和目标句之间"建立联系"(establish communication)。

最初,我们认为颠倒输入句只会在目标句的前半部分产生更好的预测,而在后半部分效果较差。然而,LSTM在整句的翻译效果上均表现良好(见sec 3.7),表明颠倒源句将使LSTM获得更好的记忆利用性。

3.4 Training details
我们发现LSTM易于训练。我们使用了4层LSTM,每层1000个cells,词嵌入的维度为1000维,输入词表大小为160,000、输出词表为80,000。因此深层LSTM使用8000个真实数字表示一个句子。我们发现深层LSTM显著优于浅层,每增加一层都会减少近10%的困惑度,可能是由于更大的隐藏状态。对于每个输出我们在80,000个词中使用naive softmax。最终LSTM有384M个参数,其中64M是纯循环连接(32M编码器,32M解码器)。下面给出完整的训练细节:

  • 我们初始化了所有的LSTM参数,使其在-0.08和0.08之间均匀分布
  • 我们使用不带动量的随机梯度下降,学习率为0.7。5个epochs后,我们开始每半个epoch将学习率减半,最终我们训练模型共7.5个epochs。
  • 我们使用了batchsize为128
  • 尽管LSTM不会存在梯度消失的问题,但它可能会遇到梯度爆炸,因此我们对梯度范数进行了严格约束[10,11],当它超过阈值时将进行缩放。对于每个batch,我们计算s = ||g||_2 ,g是梯度除以128。如果s > 5,g = 5g/s。
  • 不同的句子有不同的长度。大多数句子是短句(如长度为20-30)但是一些句子是长句(如长度大于100),因此一个由128个随机选择的训练句子组成的batch会有很多短句和一些长句,结果大量的计算在这样的batch中浪费了。为了解决这个问题,我们保证在每个batch中所有的句子都有大致相同的长度,从而得到2x的加速。

3.5 Parallelization
  8 GPU。LSTM的每一层都在不同的GPU上执行,并在计算完成后立即激活传递给下一个GPU。我们的模型有4层LSTMs,每一层都驻留在一个单独的GPU上。剩下4个GPU用于并行化softmax,所以每一个GPU负责1000x20000矩阵。最终实现的速度为每秒6300个单词(英语和法语)。在整个训练过程中,大约花了10天时间。

3.6 Experimental Results 【论文向】Sequence to Sequence Learning with Neural Networks
3.7 Performance on long sentences
【论文向】Sequence to Sequence Learning with Neural Networks

3.8 Model Analysis
【论文向】Sequence to Sequence Learning with Neural Networks

我们的模型的一个吸引人的特点是它能够将一个单词序列转换成一个固定维数的向量。通过PCA得到的图5可视化了一些学习到的表示。从图中可以清楚地看出,模型对词语的顺序很敏感,而对于用被动语态代替主动语态则完全不敏感。
【论文向】Sequence to Sequence Learning with Neural Networks

4 Related work

机器翻译还有很多工作要做,迄今,最简单和高效的应用RNN-Language Model(RNNLM)或者Feedforward Neural Network Language Model(NNLM)[12]到NMT任务上是通过重写(rescoring) baseline[13]的n-best 列表,这样确实可以提高翻译质量。

最近,研究人员开始研究将源语言信息纳入NNLM的方法。这项工作的例子包括Auli等人[14],他们将NNLM与输入句子的主题模型结合起来,提高了重新检索的性能。Devlin等[15]采用了类似的方法,但他们将NNLM集成到MT系统的解码器中,并使用解码器的对齐信息为NNLM提供输入语句中最有用的单词。他们的方法非常成功,比他们的基准有了很大的改进。

我们的工作与Kalchbrenner和Blunsom[4]密切相关,他们是第一个将输入句子映射到向量然后再映射到句子的人,尽管他们使用卷积神经网络将句子映射到向量,而卷积神经网络失去了单词的顺序。与这项工作类似,Cho等人[5]使用类似于lstm的RNN架构将句子映射到向量中并返回,尽管他们的主要关注点是将他们的神经网络集成到SMT系统中。Bahdanau等人[16]也尝试使用神经网络进行直接翻译,该神经网络使用注意机制来克服Cho等人[5]在长句子上的不良表现,并取得了令人鼓舞的结果。同样地,Pouget-Abadie等人[17]也试图解决Cho等人[5]的记忆问题,方法是将源句的片段翻译成流畅的译文,这与基于短语的方法类似。我们猜想,他们可以通过简单地训练他们的网络在反向源句上取得类似的改善。

端到端训练也是Hermann等[18]关注的焦点,其模型通过前馈网络来表示输入和输出,并将它们映射到空间中的相似点。但是,他们的方法不能直接生成翻译:要得到翻译,他们需要在预先计算的句子数据库中查找最近的向量,或者重新核(rescore)一个句子。

5 Conclusion

在这项工作中,我们展示了一个大型的深度LSTM,它有一个有限的词汇,并且几乎不做关于问题结构的假设,可以比一个标准的SMT系统更好,它的词汇量是无限的,在大规模MT任务中。我们基于LSTM的简单方法在MT上的成功表明,如果它们有足够的训练数据,它应该可以很好地处理许多其他序列学习问题。

我们对颠倒原句中的单词所获得的改善程度感到惊讶。我们的结论是,找到一个具有最大数量短期依赖的问题编码是很重要的,因为它们使学习问题变得更简单。特别是,虽然我们无法训练一个标准的RNN来解决非反向翻译问题(如图2所示),但我们相信,当源句被反向时,一个标准的RNN应该是容易训练的(尽管我们没有实验验证它)。

我们还对LSTM正确翻译很长的句子的能力感到惊讶。我们最初认为,由于记忆能力有限,LSTM在处理长句子时可能会失败,而其他研究人员报告说,使用与我们类似的模型处理长句子时表现不佳[5,16,17]。然而,在反向数据集上训练的LSTMs在翻译长句子方面几乎没有困难。

最重要的是,我们证明了一个简单、直接和相对不优化的方法可以胜过SMT系统,因此进一步的工作可能会导致更大的翻译准确性。这些都表明,我们的方法可能会解决其他一系列的挑战性问题。

6 Acknowledgments

We thank Samy Bengio, Jeff Dean, Matthieu Devin, Geoffrey Hinton, Nal Kalchbrenner, Thang Luong, Wolf- gang Macherey, Rajat Monga, Vincent Vanhoucke, Peng Xu, Wojciech Zaremba, and the Google Brain team for useful comments and discussions.

References

 

上一篇:LSTM长短期记忆细节理解


下一篇:刷题学rust(三)——rust分支语句