以下內容來自 https://zhuanlan.zhihu.com/p/37091549
為什么有圖卷積神經網絡(引言,可跳過)
自2012年以來,深度學習在計算機視覺以及自然語言處理兩個領域取得了巨大的成功。和傳統方法相比,它好在哪里呢?
假設有一張圖,要做分類,傳統方法需要手動提取一些特征,比如紋理,顏色,或者一些更高級的特征。然后再把這些特征放到像隨機森林等分類器,給一個輸出標簽,告訴它是哪個類別。而深度學習是輸入一張圖,經過神經網絡,直接輸出一個標簽。特征提取和分類一步到位,避免了手工提取特征或者人工規則,從原始數據中自動化地去提取特征,是一種端到端(end-to-end)的學習。相較於傳統的方法,深度學習能夠學習到更高效的特征與模式。
卷積神經網絡很好,但是它研究的對象還是限制在Euclidean domains的數據。什么是Euclidean data? Euclidean data最顯著的特征就是有規則的空間結構,比如圖片是規則的正方形柵格,比如語音是規則的一維序列。而這些數據結構能夠用一維、二維的矩陣表示,卷積神經網絡處理起來很高效。
但是,我們的現實生活中有很多數據並不具備規則的空間結構,稱為Non Euclidean data。比如推薦系統、電子交易、計算幾何、腦信號、分子結構等抽象出的圖譜。這些圖譜結構每個節點連接都不盡相同,有的節點有三個連接,有的節點有兩個連接,是不規則的數據結構。
下面結合兩個典型的業務場景來說明什么是圖:
社交網絡非常適合用圖數據來表達
上面的圖譜刻畫社交網絡中各個節點以及它們之間的關系,用戶A、用戶B、帖子都是節點,用戶與用戶之間的關系是關注,用戶與帖子之間的關系可能是發布或者轉發。通過這樣一個圖譜,可以分析用戶對什么人、什么事感興趣,進一步實現推薦機制。
電商場景中的圖譜
在電商中,我們首先可以想到的關鍵節點就是,用戶、交易和商品。用戶關聯的節點比如會有注冊地址、收獲地址等;交易會關聯到商品、收貨地址、交易IP等、商品會關聯類目等。這些節點之間的關系,比如用戶除了可以通過交易購買商品,還可以對商品進行評分。這樣的圖數據我們可以用來做兩件事情,一是推薦、二是反欺詐。
通過上面兩個例子,可以很明顯的感受到,圖有兩個基本的特性:
一是每個節點都有自己的特征信息。比如針對上圖,我們建立一個風控規則,要看這個用戶的注冊地址、IP地址、交易的收貨地址是否一樣,如果這些特征信息不匹配,那么系統就會判定這個用戶就存在一定的欺詐風險。這是對圖節點特征信息的應用。
二是圖譜中的每個節點還具有結構信息。如果某段時間某個IP節點連接的交易節點非常多,也就是說從某個IP節點延伸出來的邊非常多,那么風控系統會判定這個IP地址存在風險。這是對圖節點結構信息的應用。
總的來說,在圖數據里面,我們要同時考慮到節點的特征信息以及結構信息,如果靠手工規則來提取,必將失去很多隱蔽和復雜的模式,那么有沒有一種方法能自動化地同時學到圖的特征信息與結構信息呢?——圖卷積神經網絡
什么是圖卷積神經網絡
圖卷積神經網絡(Graph Convolutional Network)是一種能對圖數據進行深度學習的方法。
圖卷積算子:
上面給出的是圖卷積算子的計算公式,設中心節點為i;
如何理解圖卷積算法?我們看動圖分三步去理解(注意不同顏色代表不同的權重):
第一步:發射(send)每一個節點將自身的特征信息經過變換后發送給鄰居節點。這一步是在對節點的特征信息進行抽取變換。
第二步:接收(receive)每個節點將鄰居節點的特征信息聚集起來。這一步是在對節點的局部結構信息進行融合。
第三步:變換(transform)把前面的信息聚集之后做非線性變換,增加模型的表達能力。
圖卷積神經網絡具有卷積神經網絡的以下性質:
1、局部參數共享,算子是適用於每個節點(圓圈代表算子),處處共享。
2、感受域正比於層數,最開始的時候,每個節點包含了直接鄰居的信息,再計算第二層時就能把鄰居的鄰居的信息包含進來,這樣參與運算的信息就更多更充分。層數越多,感受域就更廣,參與運算的信息就更多。
我們來看GCN這個模型框架,輸入是一張圖,經過一層一層計算變換,最后輸出一張圖。
GCN模型同樣具備深度學習的三種性質:
1、層級結構(特征一層一層抽取,一層比一層更抽象,更高級);
2、非線性變換 (增加模型的表達能力);
3、端對端訓練(不需要再去定義任何規則,只需要給圖的節點一個標記,讓模型自己學習,融合特征信息和結構信息。)
GCN四個特征:
1、GCN 是對卷積神經網絡在 graph domain 上的自然推廣。
2、它能同時對節點特征信息與結構信息進行端對端學習,是目前對圖數據學習任務的最佳選擇。
3、圖卷積適用性極廣,適用於任意拓撲結構的節點與圖。
4、在節點分類與邊預測等任務上,在公開數據集上效果要遠遠優於其他方法。
我們怎么用圖卷積神經網絡
下面分享一個我們在實際應用場景中的實驗:
實驗輸入是一個驗證數據構成的圖數據,節點是驗證事件以及事件相關的屬性節點。如IP,DeviceID,UA等節點。(我們總計用了30天的驗證數據,每兩個小時的數據構成一張圖,共360張圖。)
實驗輸出是對事件節點進行人機分類,正常或者異常。
實驗細節
網絡結構:
GCN(128)->GCN(64)->GCN(64)->Linear(2)
訓練: Adam優化器, lr=0.001
參照基准: 以只能學習特征信息的GBDT做為基准, grid_search 搜索超參數,GBDT是目前最流行的淺層分類器。
我們用第一天的數據做訓練,持續30天預測結果如下:
GCN模型的准確率衰減比較小,而GBDT的衰減很嚴重。可見,GCN模型的人機判別效果要好,魯棒性好。
7d評估效果可視化,(用第一天的數據訓練模型,第七天觀察其預測效果及最后一層輸出的tsne可視化結果)。上圖可以看出,GCN在第七天時對樣本判別的分界面仍很明顯,但是GBDT對樣本判別的分界面已經很模糊類了。綜上,GCN學到的結構信息在人機判別中不僅效果很好,也具有更好的魯棒性。
https://zhuanlan.zhihu.com/p/37091549