多层LSTM结构的深入解读

  读这篇文章的时候,默认你已经对LSTM神经网络有了一个初步的认识,当你深入理解时,可能会对多层LSTM内部的隐藏节点数,有关cell的定义或者每一层的输入输出是什么样子的特别好奇,虽然神经网络就像是一个黑箱子一样,但是我们仍然试图去理解他们。
  我们所说的LSTM的cell就是这样子的一个结构:(图中标识的A就是一个cell,图中一共是三个cell)

   其中的X.t代表t时刻的输入,h.t代表这一时刻cell的输出,中间的cell中给我们展示了具体的数值传递计算的这么一个过程,不太清楚的同学可以下去自行查阅,就是三个门,首先是遗忘门,然后是更新门,最后是输出门。依靠三个门之间的记忆关系就可以实现对远距离信息的记忆

    那么重点来了,在多层的LSTM网络中,我们会经常见到说比如 hidden layer 1的隐藏节点数为100,hidden layer 2的隐藏节点数为64 等等,那么这些100、64分别代表了什么呢,在图里面又能怎么样表示呢?
   还是借鉴上一个图示,其中 h.t就是我们的隐藏节点(好神奇),你有可能会问 h.t就是一个节点啊,怎么回事100个节点数呢?(我这里没有合适的图了)联想一下CNN中的网络,如何实现从n个节点映射到m个节点的,靠的是矩阵之间的计算-权重W和偏置b,举一个简单的例子:输入X是一维的(比如时序信号),我的输出 h.t想要是100维的,大家知道我的每个cell里面是上图这样的结构,但是有一点不要忽视了,里面的计算都是要有参数的,便是W b的计算,所以我们可以设置W为1*100的矩阵,和输入X相乘以后,经过cell的操作,变成维度为100的输出。如果在上图的上面再加一层LSTM网络形成多层的呢?此时第二层的t时刻的输入就为 h.t了,他现在是100维的输入了,同样的道理,我们也可以经过矩阵W b的运算让其输出为64维。这样大家就明白了吧。
   这里有一个数据为一维,但是实际输入(数据的维度加上上一时刻状态的维度)为3维,cell输出为二维的网络,最后在cell的上面又加了一层,让最终的输出为一维。可以参考着理解一下。

对于LSTM神经网络,大家肯定关心输入的格式是什么样子的,肯定的告诉大家格式为:
 
 
[batchs,time_steps,input_dim]

   其中 batch就是我们在CNN里面常见到的batch定义一样,就是多少个样本数目; time_steps是LSTM特有的,他表示你有多少个时刻的输入,比如上图中就是t-1,t,t+1,三个时刻,所以这个时候的 time_steps就是3;input_dim就是输入的维度,这里的维度指的是每个时刻的输入向量的维度,比如上面说到的,一开始的输入X的input_dim就是一维的,第二层的input_dim就是100维。

接下来会有两个案例讲解来帮助你更好的学习LSTM神经网络:
1、minist手写集图像利用LSTM进行分类,分类问题,输入为多维

2、利用LSTM进行异常信号的检测,预测问题,时序问题,输入为一维

猜你喜欢

转载自blog.csdn.net/herr_kun/article/details/80697232