RNN的输入和输出代表什么意思
如下是堆叠多层rnn在时间维度上的一个截面

将上图中的每一个方块铺开,得到如下的多层RNN,总共有三层(输入,隐藏层,输出), 如下的时间窗口为4,这4个网络的参数是共享的。单独来看每个时刻的切面,就是一个MLP的增强版:原始的MLP的基础上,上一个时刻的hidden cell的值,需要传给本次time_step对应MLP的hidden cell作为输入。

上面讲了rnn的运行机制,至于更复杂的rnn比如LSTM、RGU,那就是在MLP的每个hidden cell(黄色circle)与下一个time_step 的hidden cell的传值机制的more sophisticated tactics。
几个容易混淆的概念
- lstm cell 和 mlp cell 完全不同的两个概念。lstm cell 是图2的A. 不同时刻的A的参数是共享的。图2中A的4个黄色框就代表4个MLP, 1个黄色框是包含多个mlp cell的。


使用keras实现lstm的参数详解
首先看keras实现lstm的一段代码
from
使用kera的lstm函数时,三个参数hidden_feature,timestamp,feature_size的含义分别为:
- hidden_feature:图1中每一个切片中黄色节点的个数。图2的A中每个黄色框中(就是一个两层的MLP)隐层节点个数。
- timestamp :时间长度,图1中切面的个数,图2中A的个数。
- input_feature: 表示X的维度, 图1中切片中绿色圈的个数,图2中xt的维度。
那上面代码构建的lstm有多少个参数呢?
((input_feature + hidden_featrue) * hidden_featrue + hidden_featrue ) * 4
解释一下
(t时刻输入X的维度+ t-1时刻的hidden layer输出的维度 ) * t时刻的隐层的节点个数 + t时刻数据层的节点个数 ) * MLP个数
即
((10 + 5 ) * 5 + 5 ) * 4
RNN的常用结果举例
- 1对1:时间步长为1,退化为MLP, 比如图像分类。
- 1对多:图片取标题。
- 多对1:情感分析/时序分类/时序异常检测。
- 多对多1:机器翻译/多步骤时序预测。
- 多对多2:视频分类,实时的对每一帧画面标记。
注意rnn模型对输入序列的长度没有限制,只要是单步时间窗的整数倍就行了,因为隐藏层是可以使用任意多次(下图中的绿色方块,对应的是上图中的黄色方块)。如下是在时间轴上的切片,每个格子代表的是多个cell。

参考资料
- https://www.zhihu.com/question/41949741?sort=created
- https://blog.youkuaiyun.com/jiangpeng59/article/details/77646186
4. https://blog.youkuaiyun.com/wyl1987527/article/details/56682347
Standford CS231n 循环神经网络 简要笔记
5. https://blog.youkuaiyun.com/wyl1987527/article/details/56682347
Keras关于LSTM的units参数,还是不理解?