简单记录一下阅读论文 Sequence to Sequence Learning with Neural Networks 的总结,可能不是很全,仅供交流。
1.introduction部分
首先在机器翻译等自然语言处理领域中由于输入序列往往是变长的,因此很难处理(CNN等对输入图像的大小往往做了限制,可以通过resize调整输入图像的大小,但调整后图像的信息基本保持不变)。但自然语言处理通过截断truncation或者填充padding进行输入序列的长度调整都存在问题,truncation会在一定程度上削弱语义信息,而padding又会导致维度太高。
该论文是使用多层的LSTM将输入序列映射到一个固定维度的向量。
该论文使用一个LSTM作为encoder,使用另一个LSTM作为decoder。
论文中提到了一个非常有意思的事情,就是让LSTM反向地读取source sentence(把机器翻译中的原文称为source sentence,译文称为target sentence)能够提升模型性能,比如原句是abc,但是以cba的顺序读入。论文中提到这样的现象作者也无法完全解释,只能猜测这样能够为模型引入更多的短期依赖关系。
论文中一再提到了上述这个有趣的现象是该工作的一个重要贡献。
2. model部分
在这个部分,作者提到:
(1)使用两个LSTM的一个重要原因是增加模型的参数量,并且能够很容易地在不同的语言句子对上进行训练。
(2)作者发现deep LSTMs比shallow LSTMs性能显著提高,在论文中作者使用的是4层的网络。
(3)作者反复提到的reverse the order of the words of the input sentence的重要性。
3. train details部分
简单介绍一下模型训练的部分细节:
作者发现LSTM的训练难度很低,使用了4层深度的LSTM,hidden_size和embed_size都是1000,输入词表大小为160000,输出词表大小为80000。
关于深层的LSTM性能更好这一点,作者提到浅层LSTM每增加一层就能将困惑度降低近10%,感觉性能提升还是很大的。
好了,先简单记录到这里,回过头来看感觉没什么内容,只是一些总结,欢迎交流探讨。