干货!STABLE - 一种无监督高鲁棒性图结构学习框架
點擊藍字
關注我們
AI TIME歡迎每一位AI愛好者的加入!
李寬:
中科院計算所(ICT)二年級碩士生。主要研究方向為圖表示學習,工作主要圍繞圖神經網絡的魯棒性,動態圖建模和半監督節點分類的類別不平衡問題展開。已在KDD,WWW等數據挖掘頂尖會議上發表論文。
圖神經網絡在諸多基于圖數據的下游任務中表現出色,但近年來研究發現圖神經網絡面對惡意的結構擾動是非常脆弱的。一種直觀的增強圖對抗魯棒性的方法是結構學習,通過優化被篡改的圖結構來緩解攻擊帶來的負面影響。已有方法大多基于原始特征或者監督信號來進行結構學習。但這兩種方法都存在一定的問題,前者缺乏了結構信息,而后者因為分類器受到攻擊,表征質量也隨之下降。基于此,我們提出了一個基于對比學習的無監督框架來獲取面向對抗魯棒性的高質量表征,以此來進行結構優化。另一方面,我們還發現GCN的重參數化trick會使得模型更脆弱,基于此我們簡單的修改了GCN,獲得了更魯棒的下游分類器。
1
研究動機
近年來,得益于消息傳遞機制,圖神經網絡(GNN)在大量基于圖數據的任務上取得了卓越的成效,尤其是半監督節點分類任務。然而,最新的研究表明,GNN在對抗攻擊面前是極為脆弱的,尤其是結構擾動。攻擊者只需要對圖結構進行微小的篡改就能使的模型分類性能大大下降。
模型的對抗魯棒性(Adversarial Robustness)在一些security-critical的任務上至關重要,例如欺詐交易檢測,欺詐者可以在金融交易圖中,通過刻意的和普通用戶建立交易關系,來隱藏自己的真實意圖。
最直觀的提高GNN魯棒性的方法是對干擾連邊進行偵測,找出潛在的擾動并將其刪除或者降低對模型的影響。其中一種代表性方法是基于一個pair-wise function 計算任意兩個節點i, j之間的權值,進而給整個鄰接矩陣計算出一個權重矩陣(Weights Matrix),最終基于這個Matrix決定一條邊在圖中的去留,達到優化圖結構的目的。
先前的pair-wise function的方法更多的關注如何設計一個巧妙的function來得到一個更準確地Weights Matrix,總體上可以分為兩類:
Feature-based:這類方法用節點的原始特征去計算,代表方法有GCN-Jaccard,GNNGuard等
Representation-based:這類方法用基于監督信號獲取的representation去計算,代表方法有GRCN等
但這兩類方法一定的缺陷,下面是一個在Cora數據集上用MetaAttack進行不同擾動率下攻擊的結果。feature-based的方法在擾動率較低的時候,表現甚至不如Vanilla GCN,表現出了明顯的performance和robustness的trade-off,這是由于基于特征優化圖結構丟失了圖中的拓撲信息,在擾動率較低的時候,基于特征刪除的正常連邊的負面影響大于了刪除干擾邊的正面影響,從而出現了這個trade-off;另一方面,基于監督信號獲取的representation的方法在擾動率較高的時候性能下降明顯,這是因為分類器直接受到攻擊算法攻擊,可以認為基于下游任務學到的representation的治療和下游任務的表現強相關,在擾動較高的時候質量較低,用于低質量表征優化結構自然很難得到高質量的圖結構。
因此,我們認為這類方法的關鍵也許不在function的設計,而在于得到一個在對抗攻擊場景下可靠的表征用于優化結構,我們定義可靠的表征應有以下特點:
攜帶特征信息的同時,包含盡可能多的正確的結構信息
與下游任務無關,并對結構擾動不敏感
基于此我們提出了一套無監督的pipeline-STABLE,用于結構優化。
2
方法
Representation Learning
解決該問題的關鍵是得到可靠的表征,我們采用了對比學習作為這部分的backbone。一方面對比學習在圖上的無監督表示學習問題上的高效性已經得到了充分驗證,另一方面,對比學習中的Augmentation策略和Graph Attack有著天然的聯系,例如一種常用的生成Augmentation views的方法是對圖結構進行隨機的擾動,而這也可以看作是在對圖做隨機攻擊(Random Attack),基于這個特性我們可以設計一些更貼近攻防場景的增強策略。
我們設計了兩種針對對抗魯棒性場景的改進策略,訓練前的Preprocess和生成Augmentation Views的Recovery。在圖上進行對比學習訓練之前,我們首先基于簡單的相似度策略進行粗略剪枝:
計算任意兩個相連節點的相似度,剪去低于一定閾值的那些邊。這一步可以對圖進行粗略的凈化,刪除那些容易被偵測出來的干擾邊。
第二步生成多個views,將第一步preprocess中刪除的邊,進行小部分隨機恢復來得到一個view。同時對比學習訓練中需要有負樣本來構成負樣本對,我們沿用DGI中隨機擾動特征矩陣的方法來獲取負樣本,訓練的目標函數是:
我們采用了全局局部的對比模式,而沒有用常見的局部局部。因為攻擊者在對圖結構進行擾動的時候需要保持unnoticeable,即全局的一個不顯明性,這也就決定了攻擊對某些節點的局部修改很大,但對全局的影響是比較小的。因此,采用global-local的對比范式,也是在用受影響較小的全局表征對局部表征進行校準。
那么為什么Preprocess和Recover這兩個操作可以使得我們得到滿足我們要求的表征呢?第一個要求,我們希望包含特征信息以及盡可能多的正確的結構信息,而預處理的粗剪枝和對比學習在圖表示學習上的高效性滿足了這個要求。第二個要求,我們希望表征對結構擾動不敏感,recovery這個操作本質上可以看作是在對預處理后的圖進行微小的攻擊,因為預處理刪除的大部分是易察覺的干擾邊,那么恢復的也大概率是干擾邊,因此可以看作是在以攻擊算法的攻擊方式生成Augmentation Views。對比學習訓練的過程會使得各個view和原圖的表征想接近,也就對每個view包含的微小攻擊不敏感,從而滿足了我們的第二個需求。
Graph Refining
當得到了高質量表征之后,優化結構就非常簡單了,我們只需要基于簡單的相似度度量對圖進行加邊減邊,剪去相似度低于閾值的邊,并為每個節點連上k個與其最相似的節點。
Classifier
基當結構優化完成了,理論上可以接上任意的下游分類器進行下游任務,這部分以往的方法有許多采用了Vanilla GCN,例如SimpGCN、GCN-Jaccard,而我們發現,GCN的renormalization trick會加重GCN的結構脆弱性。
以往的研究發現,攻擊算法更傾向于攻擊低度節點,但這只關注了干擾邊的一側的特點,忽視了什么樣的節點會被用作fake neighbor,我們定義邊的度為兩個相連節點的度的和,將圖中干擾邊和普通邊的度分布畫了出來:
可以發現干擾邊度都較低,也就是說攻擊算法會給低度節點連上一個低度鄰居,再看一下GCN的renormalization trick:
GCN會給低度鄰居分配更高的權重,低度節點的鄰居較少,加上一個fake neighbor的影響較大,分配跟高的權重進一步擴大了干擾帶來的負面影響。我們的解決方法也非常直觀,反其道而行之給高度節點和節點自身特征更高的權重:
對比發現,這個改動能大大增強GCN的魯棒性:
3
實驗結果
我們在四個Benchmark數據集上驗證了STABLE的魯棒性,對比了與其他7種Robust GNN在3種攻擊算法下的性能表現。
可以看出STABLE在不同數據集、攻擊算法、各種擾動率性能具有一致的優越性。
上圖是將三種算法總體剪邊數量調整到1000左右,STABLE移除的干擾邊最多,準確率最高,具有更準確的結構學習能力。
上圖為參數敏感性實驗以及在不同擾動率下取得最佳表現的具體參數值,其中k為加鄰居數量,為分類器為鄰居節點分配權重的冪值,越高代表給高度節點越高的權重,可以看出隨著擾動率的上升,我們應該給節點更多的相似鄰居,應該更多的在消息傳遞的過程中采用高度鄰居的信息。
上圖為Ablation Study,幾種變體含義分別為:
- STABLE-P:沒有Preprocess
- STABLE-A:沒有Augmentation策略
- STABLE-Ran:采用隨機擾動生成Views
- STABLE-K:沒有top-k加鄰居策略
- STABLE-GCN:下游分類器采用普通GCN
?值得注意的是STABLE-A和STABLE-Ran的線條幾乎重合,也就是說隨機的增強策略和無增強效果接近,表明Recovery的策略切實有效。
4
結論
我們提出了STABLE,一套無監督的結構學習框架。本作的重點是我們認為計算邊的權重矩陣的關鍵不在于function的設計,而在于一個可靠的表征,基于此我們設計了面向對抗魯棒性的對比學習模型來獲取高質量表征,在多個數據集上抵御多種攻擊均顯著超過了以往的方法。
整理:林? 則
作者:李? 寬
往期精彩文章推薦
記得關注我們呀!每天都有新知識!
?關于AI TIME?
AI TIME源起于2019年,旨在發揚科學思辨精神,邀請各界人士對人工智能理論、算法和場景應用的本質問題進行探索,加強思想碰撞,鏈接全球AI學者、行業專家和愛好者,希望以辯論的形式,探討人工智能和人類未來之間的矛盾,探索人工智能領域的未來。
迄今為止,AI TIME已經邀請了800多位海內外講者,舉辦了逾350場活動,超300萬人次觀看。
我知道你
在看
哦
~
點擊 閱讀原文?查看回放!
總結
以上是生活随笔為你收集整理的干货!STABLE - 一种无监督高鲁棒性图结构学习框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BOEHM GC原理及总结
- 下一篇: 求最长递增子序列个数——C++