四、文本對(duì)抗攻擊的防御策略

針對(duì)文本對(duì)抗攻擊的防御策略主要包括兩個(gè)方面,一方面是去發(fā)現(xiàn)對(duì)抗樣本,比如有一些對(duì)抗攻擊,是將文本中的字改成音近字、形近字或錯(cuò)字,可以檢測(cè)包含這類異常字的文本,然后對(duì)其做額外的處理;另一方面是對(duì)模型進(jìn)行對(duì)抗性訓(xùn)練,包括在訓(xùn)練樣本中加入對(duì)抗樣本,對(duì)損失函數(shù)和模型結(jié)構(gòu)進(jìn)行改動(dòng)等,本次大賽方案中有一些應(yīng)對(duì)對(duì)抗攻擊的策略,具體在下面章節(jié)介紹。

五、DIAC大賽方案分享

DIAC大賽優(yōu)勝隊(duì)伍普遍選擇RoBERTa_wwm作為語義等價(jià)任務(wù)的基礎(chǔ)模型,即將兩個(gè)問題拼起來,進(jìn)入模型,然后選擇[cls]位置對(duì)應(yīng)的向量,經(jīng)過一個(gè)全連接層和softmax操作,輸出在2個(gè)類別上的概率。在模型訓(xùn)練之前,進(jìn)行了對(duì)抗樣本的數(shù)據(jù)增強(qiáng);在模型訓(xùn)練階段,采用FocalLoss作為損失函數(shù),利用Fast Gradient Method(FGM)在embedding層上添加擾動(dòng);在測(cè)試集上作預(yù)測(cè)時(shí),對(duì)疑似對(duì)抗樣本進(jìn)行糾錯(cuò)。

5.1 數(shù)據(jù)增強(qiáng)

根據(jù)對(duì)抗樣本舉例,通過以下方式進(jìn)行了數(shù)據(jù)增強(qiáng):

方法一:音近字替換、形近字替換、同義詞替換、詞序調(diào)整。用開源的音近字、形近字、同義詞詞典,以一定比例對(duì)問題中的字或詞進(jìn)行替換,同時(shí)限制一組問題中替換的總字?jǐn)?shù)小于3,或以一定比例對(duì)問題中的詞語詞序隨機(jī)調(diào)整,限制最遠(yuǎn)的詞序調(diào)整,兩個(gè)詞匯間隔不超過2個(gè)詞。

方法二:反義詞替換、增加或刪除否定詞。以一定比例進(jìn)行將問題中的某個(gè)詞替換為反義詞、增加或刪除問題中的否定詞,如:“未”、“沒有”、“無”、“非”,并修改樣本標(biāo)簽。

方法三:用開源的錯(cuò)別字校正工具,對(duì)問題進(jìn)行校正,矯正結(jié)果矯正錯(cuò)誤率接近100%,但錯(cuò)誤矯正只影響1-2個(gè)字,不影響對(duì)問題的理解,故可以用這種方式生成對(duì)抗樣本。

通過上面的一種或幾種方式,進(jìn)行數(shù)據(jù)增強(qiáng),訓(xùn)練的模型與不進(jìn)行數(shù)據(jù)增強(qiáng)相比,在最終測(cè)試集上的宏F1值有約1.5~2個(gè)百分點(diǎn)的提升。

5.2 智能糾錯(cuò)

針對(duì)對(duì)抗樣本特點(diǎn),有下面幾種糾錯(cuò)方式:

方法一:召回與待糾錯(cuò)問題相似的問題,對(duì)比相似片段,進(jìn)行糾錯(cuò)。具體做法是:以兩個(gè)問題分詞集合的差集中包含的詞語數(shù)目作為二者相關(guān)性的一個(gè)度量。對(duì)一個(gè)問題,從整個(gè)數(shù)據(jù)集合中,召回一些和它相關(guān)性較高的問題。相關(guān)問題召回后,接著對(duì)原問題與相關(guān)問題進(jìn)行共現(xiàn)的相似文本片段查找,文本片段相似采用漢明距離作為度量,由于一般對(duì)抗樣本中錯(cuò)別字都只有一個(gè),若是有兩個(gè)錯(cuò)別字一般都是連在一起的,因此將漢明距離小于2且滿足不同字必須連續(xù)做為判斷相似文本片段的依據(jù)。

相似片段找到后,對(duì)相似片段的每個(gè)位置進(jìn)行一一對(duì)比,如果不同,考慮這兩個(gè)字是否是同音字,如果不是同音的字再考慮是否是形近字,若都不是就不進(jìn)行糾錯(cuò)。判斷是否同音采用一個(gè)漢字轉(zhuǎn)拼音的模塊,同形的判斷采用筆順的編輯距離作為相似度的判斷,同音或同形的錯(cuò)別字在相似文本片段中的位置確定后,接下來就是確定兩個(gè)文本片段哪個(gè)有錯(cuò)別字。通過對(duì)相似片段分詞,然后計(jì)算所有詞的在訓(xùn)練集中出現(xiàn)次數(shù)的總和,判定總和小的片段包含錯(cuò)別字,然后用總和大的對(duì)總和小的進(jìn)行修正。

方法二:統(tǒng)計(jì)問題中詞語上下文的ngram,根據(jù)ngram為對(duì)抗樣本中的錯(cuò)誤詞語尋找糾錯(cuò)建議。具體做法為:對(duì)問題進(jìn)行分詞及詞性標(biāo)注,對(duì)具有詞性為m、nr、ns、nt、nz、r、x、w的詞替換為對(duì)應(yīng)的詞性標(biāo)記。對(duì)每個(gè)詞語,分別統(tǒng)計(jì)上文的一、二、三元ngram和下文一、二、三元ngram共6個(gè)詞條,添加到ngram詞表里。在糾錯(cuò)階段,對(duì)問題中的詞W,利用其上下文的6個(gè)ngram詞條和前一步統(tǒng)計(jì)的ngram詞表,獲得糾錯(cuò)的候選詞及候選詞的詞頻,基于拼音編輯距離,計(jì)算候選詞與詞W的拼音相似度。按照如下公式,進(jìn)行候選詞得分計(jì)算:

其中x為候選詞,c為原錯(cuò)詞,d為詞表,為候選詞的詞頻,為候選詞與原錯(cuò)詞的拼音相似度數(shù),為對(duì)應(yīng)的詞表字典的權(quán)重。對(duì)所有候選詞按照分值從大到小進(jìn)行排序。取前N(這里取N為10)個(gè),如果存在候選詞與錯(cuò)詞的編輯距離小于等于1,則優(yōu)先返回這個(gè)候選詞,否則返回所有候選詞分值最高的詞。

方法三:將測(cè)試樣本中兩個(gè)句子中的同音字或形近字相互替換。當(dāng)句A中連續(xù)兩個(gè)字的讀音與句B中連續(xù)兩個(gè)字的讀音相同時(shí),可以用B中的同音字替代A中同音字,構(gòu)造句A’,那么A’與B即可組成樣本[A’,B]。同理可以構(gòu)造[A,B’],它們與[A,B]共同組成一組測(cè)試樣本,用訓(xùn)練好的模型預(yù)測(cè)這組測(cè)試樣本,預(yù)測(cè)結(jié)果只要存在一個(gè)正樣本,即認(rèn)為原測(cè)試樣本為正樣本。

通過上面的方式,對(duì)測(cè)試集進(jìn)行糾錯(cuò),預(yù)測(cè)結(jié)果的宏F1值有約2~3個(gè)百分點(diǎn)的提升。

5.3 Focal Loss

在給出的訓(xùn)練集中,正負(fù)樣本比例較不平衡,適合采用Focal Loss作為損失函數(shù)。Focal Loss公式如下:

通過設(shè)定α的值來控制正負(fù)樣本對(duì)總的loss的共享權(quán)重,α取比較小的值來降低多的那類樣本的權(quán)重,通過設(shè)置γ來減少易分類樣本的權(quán)重,從而使得模型在訓(xùn)練時(shí)更專注于難分類的樣本。

實(shí)驗(yàn)表明,使用Focal Loss相比于不使用FocalLoss作為損失函數(shù),驗(yàn)證集預(yù)測(cè)結(jié)果的宏F1值有約0.5個(gè)百分點(diǎn)的提升。

5.4 Fast Gradient Method

對(duì)抗訓(xùn)練采用的是Fast Gradient Method(FGM),其目的是提高模型對(duì)小的擾動(dòng)的魯棒性,擾動(dòng)添加在bert模型的字向量上。對(duì)于分類問題,具體做法就是添加一個(gè)對(duì)抗損失:

上式表達(dá)的意思即,對(duì)樣本x加入的擾動(dòng)radv是可以使得預(yù)測(cè)為分類y的損失最大,radv的定義如下:

在具體訓(xùn)練時(shí)采取的損失,是原始損失與對(duì)抗損失的組合。實(shí)驗(yàn)表明,使用FGM訓(xùn)練的模型和沒有使用的模型相比,驗(yàn)證集的宏F1值能有約0.5~1個(gè)百分點(diǎn)的提升。

5.5 各種方法的效果

總結(jié)上面提到的幾種方法,在該任務(wù)上的效果如下表:

大賽優(yōu)勝隊(duì)伍以上面幾種方案為主。第一名采取了除上面智能糾錯(cuò)以外的方案,同時(shí),針對(duì)只是在局部進(jìn)行個(gè)別詞的增刪改替換的對(duì)抗樣本,設(shè)計(jì)了Absolute Position-Aware 的模型輸入方式進(jìn)行捕捉,另外,在固定的網(wǎng)絡(luò)結(jié)構(gòu)中進(jìn)行對(duì)抗訓(xùn)練。第二名和第三名的隊(duì)伍,沒有做太多數(shù)據(jù)增強(qiáng),在使用Focal Loss和Fast Gradient Method的同時(shí),將重點(diǎn)放在了智能糾錯(cuò)上,他們分別設(shè)計(jì)了巧妙的智能糾錯(cuò)方案,利用對(duì)抗樣本和其他樣本之間的相似特性,進(jìn)行糾錯(cuò),取得了不錯(cuò)的效果。

綜合看前三名的隊(duì)伍,除了數(shù)據(jù)增強(qiáng)和對(duì)抗訓(xùn)練等其他任務(wù)中也可能有效的方法,他們針對(duì)本次比賽的賽題特點(diǎn),從數(shù)據(jù)出發(fā),進(jìn)行對(duì)抗樣本的發(fā)現(xiàn)與糾錯(cuò),方法巧妙,最終脫穎而出。

六、總結(jié)

通過這次比賽,大家對(duì)防御智能問答中語義等價(jià)問題的對(duì)抗攻擊、增強(qiáng)模型魯棒性的方法進(jìn)行了許多探索與實(shí)踐,發(fā)現(xiàn)在數(shù)據(jù)處理階段的數(shù)據(jù)增強(qiáng)、對(duì)抗樣本糾錯(cuò)和模型訓(xùn)練階段使用Focal Loss和采用FGM的方法進(jìn)行訓(xùn)練是行之有效的策略。這些實(shí)踐與結(jié)論,將實(shí)現(xiàn)機(jī)器與人之間更加智能的對(duì)話,為實(shí)際的生產(chǎn)生活帶來切實(shí)幫助。當(dāng)然,隨著研究的深入與應(yīng)用的普及,還會(huì)出現(xiàn)新的對(duì)抗攻擊的方法,我們也期待新的防御策略被發(fā)明,共同促進(jìn)模型魯棒性的提升,使系統(tǒng)更好地落地應(yīng)用。

參考資料

[1] Wang, W., Wang,L., Wang, R., Ye, A., & Tang, B. (2019). A Survey: Towards a Robust DeepNeural Network in Text Domain. arXiv preprint arXiv:1902.07285.

[2] Wei Emma Zhang,Quan Z. Sheng, Ahoud Alhazmi, and Chenliang Li. 2019. Adversarial Attacks onDeep Learning Models in Natural Language Processing: A Survey. 1, 1 (April2019), 40 pages. 

[3]?DIAC大賽優(yōu)勝隊(duì)伍(比較牛的丹棱街5號(hào)、觀、沐鑫、XiaoduoAI-NLP、zhys513、蘇州課得樂-強(qiáng)行跳大)解決方案

【 本文作者:陳旭 】

分享到

xiesc

相關(guān)推薦