字符文本中的字符太多_文本对抗---字符级别的攻击
最近看了一些字符級別的文本攻擊方法,目前字符級別的攻擊主要就是兩步:找到要攻擊的地方(被攻擊單詞)和如何攻擊,針對于這兩個不同角度也有一些不一樣的文章。
如何找到攻擊位置
白盒攻擊中可以根據損失函數或者是前向導數等內部參數,反向尋找到輸入中對輸出影響最大的部分,黑盒攻擊中一般都會構造一個打分函數,對文本中的每一個位置進行一個打分,分數越高則說明該部分在當前句子下最重要。
DeepWordBug:Black-box Generation of Adversarial Text Sequences to Evade Deep Learning Classifiers
這是一篇黑盒攻擊的文章,著眼于利用打分函數如何尋找到一條文本中最重要的部分,在構造打分函數時充分考慮一個單詞對句子前后的影響。
還有一種常用的打分函數,是直接將單詞xi變為等長度的空格,分別通過分類器,以此判別單詞xi的重要程度。
FastWordBug:A Fast Method To Generate Adversarial Text Against NLP Applications
這篇文章是基于DeepWordBug改進的文章,亮點在于速度快,并且從另外一個視角,將pos技術結合起來,快速構造對抗樣本。
第一步:對一段文本中的句子進行重要性排序(猜測使用一個句子級別的分類器,然后同時使用打分函數即可);
第二步:將打分函數和pos詞性進行關聯,這一步是加快的關鍵點,這個關聯的實際意義就是不需要對句子中的單詞進行無目標的更換,而是優先對經常出錯的單詞進行一個更改,相當于對不同詞性的單詞給予一個權重,根據權重大小按照優先度對單詞進行更改;
第三步:按照一些通用的方法進行更改即可。
最后實驗數據也表明,確實攻擊速率下降了一半,但是對于準確率下降幅度這么大,還是心存疑惑。
以后介紹的都是如何找到文本中最重要的單詞,然后更改這個單詞,思考角度都是尋找的方法,以后可能也會有更多的方法去更有效的尋找。但是使用的攻擊就是很簡單的替換,排序或者刪除,還有一些文章是從如何攻擊的角度來看待文本對抗。
如何攻擊
Text Processing Like Humans Do: Visually Attacking and Shielding NLP Systems
這篇文章的角度不是著眼于我怎么找到最關鍵的地方修改,而是從修改方法下手,利用視覺的一些信息尋找修改的方法,具體指的是在字符嵌入空間尋找臨近域。
ICES:基于圖像信息的字符嵌入空間,將字符圖像進行訓練得到一個嵌入空間;
DCES:基于描述的字符嵌入空間,將字符-描述進行訓練得到一個嵌入空間;
ECES:選擇一個對應的變音符(在字符上添加上下角標)
既然這是通過視覺的信息尋找臨近域,所以作者專門用一個部分去討論修改方法對人類的影響。個人感覺單純提出一張修改方法并不足以支撐起一篇文章,所以之后作者還加入了防御方法:對抗訓練,字符嵌入,規則檢查等等。并且在最后也驗證了確實在hotword上做修改更加有效。
結合尋找位置和攻擊
TEXTBUGGER: Generating Adversarial Text Against Real-world Applications
使用白盒攻擊(雅閣比矩陣)和黑盒攻擊(打分函數)來尋找最需要更改的位置,之后提出五種修改手段(插入,刪除,替換,替代,同義詞),并且攻擊的不再是自己訓練的模型,而是一些可用的API接口,這大大增加的文章的實際用途。
并且通過大量實驗,驗證TEXTBUGGER的攻擊成功率,討論了文本長度對于攻擊的影響,對抗樣本的不可察覺性,對抗樣本的遷移性,不同修改方法的影響程度等等,最后還添加的拼寫檢查和對抗訓練提升模型的魯棒性。
該文章通過對尋找重要單詞的位置,之后再對單詞進行字符級別(同義詞)修改,可能之后會使用一些其他方法,比如使用句法分析,pos標注等加快攻擊的效率,并且通過beam search擴展到單詞級別甚至是短語級別的攻擊上。
總結
以上是生活随笔為你收集整理的字符文本中的字符太多_文本对抗---字符级别的攻击的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: list修改元素的值_第115天:Pyt
- 下一篇: openlayers 可以实现3d地图效