这哥们的代码能力肯定不错。
================================
首先这个是讲在Recursive NN里面用LSTM的效果 以前也是这个作者已经提出了LSTM在循环神经网络里面的应用,我们先回顾一下
首先原味奉上几个标准的激活函数
LSTM是这样的
然后我们看看这个东西怎么用在递归神经网络里面
其中xy是两个子节点,P是父节点 可以看到就是把左边的和右边的结合在一起了,但是其中的Cp处理的有点不太好感觉,可以更加直观的在g那个函数里面再加两个东西么 一个是
还有一个是吧其中的x换成y
以上就是LSTM在递归神经网络里面的应用
=======================================================================================
现在我们看看新的东西
因为这个LSTM是加进去了 但是它的效果怎么验证呢?除了最后的结果之外 我们可以这样的来处理
首先是随机生成一些序列
作者的这一个部分比较牛逼
就是 我随机生成一个长度不一样的序列,每个词是1-10000之间 然后我从这里面随便定义一个keyword,也就是这句话的关键词
关键词也被限定在1-1000之间
然后我们定义最后目标函数 也就是这个序列最后的输出是1-10 很简单 就是这个keyword的百位 所以最后这个数据集是特意的构造起来的 就是为了检验么
最后的那个tree是人工构造的(随机的)二叉树
----------------------------------------------------------------------------
为了检验这个LSTM的能力,我们首先看看不同的长度对我们的模型的影响 最后的指标当然还是准确度
这是第一个结果,可以看到蓝色的是LSTM-RNN的准确度的boxplots 红色的是RNN的
我们可以从图中发现当句子距离一大 RNN就不行了 但是LSTM还是可以撑一段时间的
----------------------------------------------------------------------------
刚才的第一个实验只是我们的keyword在叶子节点,现在第二个实验不是这样了 第二个实验是把keyword放到任意一个节点中去,只不过它离根节点的距离变化(也就是keyword在树中的深度一直在变化)。
最后的结果
可以看到我们的LSTM—RNN还是能够很好的处理不同深度的问题 但是那个RNN就不行了
----------------------------------------------------------------------------
实验三是看看最后那个误差是不是会exploding 或者vanishing
它定义一个检测这个目标如下
if the ratio << 1, the vanishing gradient problem occurs; else if the ratio >> 1, we observe the exploding gradient problem.
很巧妙么
结果如下 看来还是蓝色的在1附近
这个真是不错啊
看来LSTM确实好
那个LSTM-RNN的代码在下面 C++写的
回复列表: