Long Short Term Memory networks(LSTMs)

背景:在我之前的一篇博客中说了一下对RNN的理解,RNN对于长句子表示的不是很好,超过六七层的网络之后就很难获得之前内容的信息了,目前的框架是基于梯度的,多层网络很容易出现梯度弥散的情况。但是对于NLP任务中,输入序列长度会很长,基本的RNN网络就不太适合处理这些任务了。于是大牛们Hochreiter & Schmidhuber [1]就提出了LSTM网络,让处理长序列也变得可能。

原理:LSTM的详细原理和各个cell的作用详细参考colah's blog[2],这篇博客讲的很清楚,下图也是出自这篇博客中。

图1 RNN网络

Long Short Term Memory networks(LSTMs)

图2 LSTMs

Long Short Term Memory networks(LSTMs)

总结:LSTMs通过三个门,忘记门,输入门,输出门,四个神经网络,控制着信息的保留和传输,它相比起RNN能够将需要保留的信息直接传到下一层,从而解决了长依赖的问题。LSTM中四个网络的神经元个数是一样的,假如都是128个,那么输出维度和上下文的维度也是128,假如Xt的维度是64维,现在需要看看四个神经网络的输入都是128+64维,四个神经网络的大小都是(128+64)* 128。现在看看另外一个问题,就是sigmoid和tanh网络,所有的门控制网络都是sigmoid,这是因为sigmoid函数输出是(0,1),为0就表示完全没有影响,为1表示影响最大;tanh网络和RNN网络相同,是个标准的神经网络。在输出之前有个tanh操作,它的目的是保证值在-1到1之间,因为之前的忘记操作和输入操作会让值不在-1到1之间。

参考:

[1] http://www.bioinf.jku.at/publications/older/2604.pdf

[2]http://colah.github.io/posts/2015-08-Understanding-LSTMs/