膠囊網絡(CapsNet)
卷積網絡(CNN)的目標識別
-
卷積神經網絡首先學會識別邊界和顏色,然后將這些信息用於識別形狀和圖形等更復雜的實體。比如在人臉識別上,他們學會從眼睛和嘴巴開始識別最終到整個面孔,最后根據臉部形狀特征識別出是不是人的臉。
-
卷積網絡對不同人臉的識別
{% gp 1-3 %}
{% endgp %}
深度卷積網絡的缺陷
- CNN 對物體之間的空間關系 (spatial relationship) 的識別能力不強,比如上圖中的嘴巴和眼睛換位置了還被識別成人
- CNN 對物體旋轉之后的識別能力不強 (微微旋轉還可以),比如卡戴珊倒過來就被識別成頭發了
基於以上缺陷,Hinton在神經網絡中提出capsule的概念,個人認為也可以叫做向量神經元,capsule不同於傳統的標量神經元,而是向量神經元,具有方向性。
參考文獻:Sabour, S., et al. (2017). Dynamic routing between capsules. Advances in neural information processing systems.
標量神經元與向量神經元
標量神經元的計算:
- 將輸入標量 x 乘上權重 w
- 對加權的輸入標量求和成標量 a
- 用非線性函數將標量 a 轉化成標量 h
向量神經元的計算:
- 將輸入向量 u 用矩向量W 加工成新的輸入向量 U
- 將輸入向量 U 乘上耦合系數 C
- 對加權的輸入向量求和成向量 s
- 用非線性函數將向量 s 轉化成向量 v
]
膠囊的內部結構
-
膠囊的輸入向量和輸出向量計算公式
其中,v代表膠囊j的輸出向量,s代表膠囊的輸入向量,這個轉化其實是將向量s進行一個壓縮和單位化的操作。
-
壓縮:如果s很長,那么左邊項約等於1,如果s很短,那么左邊項約等於0
-
單位化:使輸出向量長度為0到1之間的向量,因此長度可以表示為特征概率值
層級膠囊的動態路由
-
膠囊的映射方式
u是上一個膠囊層的輸出向量,w是連接兩個膠囊層的向量權重,\(u_{j|i}\) 是上一層的神經元經過權重后的預測向量,\(c_ij\)是不同層向量元的耦合系數,s為本層的膠囊向量的輸入,也是預測向量的加權和,只不過權重變成了耦合
系數,並不是標量元里面的權重值 -
動態路由系數計算
-
層級膠囊路由的偽代碼
數字的邊際損失函數
利用向量的長度來表示capsule 實體存在的概率,因此,對於數字類別k,希望高層次的capsule 能夠有一個較長的輸出向量,對於每個digit capsule k:
膠囊網絡的結構
- 第一層卷積層:原始圖像輸入size為2828,采用大小為9的卷積核生成256個通道的特征圖,並且用relu作為激活函數輸出大小為25620*20的特征圖
- 第二層卷積層(PrimaryCaps):輸入的特征圖大小為2562020,每個PrimaryCaps通過8個99大小卷積核,strid為2獲得,一共輸出32個PrimaryCaps,即每個PrimaryCaps有66個維度8D的膠囊單元,不同的map代表不同的特征類型,
同一個map中的向量代表不同的位置 - 第三層DigitCaps對第二層所有的膠囊進行動態路由連接到第三層,第二層一共3266個8D向量通過動態路由連接成10個16D的膠囊向量,相當於采用不同參數對第二層所有向量進行10次變維度映射。
重構
重構的意思就是用預測的類別重新構建出該類別代表的實際圖像。
Capsule的向量可以表征一個實例,將最后的那個正確預測類別的向量投入到后面的重構網絡中,可以構建一個完整的圖像,從而可以通過重建圖像與原圖像的歐式距離來評估此模型分類的效果,更能說明膠囊網絡中向量神經元具有的優
越性,圖中的784即為原始圖像的28*28大小。
重建作為調整方法
- L代表標簽,p代表預測值,r重構出的圖片,左邊三列是正確的結果。
- 重構出來的圖像形狀和位置和輸入極其類似,這是說明膠囊網絡起了作用,Capsule的確包含了物體的多個信息:特征、位置、大小等等。
- 后面兩列是預測失敗的,通過重構出來的圖我們可以得到原因:3和5太像了,即使人也很難清楚的分辨出來。
膠囊網絡的一些應用
- 可以利用膠囊向量的方向性進行物體角度估計,從而可以 彌補卷積網絡在這方面的缺陷
- 可以對重疊圖像中的特征進行有效識別
- 利用膠囊網絡進行手語的識別,膠囊網絡善於提取不同物體的角度信息,從而可以分辨不同角度的手勢,為自動手語翻譯提供很好的幫助
膠囊網絡推薦文章
- Sabour S, Frosst N, Hinton G E. Dynamic routing between capsules[C]//Advances in neural information processing systems. 2017: 3856-3866.
- Hinton G E, Krizhevsky A, Wang S D. Transforming auto-encoders[C]//International Conference on Artificial Neural Networks. Springer, Berlin, Heidelberg, 2011: 44-51.
- Hinton G. Taking inverse graphics seriously[J]. 2013.
圖神經網絡(Graph Neural Network)
圖模型的相關概念
- 圖是一種非結構化數據,作為一種非歐幾里得形數據,圖分析被應用到節點分類、鏈路預測和聚類等方向。圖網絡是一種基於圖域分析的深度學習方法。
- 圖表示(graph embedding)是一種圖的知識表示方法,即如何將圖中的節點、邊和子圖以低維向量的形式表現出來。受啟發於表示學習(representation learning)和詞嵌入(word embedding),圖嵌入技術得到了長足的發展,例>如DeepWalk模型。
圖神經網絡的分類
不同的文獻對圖神經網絡有不一樣的分類,不過基本都是根據各自的特性來進行分類的
- 文獻1根據圖模型結構:
Directed Graphs、Heterogeneous Graphs、Graphs with Edge Information
Zhou J, Cui G, Zhang Z, et al. Graph neural networks: A review of methods and applications[J]. arXiv preprint arXiv:1812.08434, 2018. - 文獻2根據聚合函數:
graph convolution networks、graph attention networks、graph auto-encoders、graph generative networks、graph spatial-temporal networks
Wu Z, Pan S, Chen F, et al. A comprehensive survey on graph neural networks[J]. arXiv preprint arXiv:1901.00596, 2019.
圖模型結構
- 在圖中,每個節點的定義是由該節點的特征和相關節點來共同表示的。GNN的目標是訓練出state embedding函數hv,該函數包含了每個節點的鄰域信息
\(h_v\)是節點v的向量化表示,可以用來預測該節點的輸出\(o_v\)(例如節點的標簽),\(x_v\)是節點v的特征表示,\(x_c_0\)是節點v相關的邊的特征表示,\(h_ne\)節點v相關的當前狀態,\(x_ne\)是節點v鄰接節點的特征表示,f是local transition function,被所有節點共享,根據領域信息更新當前節點裝填 - g被稱作local output function,用來產生節點輸出,實現分類或者回歸任務
圖模型損失函數
p代表圖中所有有監督節點的數量。優化是基於梯度下降算法的,並且被表示如下:
- H進行迭代更新,直到T時間步
- 權重W的梯度通過loss計算得出
- 進行梯度更新
圖模型類型(Graph Types)
- 有向圖(Directed Graphs)
- 傳統的無向邊可以看作是兩個有向邊組成的,表明兩個節點之間存在着關系。然而,有向邊相對與無向邊來說能夠表達更為豐富的信息
- 異構圖(Heterogeneous Graphs)
- 包含有不同類型的幾種節點,表現不同類型節點最簡單的形式是,將類型用one-hot向量表示,然后與原始節點的特征向量進行拼接
- Graph Inception模型將metapath的概念引入到了異構圖的傳播中。我們可以對鄰近節點進行分類,根據其節點的類型和其距離。對於每個鄰近節點群,Graph Inception將它作為一個同構圖中的子圖,並將來自於不同同構圖的傳>播結果連接起來視為一個集合節點來表示
- 帶有邊信息的圖(Graphs with Edge Information)
- 在圖中,邊也蘊含着豐富的信息,例如權重和邊的類型等。有兩種表示圖的方式:
- 兩個節點之間的邊切割開成兩條邊,然后將邊也轉化成節點
- 在傳播過程中,不同的邊上有不同的權值矩陣
- 在圖中,邊也蘊含着豐富的信息,例如權重和邊的類型等。有兩種表示圖的方式:
傳播類型(Propagation Types)
- 在模型中,信息的傳播步驟和輸出步驟是獲得節點或者邊隱含狀態的關鍵步驟。不同變種的GNN的聚合函數(用來聚合圖中所有點的鄰域信息,產生一個全局性的輸出)和節點狀態更新函數如下圖所示,其中常見的就是卷積聚合函數和
注意力聚合函數:
- Attention:GAT是一種注意力圖網絡,它將注意力機制融入到了圖傳播的步驟中。GAT計算每個節點的隱藏狀態,通過將 “attention” 機制應用到鄰近節點上,從而可以通過不同的關注力對鄰接節點信息進行聚合
- 除此之外還有Gate和Skip connection傳播類型,各自有不同的功能
訓練方法(Training Methods)
論文中還介紹了幾種GNN的訓練方法。比如Graph SAGE從節點的部分鄰域聚合信息。Fast GCN采用樣本采樣方法替代節點的所有鄰域信息。其宗旨都是為了改進圖模型計算復雜這一缺點,這些訓練方法,都使得模型的訓練效率更加的高效
,隨機丟棄一些鄰域點還能使圖模型的魯棒性增
應用(APPLICATIONS)
圖網絡被廣泛的應用於包括監督學習、半監督學習、無監督學習和強化學習等方向。論文中從三個不同的場景來分別闡述圖網絡的應用。
-
結構化場景:數據包含有很明確的關系結構,如物理系統、分子結構和知識圖譜。
-
非結構化場景:數據不包含明確的關系結構,例如文本和圖像等領域。
-
其他應用場景:例如生成式模型和組合優化模型。
各個領域圖網絡的應用細節如下圖所示:
推薦文獻
- Kipf, T. N. and M. Welling (2016) Semi-Supervised Classification with Graph Convolutional Networks. ArXiv e-prints
- Scarselli, F., et al. (2009). "The Graph Neural Network Model." IEEE Transactions on Neural Networks 20(1): 61-80.
- Veličković, P., et al. (2017) Graph Attention Networks. ArXiv e-prints
- Ying, R., et al. (2018) Graph Convolutional Neural Networks for Web-Scale Recommender Systems. ArXiv e-prints
- Bruna, J., et al. (2013) Spectral Networks and Locally Connected Networks on Graphs. ArXiv e-prints
膠囊圖神經網絡(Capsule Graph Neural Network)
圖卷積網絡(GRAPH CONVOLULTIONAL NETWORK)
T是信息變換矩陣,是通過鄰接矩陣變換得來,大小N*N,w是節點向量維度變換矩陣
CapsGNN模型結構
- Block1:基本節點膠囊提取模塊,利用GCN原理生成當前時刻節點狀態,作為膠囊向量,向量長度為N
- Block2:高級圖膠囊提取模塊,融合了注意力模塊和動態路由,以生成多個圖膠囊
- Block3:圖分類模塊,再次利用動態路由,生成用於圖分類的類膠囊
基本節點膠囊提取模塊
高級圖膠囊提取模塊
注意力機制的目的:讓模型更加注重圖中更重要相關的節點或者鄰域信息
將初始膠囊的每一個節點的所有通道的d維向量進行concat,生成第二個圖的向量,利用注意力函數F計算出注意力值矩陣,然后對每一行進行歸一化,得到每個通道不同節點的注意力值的歸一化值,然后與原來初始膠囊相乘,可以得到>帶有不同注意力的膠囊向量組
公式如下:
計算投票:對注意力機制生成的膠囊向量矩陣進行投票計算,其實是用一個可訓練的權重矩陣對整個膠囊向量進行多次計算,最后生成P個圖膠囊,每一個圖膠囊都是對整個圖的不同角度的觀察,然后利用路由機制生成下一層的圖膠囊。
圖分類模塊
運用動態路由思想,繼續將P個圖膠囊路由成C個類別的分類膠囊
利用分類損失函數進行梯度下降,訓練整個模型
重建
重建損失,將分類好的膠囊向量通過多層全連接可以重建原數據,如果是圖像,那么可以重建圖像,並且根據重建損失來進行全連接的訓練,其目的在於可以對最終分類的效果進行可視化,而不是簡單給出一個概率值,有利於模型的整>體評估。
結果
- 提升了圖模型的分類正確率
- 提升了圖模型的效率,用更少的節點可以描繪更多的信息
- 能夠通過圖膠囊捕捉到更多圖模型的屬性信息
參考文獻
- Zhang Xinyi, L. C. (2019). "Capsule Graph Neural Network."
演講ppt下載
參考ppt下載:圖模型ppt