關於輸入爲graph的CNN:Graph CNN

大千世界,所有可見的數據可分爲兩類:Euclidean Data & Non-Euclidean Data。

目前在Deep Learning的範疇裏,CNN和RNN的世界裏,廣泛應用的images,sentences,waves,等等,都屬於Euclidean data。歐式數據,直觀理解爲具有工整(柵格化的:grid-like)對稱性的數據。

然而,網絡的概念在現實生活中也是普遍存在的。社交網絡,航路網,蛋白質分子聯繫網,等等等等。注意,這些網絡常常是不對稱的,即每個節點的degree(neighbor數量)是不確定的,數據是不工整的。網絡的數學描述是通過圖論的理論,即用網絡的邊和頂點來描述頂點之間的連接關係。

那麼問題就來了。傳統ConvNet在Euclidean data上的卷積操作,是完全對稱的工整的。一個3*3的Conv filter,就是一個九宮格,要求每個pixel都有8個工整的neighbor(拋去邊沿效應)。

因此,CNN可以很好地在image這種euclidean的數據上進行feature learning & extraction。可是,如果input是不工整的graph時,該怎麼辦呢?該怎麼繼續使用CNN來提graph裏含有的特徵呢?

這就引出了Graph CNN的理論,即可以在graph數據上操作的CNN。

好。對於GCNN,我們的期待也很簡單。給你輸入一個graph,你用某種filtering的操作,給我把這個input graph刷一遍,刷出一個output graph來。

對於euclidean data例如image input,filtering操作是很直觀的,是一種按順序不斷重複的convolution計算。而這個順序,也因由其grid屬性,而異常簡單。

可是對於graph,無法簡單地重複地操作convolution,因爲數據的不對稱性,滑窗位置的不可重複性。

所以,對graph做CNN操作,首先要將不是euclidean的spatial域(頂點域),轉換到spectral域(頻域)。期待在頻域中,非euclidean的事物就變得euclidean了。

這就引出了GCNN的一個分支,就是spectral methods(頻域方法)

簡單說,頻域方法的本質動機就是把頂點域的卷積轉化爲頻域裏的乘積再求逆傅里葉變換。

上述顯式地計算頻域變換的方法包括SCNN和ChebNet,然而這些方法的計算代價太大。

一個很好的簡化solution就是GCN(Graph Convolution Network)《Kipf ICLR2017》:

另一種更泛化的策略,就是spatial methods。image上用的普通CNN,就是屬於spatial method CNN,即在原輸入的空間(pixel空間)中直接卷積。

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