PredRNN: Recurrent Neural Networks for Predictive Learning using Spatiotemporal LSTMs

版权声明:转载请注明出处 https://blog.csdn.net/The_lastest/article/details/88230959


这是一篇2017年发表在顶级期刊NIPS上的文章,作者通过发现传统RNN/LSTM网络的不足,提出了一种新的网络结构PredRNN,并且为这一网络结构设计了一种新的RNN单元(ST-LSTM)。由于博主能力有限,通过阅读原文短时间能只是领悟到PredRNN这一网络结构的思想,而并未对ST-LSTM的设计灵感有更深的体会。

下面这篇博文主要是来介绍一下什么是PredRNN,以及通过作者的设计思路能带给我们的思考是什么。首先简单的说一下这篇文章的目的:这篇文章所要解决的问题同之前一篇博文所介绍的论文 Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting 一样,都是通过对历史序列数据的训练学习来预测来下一时刻的结果,并且这类数据都是类“图片”形式的,也就是二维且多通道。例如前面说的降雨量预测模型(ConvLSTM),交通流量预测模型(DeepST)等都符合预测具有这类特征的数据。下面就是论文的大致内容:


1.对当前现有方法的总结

在论文中,作者首先对现有该领域的一些方法做了总结,并将之大体分为两类:

The RNN-based architectures: their predicted images tend to blur due to a loss of fine-grained visual appearances

The CNN-based architectures: prone to focus on spatial appearances and relatively weak in capturing long-term motions.

作者指出,基于RNN结构的缺点在于丢失了空间上的信息;基于CNN的结构则着重于空间上的特征而丢失了时间维度上的信息。但知晓ConvLSTM的朋友可能会问,那为什么不用ConvLSTM呢?而这就要从RNN/LSTM网络结构上的根源说起。虽然这篇论文有两个创新点:PredRNN网络结构和新的RNN单元ST-LSTM,但是在我自己看来最为重要的还是PredRNN这一网络结构的思想。同时,既然作者提出了PredRNN这一网络结构,那显然就是按照作者的意图,传统的结构丢失了某些东西,因而提出了新的网络结构。

2.PredRNN

以作者论文中所列举的4层ConvLSTM为例(图p0087),按照作者的观点这种结构的缺陷在于层与层之间是独立的,其忽略了顶层单元对底层单元的影响。

In this process, spatial representations are encoded layer-by-layer, with hidden states being delivered from bottom to top. However, the memory cells that belong to these four layers are mutually independent and updated merely in time domain. Under these circumstances, the bottom layer would totally ignore what had been memorized by the top layer at the previous time step.

也就是说,传统的多层RNN网络之间的连接方式忽略了 t 时刻顶层cell对 t+1 时刻底层cell的影响,并且在作者看来这种影响的作用是非常大的。那怎么办呢?于是乎作者就设计出了PredRNN这一网络结构(如图p0088).

图中的橙色箭头作者称之为"Spatiotemporal memory flow",这种连接方式就解决了前面所提到的问题。下图(p0089)是一个更直观的在ConvLSTM上以PredRNN连接方式的网络。

3.ST-LSTM

作者为了使得这种网络结构能够发挥出更好的效果,又重新设计了一种新的RNN单元,作者称之为"Spatiotemporal LSTM(ST-LSTM)"。至于作者提出ST-LSTM的原因我们放到后面再总结。

如图p0090就是ST-LSTM的结构图,为了便于理解我画成了如下形式(p0091)

可以发现,其总体的连接结构为两个LSTM的组合,且通过 M \mathcal{M} 来作为Spatiotemporal memory flow。同时,作者将图p0091中的上半部分称为’Standard Temporal Memory’,下半部分称为’Spatiotemporal Memory’。具体的计算公式如下:

g t = t a n h ( W g [ X t , H t 1 l ] + b g ) i t = σ ( W i [ X t , H t 1 l ] + b i ) f t = σ ( W f [ X t , H t 1 l ] + b f ) C t l = f t C t 1 l + i t g t g t = tanh ( W g [ X t , M t l 1 ] + b g ) i t = σ ( W i [ X t , M t l 1 ] + b i ) f t = σ ( W i [ X t , M t l 1 ] + b f ) M t l = f t M t l 1 + i t g t o t = σ ( W o [ X t , H t 1 l , C t l M t l ] + b o ) H t l = o t tanh ( W 1 × 1 [ C t l , M t l ] ) \begin{aligned} {g_t} &= tanh({{\mathcal W}_g} * [{{\mathcal X}_t},{\mathcal H}_{t - 1}^l] + {b_g})\\ {i_t} &= \sigma ({{\mathcal W}_i} * [{{\mathcal X}_t},{\mathcal H}_{t - 1}^l] + {b_i})\\ {f_t} &= \sigma ({{\mathcal W}_f} * [{{\mathcal X}_t},{\mathcal H}_{t - 1}^l] + {b_f})\\ {\mathcal C}_t^l &= {f_t} \odot {\mathcal C}_{t - 1}^l + {i_t} \odot {g_t}\\ g_t^\prime &= \tanh ({\mathcal W}_g^\prime * [{{\mathcal X}_t},{\mathcal M}_t^{l - 1}] + b_g^\prime )\\ i_t^\prime &= \sigma ({\mathcal W}_i^\prime * [{{\mathcal X}_t},{\mathcal M}_t^{l - 1}] + b_i^\prime )\\ f_t^\prime &= \sigma ({\mathcal W}_i^\prime * [{{\mathcal X}_t},{\mathcal M}_t^{l - 1}] + b_f^\prime )\\ {\mathcal M}_t^l &= f_t^\prime \odot {\mathcal M}_t^{l - 1} + i_t^\prime \odot g_t^\prime \\ {o_t} &= \sigma ({{\mathcal W}_o} * [{{\mathcal X}_t},{\mathcal H}_{t - 1}^l,{\mathcal C}_t^l{\mathcal M}_t^l] + {b_o})\\ {\mathcal H}_t^l &= {o_t} \odot \tanh ({{\mathcal W}_{1 \times 1}} * [{\mathcal C}_t^l,{\mathcal M}_t^l]) \end{aligned}

当用ST-LSTM作为基本单元的时候,在PredRNN中的网络结构就如图p0092所示:

需要注意的地方就是,当 l = 1 l=1 时, M t l 1 = M t 1 L \mathcal{M}^{l-1}_t=\mathcal{M}^L_{t-1} ,其中 L L 表示总的层数;当然从上图也可以看出来。

最后作者给出设计ST-LSTM的原因是:

① It models spatial and temporal representations in a unified memory cell and convey the memory both vertically across layers and horizontally over states.

② which is able to deliver memory states both vertically and horizontally.

③ However, dropping the temporal flow in the horizontal direction is prone to sacrificing temporal coherency. In this section, we present the predictive recurrent neural network (PredRNN), by replacing convolutional LSTMs with a novel spatiotemporal long short-term memory (ST-LSTM) unit (see Figure 2)

④ Different from simple memory concatenation, the ST-LSTM unit uses a shared output gate for both memory types to enable seamless memory fusion, which can effectively model the shape deformations and motion trajectories in the spatiotemporal sequences.

可以看出前3个都是说用ST-LSTM作为基本的RNN单元可以同时在水平和垂直方向进行memory flow,不过个人认为利用ConvLSTM也是可以的;而第4个理由则时说通过一个共享的输出门能够更好的融合两个部分。怎么说呢,实在是没能理解作者给出的原因,可能这就像你问为什么LSTM要那样设计一样,是通过实验得出来的。从论文最后在数据集Moving MNIST dataset上的实验可以看出,ST-LSTM+PredRNN确实要好于ConvLSTM+PredRNN,不过我猜测ConvLSTM+PredRNN应该没有水平方向上的memory flow。

4.总结

作者先是提出传统的多层RNN/LSTM的网络结构忽略了顶层输出对底层的影响进而提出了PredRNN一个网络结构;紧接着为了提高网络性能又设计了一种新的RNN记忆单元ST-LSTM。同时需要注意的是PredRNN只是一种多层RNN网络间的连接方式,同样可以运用于其它RNN网络。

猜你喜欢

转载自blog.csdn.net/The_lastest/article/details/88230959