Quantifying the vanishing gradient and long distance dependency problem in recursive neural networks and recursive LSTMs

这哥们的代码能力肯定不错。

================================

首先这个是讲在Recursive NN里面用LSTM的效果  以前也是这个作者已经提出了LSTM在循环神经网络里面的应用,我们先回顾一下


首先原味奉上几个标准的激活函数

blob.png


LSTM是这样的

blob.png


然后我们看看这个东西怎么用在递归神经网络里面


blob.png


blob.png



其中xy是两个子节点,P是父节点  可以看到就是把左边的和右边的结合在一起了,但是其中的Cp处理的有点不太好感觉,可以更加直观的在g那个函数里面再加两个东西么 一个是

blob.png还有一个是吧其中的x换成y

以上就是LSTM在递归神经网络里面的应用

=======================================================================================

现在我们看看新的东西

因为这个LSTM是加进去了 但是它的效果怎么验证呢?除了最后的结果之外 我们可以这样的来处理


首先是随机生成一些序列

作者的这一个部分比较牛逼



blob.png


就是  我随机生成一个长度不一样的序列,每个词是1-10000之间 然后我从这里面随便定义一个keyword,也就是这句话的关键词

关键词也被限定在1-1000之间 

然后我们定义最后目标函数 也就是这个序列最后的输出是1-10  很简单 就是这个keyword的百位  所以最后这个数据集是特意的构造起来的 就是为了检验么

最后的那个tree是人工构造的(随机的)二叉树


----------------------------------------------------------------------------

为了检验这个LSTM的能力,我们首先看看不同的长度对我们的模型的影响 最后的指标当然还是准确度

blob.png


这是第一个结果,可以看到蓝色的是LSTM-RNN的准确度的boxplots 红色的是RNN的 

我们可以从图中发现当句子距离一大 RNN就不行了 但是LSTM还是可以撑一段时间的

----------------------------------------------------------------------------

刚才的第一个实验只是我们的keyword在叶子节点,现在第二个实验不是这样了  第二个实验是把keyword放到任意一个节点中去,只不过它离根节点的距离变化(也就是keyword在树中的深度一直在变化)。


最后的结果

blob.png


可以看到我们的LSTM—RNN还是能够很好的处理不同深度的问题 但是那个RNN就不行了


----------------------------------------------------------------------------

实验三是看看最后那个误差是不是会exploding 或者vanishing

它定义一个检测这个目标如下

blob.png

if the ratio << 1, the vanishing gradient problem occurs; else if the ratio >> 1, we observe the exploding gradient problem.


很巧妙么

blob.png


结果如下 看来还是蓝色的在1附近



这个真是不错啊 



看来LSTM确实好 



那个LSTM-RNN的代码在下面 C++写的


lstm-rnn-master.zip


























留下您的评论

回复列表:

By王炳宁 on April 18, 2016 | 类别 ML

关于本站