1. 程式人生 > 實用技巧 >論文筆記《Spatial-Temporal Synchronous Graph Convolutional Networks》

論文筆記《Spatial-Temporal Synchronous Graph Convolutional Networks》

論文筆記《Spatial-Temporal Synchronous Graph Convolutional Networks》

目錄

Chao Song, Youfang Lin, Shengnan Guo, Huaiyu Wan*. Spatial-Temporal Synchronous Graph Convolutional Networks: A New Framework for Spatial-Temporal Network Data Forecasting. Proc. of the 34th AAAI Conference on Artificial Intelligence (AAAI), 2020. (CCF A)

回顧下前面的這篇文章論文筆記《Attention Based Spatial-Temporal Graph Convolutional Networks for Traffic Flow Forecasting》

在這篇文章中存在一個問題,即模型中的時空圖卷積塊(GCN+Conv 部分)先在空間維度圖卷積,再在時間維度一維卷積,這樣的分步操作並沒有實現時空相關性的同步捕獲。所以,本篇文章重點解決這個問題。

1. Introduction


首先,需要明確在時空網路中的節點的三類依賴關係。之所以會存在這三類依賴關係,是因為時空網路的資訊分別在時間和空間維度同時傳遞。

  • 在同一時間片中,鄰居節點與特定點的依賴關係(棕色箭頭)
  • 在不同時間片中,特定點對其自身的依賴關係(藍色箭頭)
  • 在不同時間片中,鄰居節點對特定點的依賴關係(綠色箭頭)

其次,明確現有模型存在的問題。

  • 多數模型都只直接捕獲了前兩種依賴關係,然後通過將空間表徵喂入到針對時間維度建模的模組中,以捕獲第三種依賴關係,並不是同時捕獲的。
  • 時空網路資料通常在時間維/空間維具有異質性,例如在城市路網中,居住區和商業區在不同時刻常具有不同觀測特徵,但是以往的模型針對不同時間 共享模型結構,這樣一來不能很好地捕獲異質性

最後,明確本文思路。

  • 構造了區域性時空圖,它將相鄰時間步長的單個空間圖連線成一個圖
  • 設計Spatial-Temporal Synchronous Graph Convolutional Module (STSGCM) 模組,用以提取區域性時空圖的時空相關性。
  • 設計Spatial-Temporal Synchronous Graph Convolutional Layer (STSGCL) 層,即在不同時間段部署多個STSGCM,用以捕獲長程時空網路資料的異質性。
  • 堆疊多個STSGCL 以聚合長程時空關係和異質性,並得到最終預測結果。

2. Spatial-Temporal Synchronous Graph Convolutional Network

2.1 Localized Spatial-Temporal Graph Construction

  • 每個時間片的時空網路圖都會有一個區域性空間圖,這個區域性空間圖是由連續3個時間片組成
  • 每個時間片的某節點,不僅有當下時間片的鄰居節點,還有前後兩個時間片的與自身的鄰接關係
  • 形成的區域性時空圖表示節點的屬性,不隨時間變化而變化。

注:這個區域性時空圖是為後續的圖卷積操作服務的,目的是體現各個節點與其多階鄰居的關係,每個節點既有與其同時間步的鄰居,還有前後兩個時間步的自身節點,還有前後兩個時間步自身節點的鄰居節點(二階鄰居)

2.2 Spatial-Temporal Embedding

當將不同時間步的節點放到同一個區域性時空圖中,就模糊了節點在時空維度的屬性。因此,為解決該問題,作者在時空網路序列中新增位置嵌入資訊。

  • 對於每個時空網路序列X g ∈ R N × C × T X_g \in \mathbb{R}^{N\times C\times T}XgRN×C×T,加一個可學習的時間嵌入矩陣T e m b ∈ R C × T T_{emb} \in \mathbb{R}^{C\times T}TembRC×T和空間嵌入矩陣S e m b ∈ R N × T S_{emb} \in \mathbb{R}^{N\times T}SembRN×T,通過廣播機制將兩個嵌入矩陣新增到時空網路序列中,得到新的網路序列表示
  • 這兩個嵌入矩陣是作為引數學習得到的,訓練結束後,這兩個嵌入矩陣將包含時間和空間資訊,從而幫助模型捕獲時空相關性

注:為什麼要進行這步操作呢,是因為剛剛的區域性時空圖,把三個時間片節點的關係都壓到一個矩陣中了,這樣一來圖卷積網路就會把節點看作是等價的,時空資訊被蓋掉了,所以要加個時空嵌入表示的方法區分節點

2.3 Spatial-Temporal Synchronous Graph Convolutional Module

  • 輸入資料為區域性時空圖的鄰接矩陣
  • 接著輸入至圖卷積層中,進行圖卷積操作(基於空域的)
  • 最後進入聚合層(AGG),聚合層的實現分兩步走:聚合(aggregating)和裁剪(cropping)。

Aggregating operation 聚合操作

  • 聚合(aggregating):使用最大池化h A G G = max ⁡ ( h ( 1 ) , h ( 2 ) , … , h ( L ) ) ∈ R 3 N × C o u t h_{A G G}=\max \left(h^{(1)}, h^{(2)}, \ldots, h^{(L)}\right) \in \mathbb{R}^{3 N \times C_{o u t}}hAGG=max(h(1),h(2),,h(L))R3N×Cout,這也解釋了為什麼STSGCM模組的圖中,h ( 1 ) h^{(1)}h(1)到AGG有個跳躍連結的原因。
  • 裁剪(cropping):然後接著上步進行cropping,得到h ( final ) ∈ R N × C out h^{(\text {final})} \in \mathbb{R}^{N \times C_{\text {out}}}h(final)RN×Cout
    (1)為什麼要cropping:如果將多個STSGCMs疊加,又保留所有相鄰時間片的特徵,將會有大量冗餘資訊駐留在模型中,嚴重影響模型的效能。
    (2)僅保留中間時間片的cropping為什麼合理:因為圖卷積運算元已經聚合了前後時間步的資訊,雖然進行裁剪 但每個節點依舊包含了區域性的時空相關性。


2.4 Spatial-Temporal Synchronous Graph Convolutional Layer

論文這個部分實在是太難懂了,結合程式碼就好理解一些,下文結合程式碼說明該層的工作過程。

首先,我們需要明確,為了捕獲長程的時空關係,兩個關鍵:

  • 第一,需要使用一個滑窗來裁剪資料,比如原始的時間序列資料有T個時間段,那還是3個時間片一裁剪,一共能得到 T-2 個裁剪結果。
  • 第二,模型的部署上,需要堆疊多個STSGCM,而不是各個時間段共享一個。(目的是更好捕獲不同時間片資料的異質性)

注意:這裡我在最開始看,將原始資料的滑窗操作和2.1節中的區域性時空圖搞混了,這一步中是對原始的時間序列資料做的滑窗(合併3個相鄰時間片)。

接下來,看看具體的操作:

  • 輸入資料X ∈ R T × N × C \mathbf{X} \in \mathbb{R}^{T \times N \times C}XRT×N×C其中,T TT時間步,N NN節點個數,C CC特徵數
  • 進行position embedding操作,X G + t e m b + s e m b = X G + T e m b + S e m b ∈ R N × C × T X_{\mathcal{G}+t_{e m b}+s_{e m b}}=X_{\mathcal{G}}+T_{e m b}+S_{e m b} \in \mathbb{R}^{N \times C \times T}XG+temb+semb=XG+Temb+SembRN×C×T
  • 滑窗操作(sliding window)以剪裁資料,生成T − 2 T-2T2個時間序列片,使用T − 2 T-2T2個獨立的時空同步圖卷積模組對其分別建模,以捕獲異質性
  • 然後開始迴圈每個區域性時空圖資料(包含3個時間片),維度是(B,3,N,C) B是batch數
  • reshape資料,維度變為(B,3N,C),目的是直接放到stsgcm模組中(2.3節)
  • transpose資料,維度變為(3N,B,C)
  • 經過一個stsgcm(2.3節),維度變為(N, B, C’),filters: list[int], list of C'
  • 再轉換資料維度為(B, 1, N, C’)
  • 最後,將T − 2 T-2T2個的結果連線起來,return的結果是M = [ M 1 , M 2 , … , M T − 2 ] ∈ R ( T − 2 ) × N × C o u t M=\left[M_{1}, M_{2}, \ldots, M_{T-2}\right] \in \mathbb{R}^{(T-2) \times N \times C_{o u t}}M=[M1,M2,,MT2]R(T2)×N×Cout,維度是(B, T-2, N, C’)

最後,介紹三個額外小點:
(1)遮罩矩陣

STSGCN:時空同步圖卷積神經網路用於交通預測
這個遮罩矩陣會在一開始就乘以區域性時空圖的鄰接矩陣,通過訓練不斷地調整其引數,使得鄰接矩陣收斂到一個更合理的值。這麼做的原因是有些結點之間可能在區域性時空圖中有邊,但是這兩個結點之間可能並沒有實際的關聯,或他們的關聯程度很低,有的結點之間關聯程度很高,這個遮罩矩陣就可以在聚合時調節這個關聯性的強弱。

  • 在2.3一節中,能看到鄰接矩陣會影響聚合的效果,但是鄰接矩陣只是由0/1構成,這樣表示的節點間關係就過於限制了(就比如,兩個節點是聯通的,但是他們某一時間段內並沒有相關性,即便這樣它們的特徵也會被聚合,就很雞肋)。
  • 所以,作者加入一個可學習的遮罩矩陣,使聚合效果更合理。A adjusted ′ = W mask ⊗ A ′ ∈ R 3 N × 3 N A_{\text {adjusted}}^{\prime}=W_{\text {mask}} \otimes A^{\prime} \in \mathbb{R}^{3 N \times 3 N}Aadjusted=WmaskAR3N×3N

(2)輸入層在輸入層之前,先加一個全連線層,將輸入轉換為高維空間,提高網路的表示能力。

(3)輸出層

  • 輸出層接收到的輸入資料維度為(T,N,C),經過transpose和reshape將其變為X ⊤ ∈ R N × T C X^{\top} \in \mathbb{R}^{N \times T C}XRN×TC
  • 再放到兩個全連線接層中,y ^ ( i ) = Re ⁡ L U ( X ⊤ W 1 ( i ) + b 1 ( i ) ) ⋅ W 2 ( i ) + b 2 ( i ) \hat{y}^{(i)}=\operatorname{Re} L U\left(X^{\top} W_{1}^{(i)}+b_{1}^{(i)}\right) \cdot W_{2}^{(i)}+b_{2}^{(i)}y^(i)=ReLU(XW1(i)+b1(i))W2(i)+b2(i)
  • 然後我們將每個時間步的預測值拼到一起,形成一個矩陣Y ^ = [ y ^ ( 1 ) , y ^ ( 2 ) , … , y ^ ( T ) ] ∈ R N × T ′ \hat{Y}=\left[\hat{y}^{(1)}, \hat{y}^{(2)}, \ldots, \hat{y}^{(T)}\right] \in \mathbb{R}^{N \times T^{\prime}}Y^=[y^(1),y^(2),,y^(T)]RN×T

(4)損失函式採用Huber loss,該損失函式相對於平方誤差損失,對離群值不敏感。δ \deltaδ是控制平方誤差損失範圍的閾值引數

STSGCN:時空同步圖卷積神經網路用於交通預測
這個損失函式結合了L1和L2兩種損失。因為L1損失在原點處不可微,對於一些模型的優化會造成困難,所以將原點附近替換為L2損失,其他地方繼續使用L1損失。而且L2損失由於平方的存在,會使得一些異常值或者離群值造成的損失更大,使模型過多地關注他們,相比之下L1損失更平滑一些,訓練出來的模型更魯棒。

L ( Y , Y ^ ) = { 1 2 ( Y − Y ^ ) 2 ∣ Y − Y ^ ∣ ≤ δ δ ∣ Y − Y ^ ∣ − 1 2 δ 2 otherwise L(Y, \hat{Y})=\left\{

12(YŶ)2δ|YŶ|12δ2|YŶ|δotherwise12(Y−Y^)2|Y−Y^|≤δδ|Y−Y^|−12δ2otherwise \right.L(Y,Y^)={21(YY^)2δYY^21δ2YY^δotherwise

現在再重新看一下整個模型,能稍微清楚一點。

3. Experiments

3.1 Datasets

  • 在PEMS資料集上構造了4個子集
  • 每5分鐘聚合一次資料,每個時間步表示該5分鐘內的車流量,這樣1小時就有12個時間步
  • 目標是歷史12步,預測未來12步
  • 每個資料集的空間網路是根據實際的道路網路構建的。如果兩個監視器在同一條路上,則認為這兩點在空間網路中是連線的。

3.2 Experiment Settings

  • 訓練集:驗證集:測試集 = 6:2:2
  • 實驗完成10次並取均值和標準差
  • STSGCN的超引數是4個STSGCL層,每層的STSGCM有3個圖卷積操作,每個圖卷積操作使用64個卷積核

3.3 Component Analysis

作者用過驗證不同變體模型,在PEMS03資料集上的效果,判斷各元件對於模型整體效能的影響。

  • basic:沒有時空embedding;沒有遮罩矩陣;使用ReLU作為啟用函式;每個STSGCL只有一個STSGCM模組,並且在每個時間段都是共享的;輸出層與ASTGCN的輸出層相同,只是使用帶有12個過濾器的卷積層來生成預測。
  • multi-module:STSGCM獨立,不共享。
  • GLU:啟用函式用GLU。
  • +emb:啟用函式用GLU,加入時空嵌入。
  • +mask:啟用函式用GLU,加入時空嵌入,加入全域性遮罩矩陣。
  • reshape-output:採用本文結構的輸出層。
  • STSGCN:最終的模型。

結論:

  • GLU啟用函式的效能優於ReLU啟用函式。原因是GLU的引數大小是ReLU的兩倍,因此其更大的容量使其能夠捕獲複雜的時空相關性。與ReLU相比,它的輸出控制更加靈活。
  • 每個時間段配備單獨STSGCM的模型(individual STSGCMs)比共享的STSGCM(shared STSGCM)效果更好,說明了對時空網路資料的異質性建模的必要性。注 此部分需要對照程式碼
  • 時空嵌入能提升效能
  • 遮罩矩陣對提升效能有一點幫助

STSGCN:時空同步圖卷積神經網路用於交通預測
這些元件在MAE和MAPE上都有明顯的效能提升,但是RMSE上的提升沒有那麼明顯,這也是為什麼在PEMS07上RMSE指標不如DCRNN模型。不過影響RMSE指標沒有提升的原因有很多,可能和損失函式有關,還需要具體的論證。