Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting(理解)(github代码)

0 - 背景

这篇文章想要解决的问题是预测一个区域短时间内的降水变化,在它之前的工作(2015年之前)还很少有采用机器学习的方法来做相关预测。由于预测的输入是时序雷达图等具有空间和时间关系的数据,因此文中提出了convolutional LSTM (ConvLSTM)模型,用这个模型可以捕获数据的时空依赖,进而提高模型的预测结果。

 

1 - 方法

1.0 - 问题定义

假设从系统得到的雷达图是一张2D的$M\times N$的图像,每一个像素点有$P$个测量值(可以理解为特征值),因此整个数据可以表达为$\chi \in \mathbf{R}^{P\times M\times N}$,其中$\mathbf{R}$表示观察到数据的域。加上定期记录观测结果,我们可以得到一系列具有时空依赖的数据$\hat{\chi_1} ,\hat{\chi_2} ,\cdots,\hat{\chi_t}$。预测问题可以转变为根据前$J$个观测数据来预测后续$K$个数据,形式化表达如下,

$$\tilde{\chi}_{t+1} ,\cdots,\tilde{\chi}_{t+K}=argmax_{\chi_{t+1},\cdots,\chi_{t+K}}\ p\left(\chi_{t+1},\cdots,\chi_{t+K}|\hat{\chi}_{t-J+1},\hat{\chi}_{t-J+2},\cdots,\hat{\chi}_{t} \right ).$$

1.1 - LSTM

传统的LSTM模型可以形式化如下,

\begin{align}
i_t &= \sigma (W_{x_i}x_t+W_{h_i}h_{t-1}+W_{c_i}\circ c_{t-1}+b_i) \\
f_t &= \sigma (W_{x_f}x_t+W_{h_f}h_{t-1}+W_{c_f}\circ c_{t-1}+b_f) \\
c_t &= f_t\circ c_{t-1} + i_t\circ tanh(W_{x_c}x_t+W_{h_c}h_{t-1}+b_c) \\
o_t &= \sigma(W_{x_o}x_t+W_{h_o}h_{t-1}+W_{c_o}\circ c_t+b_o) \\
h_t &= o_t\circ tanh(c_t)
\end{align}

1.2 - Convolutional LSTM

由于我们的输入是$\chi \in \mathbf{R}^{P\times M\times N}$,其具有空间信息,因此只需要将传统LSTM的公式稍作修改,把$Wx$的权重计算替换成$W\star x$的卷积计算即可,其形式化如下,

\begin{align}
i_t &= \sigma (W_{x_i}\star\chi_t+W_{h_i}\star H_{t-1}+W_{c_i}\circ c_{t-1}+b_i) \\
f_t &= \sigma (W_{x_f}\star\chi_t+W_{h_f}\star H_{t-1}+W_{c_f}\circ c_{t-1}+b_f) \\
c_t &= f_t\circ c_{t-1} + i_t\circ tanh(W_{x_c}\star \chi_t+W_{h_c}\star H_{t-1}+b_c) \\
o_t &= \sigma(W_{x_o}\star \chi_t+W_{h_o}\star H_{t-1}+W_{c_o}\circ c_t+b_o) \\
h_t &= o_t\circ tanh(c_t)
\end{align}

1.3 - 模型

模型是堆砌ConvLSTM的encoder-decoder结构,但从文中给出的描述我觉得作者设计的模型并没有下采样和上采样的经典UNet结果(可能因为那时候都是同一年2015年的工作因此没有借鉴)。模型如下图所示,其通过一个卷积层提取图像特征之后,送入多个ConvLSTM层进行时空特征提取,最后把这些ConvLSTM的输出concat起来再通过1x1卷积进行最后的预测。

 

 上述模型可以形式化为,

\begin{align}
\tilde{\chi}_{t+1} ,\cdots,\tilde{\chi}_{t+K}&=argmax_{\chi_{t+1},\cdots,\chi_{t+K}}\ p\left(\chi_{t+1},\cdots,\chi_{t+K}|\hat{\chi}_{t-J+1},\hat{\chi}_{t-J+2},\cdots,\hat{\chi}_{t} \right )\notag \\
&\approx argmax_{\chi_{t+1},\cdots,\chi_{t+K}}\ p\left(\chi_{t+1},\cdots,\chi_{t+K}|f_{encoding}\left( \hat{\chi}_{t-J+1},\hat{\chi}_{t-J+2},\cdots,\hat{\chi}_{t} \right )\right )\notag \\
&\approx g_{forecasting}\left (f_{encoding}\left ( \hat{\chi}_{t-J+1},\hat{\chi}_{t-J+2},\cdots,\hat{\chi}_{t}\right )\right )
\end{align}

2 - 实验

2.0 - Moving-MNIST数据集

通过MNIST中的数值图像组合而成,其结果如下图所示,

我复现了论文中基于这个数据集的实验(pytorch),详细参见我的Github,有帮助的话记得点个星星hi!。

2.1 - Radar Echo Dataset

该数据集作者没有公开。

3 - 结论

这篇文中提出了一种可以提取时空特征的新型结构ConvLSTM,并且通过实验证明了其有效性。该结构其实可以应用到其他具有时空关系的数据上。

4 - 参考资料

https://arxiv.org/abs/1506.04214v1

https://github.com/czifan/ConvLSTM.pytorch

posted @ 2020-04-04 11:25  CZiFan  阅读(2379)  评论(2编辑  收藏  举报