論文閱讀 | TextBugger: Generating Adversarial Text Against Real-world Applications


NDSS

https://arxiv.org/abs/1812.05271

摘要中的創新點確實是對抗攻擊中值得考慮的點:

1. effective

2. evasive    recognized by human readers

3. efficient

 

在IMDB數據集上取得100%的成功率。

最后有討論可能的防御機制,可以重點看下能不能做這相關的工作。

 

TEXTBUGGER:

白盒:通過雅可比矩陣找到最重要的單詞。

https://jingyan.baidu.com/article/cb5d6105c661bc005c2fe024.html (梯度vs Jacobian矩陣vs Hessian矩陣)

  (和梯度的方法差不多)

 

2-5步:計算重要性,對單詞排序。

6-14步:生成bugs:考慮視覺和語義的相似性;考慮character-level & word-level

character-level:看起來就像是簡單的拼寫錯誤。目的:把未知詞匯映射到未知embedding

word-level:最近鄰搜索。

作者發現在一些詞嵌入模型中(如word2vec),“worst”和“better”等語義相反的詞在文本中具有高度的句法相似性,因此“better”被認為是“worst”的最近鄰。

以上顯然是不合理的,很容易被人察覺。

因此,作者使用了語義保留技術,即,將該單詞替換為上下文感知的單詞向量空間中的topk近鄰。使用斯坦福提供的預先訓練好的GloVe模型[30]進行單詞嵌入,並設置topk = 5。可以保證鄰居在語義上與原來的鄰居相似。

 

根據以往的研究,文本的意義很可能是由讀者保留或推斷后,幾個字符的變化[31]。同時,在語義和句法上相似的詞語代替詞語,可以保證樣本的相似性[1]。

TEXTBUGGER的五種錯誤生成方法:(1)插入:插入一個空格到單詞中。(2)刪除:刪除除第一個字符和最后一個字符外的任意字符。(3)交換:在單詞中隨機交換兩個相鄰的字母,但不改變第一個或最后一個字母。(4) Substitute-C (Sub-C):用視覺上相似的字符(例如,用“0”代替“o”,用“1”代替“1”,用“@”代替“a”)或鍵盤上相鄰的字符(例如,用“n”代替“m”)代替字符。(5)Sub-W:在上下文感知的詞向量空間中,用它的最近鄰替換一個詞。

例子:

 

 

 

基於視覺的替換的防御是不是可以考慮文本的visual embedding

如算法2所示,在生成5個bug后,根據置信度的變化選擇bug(選變化最大的)。用最優的bug來替換這個單詞,得到一個新的文本e’(第8行)。我們重復上述步驟來替換下一個單詞,直到找到解決方案(攻擊成功),或者未能找到一個保留語義的對抗樣本。

 

 

 

 

黑盒:先找最重要的句子,然后通過打分函數找到最重要的單詞。

三個步驟:(1)找到重要的句子。(2)根據分類結果,使用評分函數來確定每個單詞的重要性,並根據得分對單詞進行排序。(3)使用bug選擇算法改變選擇的單詞。算法3給出了黑箱對抗文本生成算法。

 

 

2-6:找重要的句子。找到對最終預測結果貢獻最大的重要句子,對其進行優先操作。

使用spaCy庫將每個文檔分割成句子,然后過濾出具有不同預測標簽的句子。即過濾掉Fl(si)不等於y的。然后根據重要性評分排序。句子si的重要性得分用預測的類Fy的置信度值表示。(選出最可能得到分類y的句子)

8-11:找重要的詞。首先要找到對原始預測結果貢獻最大的最重要的詞,然后通過控制語義相似度對其稍作修改。

評分函數:(刪除該詞后置信度的變化,變化越高越重要)

12-20:生成bugs。和白盒方法類似。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM