首先,容我吐槽一下這篇論文的行文結構、圖文匹配程度、真把我搞得暈頭轉向,好些點全靠我猜測推理作者想干嘛,😈
背景
我們知道傳統的CNN針對的是image,是歐氏空間square grid,那么使用同樣square grid的卷積核就能對輸入的圖片進行特征的提取。在上一篇論文中,使用的理論是頻域卷積(Spectral-domain),背后理論有點復雜。
這篇文章則從空域卷積(Spatial-domain)角度出發,直觀上十分容易理解。
作者是這樣想的:我們的image的一個個像素格子,可以看成規則的graph的結點,而在卷積的時候,當卷積核移動到如下位置(虛方框),我們可以將綠色點看成中心點,卷積則變成了將綠色中心點以及其一階鄰居同卷積核對應空間順序的node,進行加權求和。進行類比,如下圖右邊,我們怎么設計一個合理的圖卷積核呢?倘若設計合理,那么CNN的成熟理論便能借鑒過來使用
類比關鍵點
我們想要進行類比,首先的幾個特點觀察CNN:
中心點鄰居個數
將image各個小格子像素看成graph中的node之后,這個graph是規整的,我們在圍繞中心點(如上圖綠點)卷積,當CNN中設計好stride和padding之后,CNN角度的卷積過程——>可以看作——>不斷圍繞中心點以及其一階鄰居進行加權求和。而且移動中心點之后,其一階鄰居個數均相同,這樣帶來的好處就是卷積核的node可以固定下來(即感受野范圍可以固定)
但是,我們給的任意圖,選好一些中心點之后,每個中心點的鄰居個數各不相同。所以會出現當卷積核感受野范圍確定了,但是只能在圖中的一些中心點使用的問題,不能全局使用。
猜測:那是不是可以對鄰居個數不夠(或太多)的做padding增加(或cropping削減)操作呢?
中心點鄰居順序
在CNN進行卷積操作的時候,卷積核參數和image上感受野上的像素值是有一定空間對應關系的。好比\(3*3\)圖片值,排列成1-9,同對應的卷積核1-9序號加權求和。
可是,我們的graph並沒有結點的排列順序,所以,在實現卷積之前,需要對中心結點+鄰居結點,進行一定的排序
猜測:使用一個\(funtion\)將鄰居進行排序?
其實上述還有個問題,就是中心點的選擇,將CNN類比成graph之后,可以看見並不是每一個node都是中心點,所以圖卷積也一樣,需要先選定一些中心點(比如選前\(w\)個度較大的)
同時當我們將實現graph上的一層卷積之后,得到的數據就成了同CNN種一致的\(n\)維數據,至此以后,便能使用CNN中使用的手段繼續往后操作
上圖,就是圖的一層卷積的大致實現步驟
- 第一層是在graph中選擇\(w\)個中心點(紅色)
- 第二層是選擇每個中心點的\(k\)個鄰居
- 第三層是將上述每一個中心點以及其鄰居通過一個\(function\)進行排序,同卷積核對應位置進行加權求和實現一層卷積
論文內容
作者針對上面兩個問題,提出將以下幾個步驟解決來解決:
- Node Sequence Selection:將graph結點進行(簡單理解按照度?)排序,選擇前\(w\)個結點作為中心點
- Neighborhood Assembly:將上一步選擇的\(w\)中心結點,分別找它們的一階鄰居(或者數量不夠則二階鄰居)選擇前\(k\)個當作該中心點的卷積操作時的鄰居
- 有了以上兩個步驟,就分別有了\(w\)個團(即\(w\)個中心結點)
- Graph Noermalization:將得到的\(w\)個團進行正則化,包括對鄰居進行排序,鄰居太多了則cropping,太少了則padding dummy node等
- Convolutional Architecture:然后將上述\(w\)個團,包含點和邊的特征進行拼接,目的是拼接成規整的特征形式,方便后續的直接使用CNN的方法(可詳見后面示意圖)
Node Sequence Selection Alg.1
中心結點選擇算法
其中\(labeling\) \(procedure\) \(l\)是用於對結點排序的一個\(function\),其設計目的:結構角色相同的兩個結點,在各自圖(graph)中應該得到相近的“標簽”。\(w\)是中心結點個數(如果個數不夠,則添加 \(dummy node\)),\(k\)是感受野,即鄰居個數。這個function的設計其實是論文的核心,不過作者沒給出具體形式(NP-Hard),給了兩個定理,也沒咋看明白,不細說
第6行是,選擇中心結點鄰居並正則化(涉及Alg.2和 Alg.3)
Neighborhood Assembly Alg.2
中心結點的鄰居選擇算法
是通過BFS完成的,\(k\)是鄰居個數,一階鄰居不夠則遍歷二階鄰居...
Graph Noermalization Alg.3
主要對鄰居結點個數的正則化,處理個數太多或太少情況,即第三行算法 Alg.4
Graph Noermalization Alg.4
鄰居結點的正則化,進行padding 和 cropping 操作
Convolutional Architecture
上述幾個過程的總體流程如下:
那么,我們現在基本就解決了文初的兩個問題,感受野確定了,卷積核也可在全圖上使用,那么就能同CNN一樣,實現圖上卷積了:
如上圖所示,因為共\(w\)個中心點,即有\(w\)個感受野需要卷積,將上圖每塊感受野的node和edge分別使用向量表示(通過\(label function\)我們已經有了每個感受野中node的序號)。其中一層的扁平的是node信息(四個結點,每個結點特征\(a_{n}\)維),正方體是edge信息(邊同樣\(a_{n}\)維)
好,那么類比CNN,卷積進一步如下:
其中,粉紅方塊就是卷積核,綠色即通過一次卷積之后得到的。如果\(stride=4\),則每個灰色小方塊恰為一個感受野:
經過這么一次的卷積,得到的數據已經同CNN無異了,正式從非歐數據轉成了歐數據,后續可繼續設計
參考
https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1605.05273v2.pdf
https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1605.05273v2.pdf