本篇文章介紹KDD2018的最佳論文—圖神經網路對抗攻擊,該論文針對圖節點分類任務進行對抗攻擊。
論文題目:
Adversarial Attacks on Neural Networks for Graph Data
論文地址:
http://cn.arxiv.org/pdf/1805.07984
原始碼地址:
https://www.kdd.in.tum.de/nettack
摘要
深度學習在圖的很多工上已經實現了很好的效果,比如節點分類,圖分類等。但是目前對於圖的對抗攻擊基本是空白的,圖的深度學習模型是否容易受到被對抗樣本“迷惑”呢?本篇論文,作者首次研究了對基於屬性圖的GCN進行了對抗攻擊研究,由於GCN很多都是直推式學習(trian階段使用test資料),論文不僅討論了測試攻擊也討論了poisoning攻擊(訓練之前攻擊)。
機遇與挑戰
由於是對屬性圖進行操作,對抗擾動可以以兩種方式進行:改變節點特徵或者改變圖的結構。對圖中節點之間互相依賴的機構的擾動是之前沒有研究過的,但是這確是一個現實世界中非常可能發生的情況:例如,一個人可以在社交網路中新增或者刪除某個好友。
當前研究僅限於對一個特定節點進行擾動以使其產生錯誤的預測。但是圖的關聯效應卻賦予我們更強大的潛力:通過改變一個節點,我們可能干擾其他節點的預測結果。並且這在現實世界中是一個很可能實現的,想像一個黑客誰劫持了一些帳戶,然後他操縱這些帳戶,以干擾對那些他沒有控制一個帳戶的預測,這個甚至是造成更加恐怖的影響,下圖是一個示意圖。
挑戰
不像影象這種由連續特徵組成的資料,圖的結構和以及大部分情況下的節點特徵都是離散的,所以基於梯度構造干擾的方法不適用,那麼怎麼設計有效的演算法來在離散空間找到對抗樣本呢?
對抗樣本一個要求是對於人類的不可分辨性,例如影象,我們可以通過限制每個畫素變化很小的值使得人類無法分辨影象的變化。對於大規模的Graph來說,視覺化適不適合人肉觀察的(會看到錯綜複雜的點和線),那麼怎麼定義這種“不可分辨性”呢?
最後,對於圖節點任務,一般是直推式學習——訓練期間使用train data和test data。這意味著常用的evasion攻擊(模型的引數在train data上優化,並假設固定)是不符合實際的,我們需要考慮poisoning攻擊(模型是在對抗樣本上訓練和測試的)。
攻擊模型
圖節點分類任務
這裡簡單的介紹圖卷積,詳細內容可以參考我的這篇綜述Graph Neural Network Review
令 表示屬性圖,其中表示鄰接矩陣,表示節點特徵矩陣,節點集合用表示。圖節點分類問題描述為,給定一個帶有標籤的子集,標籤集合為,節點分類的目標是學習一個函式:,這是一個半監督學習任務。
圖卷積公式為:
節點分類在最後一層進行,公式如下:
其目標函式為有標籤節點的交叉熵損失:
其中表示節點的標籤。
問題定義
令表示原始圖,對原始進行微擾變為,其中對於的微擾叫做結構攻擊,對的微擾叫做特徵攻擊。
Target vs. Attackers. 我們的目標是攻擊一個特定的節點,使得其預測發生變化。由於圖是一個非i.i.d.資料,對的預測不僅和自身的有關,還和圖中其他節點有關(尤其是其鄰域節點)。因此考慮將節點分類target節點和attacker節點,target節點即為目標節點,attacker節點即為我們可以操縱的節點(在其上施加擾動),attacker集如下:
如果,則成為直接攻擊(direct attack);如果,則成為影響攻擊(influencer attack)
圖節點分類對抗攻擊問題定義為:
其中表示所有擾動樣本組成的空間。這個公式可以這樣理解,對於所有擾動樣本,找出使得在其上訓練得到的分類器對於目標節點的分類錯誤率最高的樣本,該樣本即為對抗樣本。
擾動樣本
如何定義圖上的擾動是不可分辨的?對於圖來說有兩種擾動,一種是結構擾動,一種是特徵擾動,分別定義。
結構擾動:對於圖結構來說,一個很好地描述是使用其節點度的分佈。因為現實生活中很多網路都是無標度網路,其度分佈是一個冪律分佈。那麼可以定義結構擾動不可分辨為:擾動前後,圖節點度滿足同一個分佈。對於圖來說可以是如下公式進行近似:
如果和都是的取樣,我們就可以認為這兩個圖是不可分辨的。我們可以通過log-likehood分數來衡量一個資料集是否是一個概率分佈的取樣。論文中採用log-likehood分數差來衡量結構擾動的差距:
當時,我們認為結構干擾是不可分辨的。
特徵擾動:對於節點特徵來說,如果兩個特徵從未共同出現過(特徵都為1),而擾動使得他們共現了,那對我們來說應該是比較容易觀察到的;相反,如果兩個特徵經常一起出現,而某個節點特徵中他們沒有共現,擾動以後他們共現了,這對我們來說是不容易分辨的。舉個例子,一篇關於深度學習的文章很可能同時出現“深度學習”和“神經網路”,如果某個深度學習文章這兩個單詞沒有共同出現,而我們只需要稍微修改就可以使得他們共現,並且不會使得文章很突兀;相反如果我們想加入“氫氧化鈉”這種詞彙,會使得文章很突兀。
數學上可以這樣描述,定義表示中特徵的共現關係,其中表示所有特徵組成的集合,表示特徵共現概率矩陣。令表示節點所有不為0的特徵序號,對於節,考慮一個擾動:新增一個特徵,如果滿足以下條件,我們認為該特徵擾動是不可分辨的:
公式(8)理解為特徵間共現概率的加權平均,越大表示該特徵越平凡,即該特徵與很多特徵都共現,那如果新增的特徵和它共現了意義也不大。
擾動的絕對大小:對於擾動的絕對大小也得進行限制:
那麼對於一個擾動,如果滿足以上三個條件,我們認為是不可分辨的,即需滿足上述三個條件。
生成對抗樣本
生成對抗樣本的思路為:對一個代理模型按照如上所述進行攻擊,並且對結構擾動和特徵擾動進行近似解耦,以此方式可以使用序列優化的方法生成對抗樣本,論文後面實驗這種對抗樣本可以遷移到其他的模型。
論文中使用的代理模型為,啟用函式為恆等函式的兩層GCN網路:
其中softmax可以去掉,因為我們的目標是比較對目標節點的預測的變化。給定以訓練好的代理模型(固定)的損失函式如下:
我們的目標是
為了方便優化,將結構擾動和特徵擾動分開:
其中分別表示增加/移除一個邊或特徵,.演算法如下:
論文主體部分就這麼多了,後面有一些證明與優化,再接著是實驗,本文不再介紹,感興趣的同學去看論文即可。
總結
深度學習一大詬病就是更加容易受到對抗樣本的攻擊,隨著深度學習在圖上的應用,圖的對抗攻擊研究會越來越深入,本篇論文是圖對抗攻擊的開山之作,確實有很多值得學習的建模思想,KDD2018 Best Paper實至名歸!