【時空序列預測第三篇】時空序列預測模型之PredRNN(用ST-LSTM的預測學習循環神經網路)
- 2020 年 2 月 17 日
- 筆記
以下文章來源於AI蝸牛車 ,作者Che_Hongshu
前言
接下來保持住節奏,每周起碼一篇paper reading,要時刻了解研究的前沿,是一個不管是工程崗位還是研究崗位AIer必備的工作,共勉!
一、Address
這是nips2017年的一篇paper,來自於清華的團隊
PredRNN: Recurrent Neural Networks for Predictive Learning using Spatiotemporal LSTMs
http://ise.thss.tsinghua.edu.cn/ml/doc/2017/predrnn-nips17.pdf

二、Introduction
2.1 創新思路
在Abstract中直接點名了本model的innovation,平時的時間和空間記憶都是在LSTM或者GRU cell中做文章,本paper的思路轉移到stacked RNN layers中,即模型的堆疊結構中存在可以記憶的單元。

2.2 時間資訊和空間資訊

文章在這裡指出 時間資訊和空間資訊都是十分重要的。並且在文章前面又是再一次的說2015-2017年左右的時空序列模型主要都集中在lstm的內部的memory的改造,並且主要集中於temporal的資訊提取。
2.3 時空問題
這裡作者又對時空序列問題進行一波定義和說明並且對施行建博士的開山之作ConvLSTM模型又進行介紹,這兩個部分我都已介紹過了,請看我之前的文章。 【時空序列預測第二篇】Convolutional LSTM Network-paper reading
但是這篇文章中指出了這樣一個問題

加入有四層的ConvLSTM的一個encoding-forcasting結構,輸入幀進入第一層,將來的影片序列產生在第四層,在這個過程中,空間維度隨著每層的cnn結構被逐步編碼,而時間維度的memory cells屬於彼此獨立,在每個時間步被更新,這種情況下,最底層就會忽略之前的時間步中的最高層的時間資訊,這也是ConvLSTM的層與層之間獨立mermory mechanism的缺點。實際上簡單點說,就是這種簡單的並行stacked結構中,堆疊之後層與層之間是獨立的,t時刻的最底層cell會忽略到t-1時刻的最頂層cell的時間資訊。

其實強調的就是對應色調的cell之間沒有時間資訊聯繫
三、PredRNN
3.1 Spatiotemporal memory flow

對於研究時空序列預測問題,network的 basic building blocks一般先採用ConvLSTM進行研究

這裡再次強調結構是每一層每一層的extract,並且cell states只在 水平方向,其實說的就是每一層獨立,c只在每一層的時間步傳播,而 有一部分資訊,這部分主要是空間資訊只在 hidden state上向上傳播。


我們假設輸入序列的資訊應該是被保留的,我需要不同level cnn提取到的資訊。其實意思就是每一個輸入,經過每一層網路結構有一個資訊提取,這個提取到的最後的抽象資訊,應該是需要保留給下一次第一層的輸入的。所以提出這樣一個網路結構

其中M就是cell output,只是為了圖中區別,標成了M。此時的ConvLSTM公式為

原始的ConvLSTM公式為

這裡我用各種顏色的標註一下你就知道區別了,其實就是根據結構來改變的公式本身。
原始的ConvLSTM

輸入的hidden state和cell output都是上一個時刻的
此時更改的結構:

紅色表示在非最底層時的單個網路cell的公式變換,輸入的hidden state和cell output都是前一層的(L-1) 而公式中的紫色部分說明L=1的時候有特殊情況,即圖中的折線top到bottom的傳播部分

這幅圖比較直觀

3.2 Spatiotemporal LSTM

這裡文中又指出上面提出的那出結構的一些缺點
1.去掉水平方向的時間流,會犧牲時間上的一致性,因為在同一層的不同時間沒有時間流了。2.記憶需要在遙遠的狀態之間流動更長的路徑,更容易造成梯度消失。所以引入了一個新的building blocks為ST-LSTM。我想大家可能不會陌生對於它。

我們可以轉換成更為肉眼所理解的圖。

你會驚奇的發現這上下其實是完全一樣的。我們再來看一下LSTM的結構。

你細品,發現沒,其實這兩個完全一樣的結構就是LSTM,只是下面的cell output和hidden state都由M代替了,其他的輸出部分其實就相當於把兩個LSTM結構的輸出整合在一起分別輸出計算了,我這裡自己標了一下供大家來觀察。文中把上半部分稱為』Standard Temporal Memory』,下半部分稱為』Spatiotemporal Memory』,上半部分和普通的LSTM 沒有任何區別,下半部分相當於把c和h一起更改為M,M即時空記憶狀態。

ST-LSTM的公式

現在這圖結構圖迎刃而解了。

相當於在原始的基礎結構上,多了一個M 狀態,用M狀態進行折線連接上一時刻top層的資訊流入到此時刻的bottom層。並且在垂直方向引入M狀態。其實你再仔細看看,這個結構其實就相當於把前面3.1(left)所講的結構中的兩個狀態整合在一起成為一個狀態M,之後把這個結構和3.1(right)進行整合,最後得到上圖的結構,不同的是這裡用一個ST-LSTM巧妙的解決了這個問題。
四、 Experiments
這裡只簡單說明下Moving MNIST dataset數據集和雷達數據集的結果(可以和上一篇對比) 對應的訓練參數

4.1 Moving MNIST dataset
Moving MNIST dataset數據集不再過多介紹,請看我第二篇時空序列文章。這裡與之前那篇不同的在於數據集的玩法,這裡清華團隊是自己隨機生成train數據集,而test是固定的

對運動的數字給一個速度,和隨機的方向, 這個方向是單位圓也就是360°等分的一個角度,之後運動的振幅在3到5之間,並且存在兩個數字的位置有覆蓋的情況,故理論上可以生成無線數量的訓練數據集。

作者測試集的用法是每次挑選訓練數據中,也就是除去與隨機生成的訓練數據集中相同的樣本以外的測試數據集作為最終的測試數據集。並且用兩個數字的訓練集訓練的模型去預測圖中有三個數字的測試集,這也是ConvLSTM中同樣用到的測試方法,無非是想測試模型的泛化性和遷移性。

可以看到ST-LSTM的PredRNN的效果最好,這裡給出的參數最好表現是128的hidden state 維度和4層的stacked結構

幾個模型的結果,很直觀的可以看到對於數字沒有重疊的情況下,PredRNN與VPN baseline效果差不多,但是在有重疊的情況下,VPN baseline把8預測成了3,文中把這種預測的情況叫成 sharp,說明VPN baseline模型對於複雜的情況還是沒法很好的預測,並且整體的模型都是對於長時間的預測隨著時間步的越來越長,變得越來越模糊。
4.2 Radar echo dataset

這裡的這個總結我十分贊同且準確,對於雷達數據集的最難的地方就在於它沒有所謂的明顯的周期性,並且移動的速度也是不固定的,變換也不是極具嚴格的,比如Moving MNIST dataset數據集運動的對象是數字,這個數字本身空間的資訊基本上是不變的,這個和識別問題類似,而雷達數據集會因為各種天氣原因,慢慢的積累、消散或變化,或者快速的積累、消散或變化,所以預測問題也是十分艱難的,其實本身數據還有著大量的雜訊,因為地形等因素造成的。

這裡其實在數據準備階段說的較施行建博士的文章要相對清晰,10000個連續的雷達數據,每6分鐘一個,轉換成圖片並壓縮到100✖100大小,切片序列為20,輸入10,輸出10, 總共9600個序列,其中隨機分到7800為訓練集,1800為測試集,這個方法在時空序列預測問題上很常見,基本上的baseline的程式碼都有這個步驟,如果自己處理整體連續數據的話。

因為降水預測需要實時性,所以這裡把訓練速度以及佔用的記憶體全都列出來了。可以很直觀的看出predrnn的效果確實要較ConvLSTM和VPN baseline要好很多。並且運行速度也不是特別慢(VPN就很慢,因為它的預測是遞歸的,預測下一個時刻,之後再利用預測下一時刻的去預測下下一時刻,比較耗時)
五、Conclusions
1.提出了一個新的端到端結構PredRNN2.提出了新的LSTM結構,ST-LSTM,並作為PredRNN的basic building blocks3.得到了最好的結果在時空序列預測數據集以及問題上
又不知不覺,碼了8k多字,不為了別的,就為了簡單、通俗、易懂、全面,共勉!