Sequence to Sequence Learning with Neural Networks论文阅读 (2)

颠倒输入句子的单词顺序非常有用。举例来说,不是把句子a,b,c映射为句子\(\alpha,\beta,\gamma\),而是把c,b,a映射为\(\alpha,\beta,\gamma\)。这样做使得a非常靠近\(\alpha\),b非常靠近\(\beta\),以此SGD就很容易在输入和输出之间"建立通信",这种简单的数据转换大大提高了LSTM的性能

3 Experiments

Sequence to Sequence Learning with Neural Networks论文阅读

作者使用两种方式将它们的方法应用于WMT'14英语→法语的机器翻译任务中,我们使用它来直接翻译句子,而不是使用SMT(SMT, Statistical Machine Translation)

3.1 Dataset details

Sequence to Sequence Learning with Neural Networks论文阅读

我们将模型训练在一个由3.48亿个法语单词和3.04亿个英语单词组成的1200万个句子的子集上,这是一个干净的精心挑选的子集。之所以选择此次翻译的任务和训练集,是因为它们作为标记化训练的广范实用性,并且这些数据都是来自STM baseline中的1000个最佳列表

由于典型的神经网络模型需要将每个单词转换为向量表示,所以我们对两种语言都使用了固定的词汇。我们对源语言使用了160000个最频繁出现的单词,对目标语言使用了80000个最频繁出现的单词。每个不在这个词汇表中的单词都被特殊标记为"UNK"

3.2 Decoding and Rescoring

Sequence to Sequence Learning with Neural Networks论文阅读

我们实验的核心是在许多句子对上训练一个大而深的LSTM。通过最大化一个对数概率来训练这个网络,其中的概率是在给定源句子S上的正确翻译T
\[ \frac{1}{|S|}\sum_{(T,S)\in S}log\ p(T|S) \]
此处S是训练集,训练完成后,根据LSTM找出最可能的翻译作为结果
\[ \hat{T}=\mathop{argmax}\limits_{T}\ p(T|S) \]

3.3 Reversing the Source Sentences

Sequence to Sequence Learning with Neural Networks论文阅读

虽然LSTM能够解决具有长期依赖关系的问题,但是我们发现,当源语句被反转(目标语句没有反转)时,LSTM的表现更好

虽然我们对这一现象没有一个完整的解释,但我们认为这是由于对数据集引入了许多短期依赖关系造成的。通常,当我们把源序列与目标序列链接时,原序列中的每个词语在目标序列中的对应单词相差很远。因此,该问题具有"最小时间延迟"的问题。通过颠倒源序列中的单词,源序列中对应单词与目标序列中词语的平均距离不变,但源序列中的最初几个词已经非常接近目标序列中的词了,所以"最小时间延迟"问题就能减小许多。因此,反向传播能够更轻松地在源序列和目标序列中建立联系,并且改善整体的性能表现

这里的"最小时间延迟",我个人深有体会,不是在NLP领域,而是我自己用LSTM做时间序列预测的时候发现的一个问题,预测值总是比真实值看上去要延迟1到3个单位,整体轮廓是如此的相似,可惜就是横坐标对不上

作者起初认为逆转源序列只会对句子的前半部分取得良好的表现,对后半部分的优化会较差。然而实际表现都很好。为什么有这样的奇效呢?其实可以这么理解,当我们将输入句子倒序后,输入句子与输出句子之间的平均距离其实并没有改变,而在倒序前,输入与输出之间的最小距离是很大的,并且每个词与其对应的翻译词的间隔是相同的,而倒序后,前面的词(与其翻译词)之间的间隔变小,后面的词(与其翻译词)间隔变大,但前面间隔小的词所带来的性能提升非常大,以至于能够使得后面的翻译效果不降反增

3.4 Training details

Sequence to Sequence Learning with Neural Networks论文阅读

作者使用了4层的深度LSTMs,每层有1000个单元,1000维的单词嵌入,输入词汇为160000,输出词汇为80000。我们发现深层LSTMs明显优于浅层LSTMs,浅层LSTMs每增加一层,perplexity就减少10%,这可能是因为它们的隐藏状态更大。完整的训练详情如下:

使用(-0.08,0.08)之间的均匀分布初始化所有的LSTM参数

使用无动量的SGD optimization,初始lr=0.7,五个epoch后,每半个epoch将学习率减半。总共使用7.5个epoch训练模型

batchsize=128

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwspyj.html