從3/4層拓展到56層,如何訓練超級深層的圖卷積神經網絡?

本文來自“深度推薦系統”專欄,這個系列將介紹在深度學習的強力驅動下,給推薦系統工業界所帶來的最前沿的變化。本文主要介紹一篇ICCV 2019 Oral上的論文[1],在 CNN 結構的啓發下成功將 GCN 的可訓練深度從 3/4 層拓展到了 56 層,大幅度提高了圖卷積網絡的性能,並開源了源代碼。

摘要

卷積神經網絡(CNN)在各種領域取得了令人矚目的成果。他們的成功得益於能夠訓練非常深的CNN模型的巨大推動力。儘管取得了積極的成果,但CNN未能正確解決非歐幾里德數據的問題。

爲了克服這一挑戰,利用圖卷積網絡(GCN)構建圖來表示非歐幾里德數據,並借用CNN的相關概念並應用它們來訓練這些模型。GCN顯示出不錯的結果,但由於梯度消失問題,它們僅限於非常淺的模型。因此,大多數最新型的GCN算法都不會超過3或4層。

作者提出了成功訓練非常深層的GCN的新方法。他們借用CNN的概念,主要是residual / dense connections(殘差、密集連接) 和 dilated convolutions(膨脹卷積、擴張卷積、空洞卷積) ,使它們能夠適應GCN架構。

  • residual / dense connections:解決由網絡加深導致的梯度消失問題
  • dilated convolutions:解決由於pooling而導致的空間信息丟失,把卷積核膨脹了,增大了感受野,但沒有增加參數數量

作者通過大量實驗,展示了這些深層GCN框架的積極的效果。最後,使用這些新概念構建一個非常深的56層的GCN,並展示它如何在點雲語義分割任務中顯著地提升了效果(相當於最先進的3.7%mIoU|均交併比)。

背景介紹

GCN網絡在近幾年發展迅猛。目前用於預測社交網絡中的個體關係、提高推薦引擎的預測、有效分割大規模點雲等領域。CNN的成功的一個關鍵因素是能夠設計和訓練非常深層的網絡模型。但是,現在還不清楚如何恰當地設計非常深層的GCN結構。

有一些研究工作研究了深度GCN的限制因素,堆疊多層圖卷積會導致常見的梯度消失的問題。這意味着通過這些網絡的反向傳播會導致過度平滑(over-smoothing),最終導致頂點的特徵收斂到相同的值。由於這些限制,大多數最先進的GCN不超過4層。

梯度消失在CNNs中並不是一個陌生的現象。它們也對此類網絡的深度增長提出了限制。

  • ResNet在追求非常深的CNN方面向前邁出了一大步,因爲它引入了輸入層和輸出層之間的殘差連接(residual connection。這些連接大大減輕了消失梯度問題。今天,ResNet可以達到152層及以上。
  • DenseNet提供了一個擴展,引入了 across layers。更多的層可能意味着由於pooling而導致更多的空間信息丟失。這一問題也通過Dilated Convolutions(擴張/膨脹卷積)來解決。

這些關鍵概念的引入對CNN的發展產生了實質性的影響,相信如果能很好地適應GCN,它們也會有類似的效果。

方法論

Residual Learning for GCNs

在最初的圖形學習框架中,底層映射 H(以圖形爲輸入並輸出一個新的圖形表示)是需要學習的。受 ResNet 啓發,作者提出了一個圖的殘差學習框架,通過擬合另一個殘差映射 F 來學習所需的底層映射 H 。在 通過殘差映射 F 變換了後,進行逐點加法得到 。殘差映射 F 把一個圖作爲輸入併爲下一層輸出一個殘差圖的表示。在實驗中,作者將這個殘差模型稱爲ResGCN

Dense Connections in GCNs

DenseNet中提出了一種更有效的方法,通過密集的連接來改進信息流並重用層之間的特徵。在DenseNet的啓發下,文中採用了類似的思想到GCN中,以利用來自不同GCN層的信息流。也就是說,包含了來自以及之前的所有GCN層的轉換。在實驗中,作者稱之爲DenseGCN

Dilated Aggregation in GCNs

爲了減輕由池化聚集操作造成的空間信息損失,擴展卷積(dilated convolutions)被提出作爲一種對連續池化層的替代選擇。爲dilation擴大感受野的同時沒有失去分辨率。作者認爲dilation也有助於GCN的感受野。

因此,他們將擴張聚合(dilated aggregation)引入到GCN中。有許多可能的方法來構建一個擴張的鄰居。他們在每一個GCN層後使用一個Dilated k-NN去尋找擴張鄰居並構建了一個擴張圖(Dilated Graph)。爲了得到更好的推廣,作者在實踐中還使用了隨機擴張(stochastic dilation)。

實驗

論文中提出了ResGCNDenseGCN來處理GCN的梯度消失問題。爲了獲得一個大的感受野,他們還定義了一個擴張的GCN圖卷積(dilated graph convolution)。爲了驗證作者的框架,他們對大規模點雲分割任務進行了大量的實驗,並證明他們的方法顯著提高了性能和效果。

作者設計了一個包含上述所有成分的深度GCN來研究它們的實用性。他們選擇三維點雲的語義分割作爲一個應用,並在Stanford Large-Scale 3D Indoor Spaces Dataset (S3DIS,斯坦福大規模三維室內空間數據集)上顯示了結果,該數據集包含來自三個不同建築的六個區域的三維點雲。這個數據集在6000平方米的區域內總共包含695878620個點,並用13個語義類進行註釋。

網絡結構

如下圖所示,實驗中的所有網絡結構都有三個塊(a GCN backbone block, a fusion block and an MLP prediction block)。GCN backbone block是實驗中唯一不同的部分。例如,PlainGCN和ResGCN之間的唯一區別是,作者向ResGCN中的所有GCN層添加了residual skip connections。PlainGCN和ResGCN具有相同數量的參數。同樣,DenseGCN是通過在PlainGCN中添加稠密的圖連接和dynamic dilated k-NN來構建的。

而fusion block和MLP prediction block保持一致,以便所有架構進行比較。fusion block用於融合全局和多尺度局部特徵。它將從每個GCN層的GCN backbone block中提取的頂點特徵作爲輸入,並連接這些特徵,然後將它們通過1×1卷積層和最大池化層。最大池化層將整個圖的頂點特徵聚合爲全局特徵向量。然後重複全局特徵向量,並將其與所有先前GCN層的所有頂點特徵連接起來,以融合全局和局部信息。

MLP prediction block以融合特徵作爲輸入,應用三個MLP層對各點進行分類預測。在實踐中,MLP層實現爲1×1卷積層。

實驗結果

作者將重點放在殘差圖連接(residual graph connections)上進行分析,因爲ResGCN-28更易於訓練,速度更快。該網絡包含了方法論章節中提出的想法,作者將此網絡(ResGCN-28)與下表中的幾個最新baseline進行了比較。實驗結果表明:ResGCN-28比最先進的高出近4%,而且,文中的網絡在13個類中有9個類超過了所有baseline,顯示的指標是總體精度(OA)和平均IoU(MIoU)。

小結

作者研究瞭如何將已證實的有用概念(residual connections, dense connections 和 dilated convolutions)從CNN引入GCN,並回答了以下問題:如何使GCN更深?

大量實驗表明,在GCN中加入skip connections,可以減輕訓練難度,這是阻礙GCN進一步發展的主要問題。此外,dilated graph convolutions有助於在不損失分辨率的情況下獲得更大的感受野。即使只有少量的近鄰,深度GCN也能在點雲分割上獲得較高的性能。儘管ResGCN-56只使用8個最近的鄰居,而ResGCN-28使用16個鄰居,但它在這項任務中的表現非常出色。

實驗表明,能夠在80個epochs內訓練151層的GCN;網絡融合得很好,取得了與ResGCN-28和ResGCN-56相似的結果,但只有3個最近的鄰居。由於計算上的限制,無法詳細研究如此深入的體系結構,並將其留給將來的工作。

最後附上論文一作李國豪在知乎上的回答[2]:

目前常見的圖卷積神經網絡一般都是 3、4 層,我們關注的問題是圖卷積神經網絡 GCN/GNN 是否也能和一般的卷積神經網絡 CNN 一樣加深到 50+層而不會有 Vanishing Gradient 問題,我們提出了 ResGCNs,DenseGCNs 和 Dilated GCN,MRGCN 等結構,甚至能訓練收斂 152 層 GCN,並在點雲分割任務上取得了比較好的效果。

以及論文開源代碼:

TensorFlow:https://github.com/lightaime/deep_gcns

PyTorch:https://github.com/lightaime/deep_gcns_torch

參考

1. Deep GCNs: Can GCNs Go as Deep as CNNs?

2. 論文原作者知乎樓層:https://www.zhihu.com/question/336194144/answer/761770679

本文授權轉載自知乎專欄“深度推薦系統”。原文鏈接:https://zhuanlan.zhihu.com/p/86352650

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章