Sequence to Sequence Learning with Neural Networks--阅读笔记

主要内容

存在问题

尽管DNNs在有大量标记训练集的情况下工作良好,但它们不能用于将序列映射到序列。只适用于输入和目标可以用固定维数向量合理编码的问题,许多重要的问题都是用长度未知的序列来表示。

针对上述问题,提出一种通用的端到端序列学习方法,它对序列结构做了最小的假设。

端到端序列方法结构

使用多层长短时记忆(LSTM)将输入序列映射到一个固定维数的向量上,再用另一个深度LSTM从向量上解码目标序列。

验证

在WMT-14数据集的英法翻译任务中,LSTM生成的翻译在整个测试集上获得了34.8的BLEU分数,LSTM的BLEU分数在词汇表外的单词上受到了惩罚。在长句子上没有困难。

对比方案

基于短语的SMT系统在同一数据集上的BLEU得分为33.3

其他收获

  1. 当使用LSTM对前面提到的SMT系统产生的1000个假设进行重新排序时,BLEU分数增加到36.5,接近于以前的技术水平。
  2. LSTM还学习了对词序敏感、对主动语态和被动语态相对不变的有意义的短语和句子表示。
  3. 发现颠倒所有源句(但不包括目标句)中的单词顺序显著地提高了LSTM的性能,因为这样做会在源句和目标句之间引入许多短期依赖关系,从而使优化问题变得更容易。

正文收获

我们之所以能够在长句子中表现好是因为我们在源端颠倒词的顺序,引入短期依赖使优化问题更容易。因此,SGD可以学习没有长句子问题的LSTMs。源句中颠倒单词的简单技巧是这项工作的关键技术贡献之一。

LSTM的一个有用特性是,它学会将一个可变长度的输入语句映射成一个固定维向量表示。考虑到翻译往往是对原句的释义,翻译目标鼓励LSTM找到能够捕捉其含义的句子表示,因为具有相似含义的句子彼此之间很接近,而不同的句子含义会很远。定性评估支持这一观点,表明我们的模型能够识别词序,并且保持主动语态和被动语态不变。

模型

递归神经网络(RNN)是前馈神经网络对序列的一种自然推广。

只要预先知道输入和输出之间的对齐,RNN就可以轻松地将序列映射到序列。然而,如何将RNN应用于输入和输出序列长度不同且关系复杂且非单调的问题,目前尚不清楚。

一般序列学习的一个简单策略是使用一个RNN将输入序列映射到一个固定大小的向量,然后用另一个RNN将向量映射到目标序列(Cho等人也采用了这种方法)。虽然它在原则上可以工作,因为RNN提供了所有相关的信息,但是由于由此产生的长期依赖关系,训练RNNs是困难的[14,4](图1)[16,15]。然而,众所周知,长短时记忆[16]会学习具有长期时间依赖性的问题,因此LSTM可能在此设置中成功。

LSTM的目标是评估条件概率p\left(y_{1}, \dots, y_{T^{\prime}} | x_{1}, \ldots, x_{T}\right)是输入序列,是输出序列,T‘与T可能不相同。

v是计算的输入序列的固定维向量表示(由LSTM的最后一个隐藏状态给出),初始状态由v表示。

在这个方程中,每个分布用softmax表示词汇表中的所有单词。我们使用格雷夫斯的LSTM公式。注意,我们要求每个句子都以一个特殊的句末符号<EOS>结束,这使模型能够定义所有可能长度序列上的分布。总体方案如图所示,其中所示的LSTM计算A、B、C、<EOS>的表示,然后使用该表示计算W、X、Y、Z、<EOS>的概率。

异同

实际模型在三个重要方面与上述描述不同。

首先,使用两种不同的LSTM:一种用于输入序列,另一种用于输出序列,因为这样做增加了数字模型参数,而计算成本可以忽略不计,并且可以很自然地同时在多个语言对上训练LSTM。

其次,深度LSTM明显优于浅层LSTM,因此选择了一个四层的LSTM。

第三,颠倒输入句子的单词顺序非常有价值。例如,不是将句子a,b, c映射成句子α,β,γ,而是LSTM将c, b, a映射成α,β,γ(α,β,γ是翻译的a, b, c)。这样,a接近α,b是接近β,等等,这一事实使SGD容易建立输入和输出之间的联系。我们发现这个简单的数据转换可以极大地提高LSTM的性能。

实验

将方法应用到WMT’14英语到法语的MT任务中,方法有两种。在不使用参考SMT系统的情况下,使用它直接翻译输入语句,并重新确定SMT基线的n-best列表。

猜你喜欢

转载自blog.csdn.net/qq_40722284/article/details/90084557