【论文笔记】Sequence to sequence Learning with Neural Networks
2016-12-11 23:36
886 查看
本文模型:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/models/rnn/translate
前一段时间在学习image caption,发现基本上所有的论文都引用了这篇论文以及另一篇。image caption的模型也很多都是sequence to sequence(encoder-decoder)的,当时看了很费解,这明明是一个机器翻译的模型呀,会有这么大的关系?于是决定来一探究竟,google了一下发现,我的妈呀,引用量上千了,看来这一定是一篇不得不读的神文了,于是决定好好学一学这篇文章提出了一些什么新的思想,encoder-decoder又究竟是怎么一回事儿呢。
注:本篇笔记不以论文顺序进行,只是提取出博主认为比较重要以及新颖和值得思考的点进行总结。
总体来说,本文提到首先将source sequence通过一个encode LSTM map成一个vector,然后再通过另一个decoder LSTM进行翻译得出output,这也恰恰是image caption里的思想呀(通过CNN将输入图像conv成一个vector或者feature map,然后再输入LSTM),原来大体是这样,接着看。
普通的部分本文将不再赘述,文中作者明确说到了自己模型的三大亮点:
(1)encoder LSTM来map inputs to a fixed vector, then feed the vector to another decoder LSTM to predict。
(2)用了更深、更复杂的LSTM。
(3)采用了reverse input的方法,发现效果倍儿棒。
下面逐条解释:
(1) 首先了对比了前人的工作,最早应用这种encoder来map输入的是使用的CNN,但这种方式忽略的sequence order,导致效果并不是很好;也有人用STM(统计机器翻译)进行学习的,但他们的工作重点是放在STM系统上,并不是神经网络的模型上。本文的这种encoder方法有什么优点呢?这种方法对主动语态和被动语态的包容性很好,也就是说,同一个句子的主被动语态通过encoder得到的向量是欧氏距离很近的,通过PCA降维到2维空间进行可视化如下图所示:
此外,结合(3),对long sentenceyou 很好的效果。
seq2seq的模型的总体架构如下图所示,前面的的LSTM没有输出,是只是起到了map的作用,之后encoder的hidden layer直接输入到后面的decoder中,再进行输出,进行翻译。
(2)相比原先的2layers, 200+cells的RNN模型,本文使用的是4layers,1000cells的模型,发现效果更好。(我猜由于训练数据的原因很有可能发生过拟合,但这个问题怎么解决文中没有提到)。
(3)什么是reverse input?分别输入a,b,c,d/d,c,b,a,通过encoder映射成一个fixed vector,但对应的decoder标签都是A,B,C,D,如此训练效果更好。文中解释道,这样的话a与A的距离会更近,对长序列的记忆效果更好,但d与D会更远,这个坏的影响却没那么大。综合来看解决了“minimal time lag”的问题,但具体为什么文中也没说清楚。
其他方面:
其他方面都比较普通,或者说很多论文中都有提到过,比如LSTM可以解决vanishing的问题但没法解决gradient exploding的问题,因此采取gradient crop。模型采用了SGD without momentum。实用的LSTM结构式Grave的《Generating sequence from RNN》中的LSTM结构,等等。
总体来说,这个模型还是采取了贪婪的算法,换句话说,后面的预测对前面的状态有极强的依赖,一旦前面的预测出现问题,后面的预测就不可靠了,这也是一个值得思考和改进的地方。
前一段时间在学习image caption,发现基本上所有的论文都引用了这篇论文以及另一篇。image caption的模型也很多都是sequence to sequence(encoder-decoder)的,当时看了很费解,这明明是一个机器翻译的模型呀,会有这么大的关系?于是决定来一探究竟,google了一下发现,我的妈呀,引用量上千了,看来这一定是一篇不得不读的神文了,于是决定好好学一学这篇文章提出了一些什么新的思想,encoder-decoder又究竟是怎么一回事儿呢。
注:本篇笔记不以论文顺序进行,只是提取出博主认为比较重要以及新颖和值得思考的点进行总结。
总体来说,本文提到首先将source sequence通过一个encode LSTM map成一个vector,然后再通过另一个decoder LSTM进行翻译得出output,这也恰恰是image caption里的思想呀(通过CNN将输入图像conv成一个vector或者feature map,然后再输入LSTM),原来大体是这样,接着看。
普通的部分本文将不再赘述,文中作者明确说到了自己模型的三大亮点:
(1)encoder LSTM来map inputs to a fixed vector, then feed the vector to another decoder LSTM to predict。
(2)用了更深、更复杂的LSTM。
(3)采用了reverse input的方法,发现效果倍儿棒。
下面逐条解释:
(1) 首先了对比了前人的工作,最早应用这种encoder来map输入的是使用的CNN,但这种方式忽略的sequence order,导致效果并不是很好;也有人用STM(统计机器翻译)进行学习的,但他们的工作重点是放在STM系统上,并不是神经网络的模型上。本文的这种encoder方法有什么优点呢?这种方法对主动语态和被动语态的包容性很好,也就是说,同一个句子的主被动语态通过encoder得到的向量是欧氏距离很近的,通过PCA降维到2维空间进行可视化如下图所示:
此外,结合(3),对long sentenceyou 很好的效果。
seq2seq的模型的总体架构如下图所示,前面的的LSTM没有输出,是只是起到了map的作用,之后encoder的hidden layer直接输入到后面的decoder中,再进行输出,进行翻译。
(2)相比原先的2layers, 200+cells的RNN模型,本文使用的是4layers,1000cells的模型,发现效果更好。(我猜由于训练数据的原因很有可能发生过拟合,但这个问题怎么解决文中没有提到)。
(3)什么是reverse input?分别输入a,b,c,d/d,c,b,a,通过encoder映射成一个fixed vector,但对应的decoder标签都是A,B,C,D,如此训练效果更好。文中解释道,这样的话a与A的距离会更近,对长序列的记忆效果更好,但d与D会更远,这个坏的影响却没那么大。综合来看解决了“minimal time lag”的问题,但具体为什么文中也没说清楚。
其他方面:
其他方面都比较普通,或者说很多论文中都有提到过,比如LSTM可以解决vanishing的问题但没法解决gradient exploding的问题,因此采取gradient crop。模型采用了SGD without momentum。实用的LSTM结构式Grave的《Generating sequence from RNN》中的LSTM结构,等等。
总体来说,这个模型还是采取了贪婪的算法,换句话说,后面的预测对前面的状态有极强的依赖,一旦前面的预测出现问题,后面的预测就不可靠了,这也是一个值得思考和改进的地方。
相关文章推荐
- Learning to Track at 100 FPS with Deep Regression Networks 论文理解及应用笔记(一)
- deeplearning论文学习笔记(2)A critical review of recurrent neural networks for sequence learning
- 论文笔记 Ensemble of Deep Convolutional Neural Networks for Learning to Detect Retinal Vessels in Fundus
- Sequence to Sequence Learning with Neural Networks论文笔记
- 【学习笔记】WEEK 1_Introduction to Deep Learning_Supervised Learning with Neural Networks
- 【每周一文】Sequence to Sequence Learning with Neural Networks(2014)
- Learning to Track at 100 FPS with Deep Regression Networks 论文笔记
- [2014]Sequence to Sequence Learning with Neural Networks
- (翻译)Sequence to Sequence Learning with Neural Networks
- Sequence to Sequence Learning with Neural Networks
- Learning to Track at 100 FPS with Deep Regression Networks 论文理解及应用笔记(二)
- [深度学习论文笔记][Video Classification] Large-scale Video Classification with Convolutional Neural Networks
- 论文笔记之:UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS
- StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks 论文笔记
- 李菲菲课程笔记:Deep Learning for Computer Vision – Introduction to Convolution Neural Networks
- Theano-Deep Learning Tutorials 笔记:Recurrent Neural Networks with Word Embeddings
- [深度学习论文笔记][Image Classification] ImageNet Classification with Deep Convolutional Neural Networks
- 论文笔记:ImageNet classification with deep convolution neural networks
- 论文笔记:Mastering the game of Go with deep neural networks and tree search
- 论文笔记ImageNet Classification with Deep Convolutional Neural Networks(AlexNet)