導 讀
大家好,今天介紹的是暑期我在微軟實習期間主要做的工作,關于自然語言模型對抗訓練的問題,也就是使用更好的對抗訓練的方式增強transformer-based的模型在自然語言理解領域的效果" />
訂閱
糾錯
加入自媒體

FreeLB—適用于自然語言理解的對抗學習

導 讀

大家好,今天介紹的是暑期我在微軟實習期間主要做的工作,關于自然語言模型對抗訓練的問題,也就是使用更好的對抗訓練的方式增強transformer-based的模型在自然語言理解領域的效果。這項工作由我和我的幾位mentor,導師以及manager一起完成的。

這次分享共包括一下幾個部分:

對抗訓練的介紹

關于transformer-based模型的對抗訓練

結論

▌對抗訓練的介紹

1、圖片分類器的對抗訓練

對輸入的樣本做微小的改動很容易讓機器學習模型出現(xiàn)誤判,這種操作稱為對抗性攻擊,這對實際應用模型帶來了極大的風險。一般情況下我們通過在輸入中加入對抗樣本,使得樣本能夠正視這種微小的改動,從而增加模型的魯棒性。

對抗訓練最初用于圖像識別領域,然后演變到自然語言處理的對抗訓練,我們也是基于前人的理論上對自然語言中的對抗訓練進行了改進。

FreeLB—適用于自然語言理解的對抗學習

最初的對抗樣本概念是基于圖像領域,就是我們對一張自然的圖片加一個人眼不可見(微。┑臄_動,這種擾動不改變圖像本身的類別,但是神經(jīng)網(wǎng)絡模型卻把他識別為一個完全不同的類別。比如圖片中本來是一個“pig”,通過加入一個微小的擾動,模型卻識別為"airliner"。這種對抗樣本對于普通的神經(jīng)網(wǎng)絡來說幾乎是普遍存在的,或者說對任意的圖片我們都能找到對抗樣本使得神經(jīng)網(wǎng)絡模型預測出現(xiàn)錯誤,利用這種操作我們幾乎能使模型在訓練集上的準確率降為0;在自然語言中也存在對抗樣本,但是構造對抗樣本比圖像領域要復雜一些,根據(jù)Ribeiro在文章中提出的,根據(jù)一些詞變換的規(guī)則(Semantically Equivalent Adversarial Rules)來生成對抗樣本,比如把"What is" 改成縮寫形式"What's",或者在語句結束時多加一個問號"?",就能使得基于神經(jīng)網(wǎng)絡的自然語言模型在某些情況下給出一個錯誤的分類。

FreeLB—適用于自然語言理解的對抗學習

為了提升使圖像分類器對抗攻擊的魯棒性,可以使用對抗樣本訓練模型。具體的做法是在訓練的過程中,動態(tài)生成對抗樣本,同時優(yōu)化模型使得在對抗樣本上的損失函數(shù)盡可能小。這個優(yōu)化問題是一個min-max問題,max部分要找到一個圖像上的擾動使其盡可能增大損失函數(shù),盡可能讓模型錯分類,同時要求它的模(||||F)盡可能的小,就是盡可能的肉眼不可見,不改變原圖像實際的類別。優(yōu)化問題可以通過映射梯度下降(Projected Gradient Descent)的方式來求解。首先對δ進行梯度上升,并保證||δ||F小于一定的值,通過K步操作后,然后再進行一次梯度下降。這種加入對抗樣本的訓練方式可以提高分類器的魯棒性,但同時分類器在原數(shù)據(jù)集的干凈測試集上分類的準確率也會下降,這個是副作用。提升魯棒性的原因在于分類器在使用包含對抗樣本訓練后泛化性能明顯提升。這種泛化性排除了數(shù)據(jù)集的bias,所以在測試集上的準確率有所下降,但模型捕捉的特征也更接近于人的認知。如果把訓練過程中梯度下降過程的可視化圖片中,可以看出,對普通模型的預測影響最大的圖像特征基本上是隨機的,和輸入的圖片中物體的實際輪廓關系不大,但是經(jīng)過對抗訓練的模型會捕捉到圖片中鳥或者飛機的邊緣,使得分類器和人的感知非常接近,這也就說明了對抗訓練的模型是魯棒的。

FreeLB—適用于自然語言理解的對抗學習

但是,近期來自JHU和Google的一篇文章中提出一種對抗訓練方法,能夠提升模型在干凈樣本測試集上的準確率。和前文所述Madry等人的訓練方法不同,其損失函數(shù)同時包含了干凈樣本和對抗樣本,并且對干凈樣本和對抗樣本分別使用兩組不同的Batch Normalization。作者們通過對比干凈樣本和對抗樣本的BatchNormalization的參數(shù),發(fā)現(xiàn)二者概率分布不同,所以在訓練過程中對干凈樣本和對抗樣本分別采用了不同的BatchNormalization。預測時,只使用干凈樣本對應的BatchNormalization參數(shù),最終在ImageNet數(shù)據(jù)集上將Efficient Net的TOP1的準確率最高提升了0.7個百分點,并且在數(shù)據(jù)越大的情況下提升越明顯。這給我們提供了一個使用對抗訓練來提升模型準確率的一種方式。

2.  常用的自然語言對抗訓練

自然語言中生成對抗的句子是有一定難度的,一般最常用的方法,是把句子中的一些詞替換成他的近義詞。對擾動也采用一種梯度上升的方式,具體做法是通過替換后的embedding向量和原句子的embedding向量求得差向量后,再求與梯度向量求夾角,夾角越小說明對損失函數(shù)的增加越多。一般情況下都是通過這種方式結合近義詞替換的約束來構造一些對抗樣本,但是這種近義詞替換與上下文關系密切,所以有時候也存在一些不合理的情況。

FreeLB—適用于自然語言理解的對抗學習

比如圖片中“He has a natural giftfor writing scripts.”中的gift,在此句中是”天賦”的意思,第二句中的“talent”也有天賦的意思,但是第三句中的“present”雖然和“gift”也是近義詞,都有“禮物”的意思,但是在上下文中確實不合理的。采用這種詞替換的方式時還需要結合其他約束方式來過濾掉那些不合理的對抗樣本,比如使用back-translationscores,但是這種方式需要使用額外的機器翻譯模型,在每次生成對抗樣本時檢測一次,這種方式的效率非常低;另一種方式就是找一些通用的語言規(guī)則,比如縮寫(what is 替換成 what's),名詞換成指示代詞(noun>this/that/it)等語義等價對抗規(guī)則(semanticallyequivalent adversarial rules,簡稱SEARs)方式來生成對抗樣本。

FreeLB—適用于自然語言理解的對抗學習

這種語義等價對抗規(guī)則產生的對抗樣本基本上保留了原義,但不是一種非常有效的攻擊方式,從實驗中我們可以看到SEARs在數(shù)據(jù)集Visual QA和SentimentAnalysis上產生對抗樣本的準確率最低只降到10.9%,這點跟之前提到的圖像對抗攻擊不同,在圖像上對沒有經(jīng)過對抗訓練的模型準確率能夠降底到0。實驗證明SEARs對抗訓練在數(shù)據(jù)集上的準確率表現(xiàn)也一般,而且也只能有限降低抵抗對抗樣本的敏感性。

FreeLB—適用于自然語言理解的對抗學習

Back-translationscores 不能保證一定能生成有效的對抗樣本,但確實提升模型的識別性能。在ACL paper【5】中在機器翻譯的過程中生成了一些對抗樣本,模型通過Back-translation Score過濾掉了一些不合理的對抗樣本,提升了模型的準確率。

由于在每一步梯度上升的過程中,需要對每種可能的詞替換計算Back-translation Score ,這種模型的消耗巨大,運行時間長,所以也不是最優(yōu)的方式。

FreeLB—適用于自然語言理解的對抗學習

另一種比較簡單粗暴的方式就是直接在詞的embedding上加入對抗擾動,雖然有時加入擾動不一定能夠真正對應到詞的embedding,但是以提升對抗訓練模型的性能為目的,而不關心生成的對抗樣本的質量,那這種方式也是可以采取的。圖中r是生成的對抗擾動,v是原來輸入詞的embedding向量,模型采用LSTM,把r加入到這個圖模型中,加入的擾動不影響整個模型的訓練,仍然可以用梯度下降求出embedding中更新參數(shù)的梯度,這種方式早在2017年被Goodfellow【6】用來增強語言模型的性能,當時通過對抗訓練把錯誤率從7.33%降低到6.21%。后來又提出了一種半監(jiān)督的訓練方式,在原來數(shù)據(jù)集中增加了一些沒有標簽的數(shù)據(jù),通過最小化無標簽數(shù)據(jù)的KL散度,最小化鄰域內最大的KL散度。通過增加無標簽的數(shù)據(jù)之后,錯誤率由6.21%降低到5.91%。在embedding中加入對抗擾動是目前一種比較有效的方式,我們的工作中也是采用了這種方式引入的對抗擾動。

▌關于transformer-based模型的對抗訓練

前面介紹的都是現(xiàn)有的一些對抗訓練的方法,接下來介紹一下我們的方法,以及一些相關的方法。

首先介紹一下我們設計模型的思路

我們只是在fine-tuning的階段做了對抗訓練任務,沒有在Bert等類似的預訓練階段加入對抗訓練,主要是預訓練本身就需要較大的計算量,而對抗訓練會額外增加一些計算量,所以在大量的數(shù)據(jù)集上我們沒有在預訓練的階段做對抗訓練;我們也是在詞的 embedding上加入了一些擾動;我們保持了Bert和RoBERTA預訓練模型的超參數(shù),只改變我們加入了對抗訓練部分的超參數(shù)。

FreeLB—適用于自然語言理解的對抗學習

普通訓練模型RoBERTA為baseline,對抗訓練的baseline實驗是在加入了擾動后的embedding數(shù)據(jù)后采用K-PGD進行對抗訓練,與RoBERTA模型相比,K-PGD不會降低RoBERTA的性能,并且在大部分數(shù)據(jù)集中有所提升。

1.  標準的對抗訓練:映射式梯度下降(Projected Gradient Descent)

FreeLB—適用于自然語言理解的對抗學習

KPGD的一般流程如下,如果輸入詞向量大小是n× d,那么我們加入的擾動delta 也是n×d,并且||δ||F小于epsilon,在K-步的梯度計算過程中首先要初始化δ0,然后計算K步增加的梯度,通過gadv/||gadv||F模,乘以單步的學習率,加上前一步的δ值,最后得到的δ都會映射到約束范圍內(如果超過ε則取ε值),這種normalization的操作是加快模型收斂的速度,因為模型訓練趨近最優(yōu)值附近時梯度比較小,通過這種標準化操作可以增加有效的步長,收斂更快。

FreeLB—適用于自然語言理解的對抗學習

K-PGD優(yōu)點和缺點:

非常簡單并且有效的方法。比較低效,因為需要做K倍的后向傳播過程。

梯度更新時對輸入的embedding求的梯度,在這個過程中也可以得到所有神經(jīng)網(wǎng)絡參數(shù)的梯度,并不需要額外的計算量。在FreeAT和YOPO兩篇也是利用用梯度上升過程獲取參數(shù)的梯度,來減少總的前向-后向傳播的次數(shù)。

2.  PGD的變種:FreeAT和YOPO

FreeLB—適用于自然語言理解的對抗學習

利用之前對輸入求梯度進行梯度上升的過程中可以獲得參數(shù)θ的梯度,所以FreeAT中對輸入每做一次梯度上升時,同時對參數(shù)θ做一次梯度下降操作。在K-PGD中比如K=2,那么需要經(jīng)過3步(梯度上升之后)才更新一次參數(shù),但FreeAT每一步迭代生成對抗樣本時,參數(shù)θ也同時更新,總的對抗訓練步驟和普通模型訓練時一致,消耗時間也近似,但是比KPGD縮短了很多。

FreeLB—適用于自然語言理解的對抗學習

但FreeAT也有副作用,就是會在同一個樣本附近更新多次參數(shù),PGD的隨機性有助于模型的泛化能力。參數(shù)在一個batch的樣本上梯度下降m次得到結果稱為batch replay,參數(shù)更新次數(shù)越多,模型準確率隨之下降的越多。柱狀圖是模型普通訓練方式(natural trained)的準確率和訓練次數(shù)的關系,根據(jù)這個關系在FreeAT中設置replay =8,訓練時間比普通模型多5min,準確率保持與PGD差不多,但是魯棒性有所提升。

但是freeAT中也存在一些問題,我們看到δt更新的公式中,δt是θt-1的函數(shù),就是每次更新時仍然使用了上一步驟中的參數(shù),參數(shù)存在滯后性,所以產生的對抗效果不夠強。

FreeLB—適用于自然語言理解的對抗學習

YOPO模型中每進行一次前向-后向傳播后,固定損失函數(shù)關于第一層輸出的梯度,然后用梯度乘以第一層對抗樣本參數(shù)的雅克比矩陣來更新梯度,這一操作被稱為innter steps ,這個過程重復n步,這種方式也能增加對抗樣本的額強度,減少了整個前向-后向傳播次數(shù)。比如之前使用K-PGD得到了一些對抗樣本,而使用YOPO僅用K/2步就可以得到相同強度的對抗樣本。

YOPO外層循環(huán)更新參數(shù)的梯度時會疊加上inner step中生成對抗樣本時每一步的梯度(gθ(1),gθ(2)),一般是這些梯度的平均值。這種做法有點類似于通過增大batch size的方式來加快模型的收斂。YOPO訓練速度比其他對抗訓練方式要快很多,準確率相比FreeAT也有提升,同時也提升了模型的魯棒性(防御攻擊能力)。最后文章并未指出通用的規(guī)則來表示具體減少的循環(huán)次數(shù),只是發(fā)現(xiàn)用了更少的循環(huán)次數(shù),得到了更好的結果。

FreeLB—適用于自然語言理解的對抗學習

我們也同時存在疑問:文章中的inner step是必須存在的嗎?

文中所說的第一層是卷積操作,而卷積的操作是一個線性操作,所以第一層的梯度是一個常數(shù),這樣inner step中傳遞的梯度與對抗樣本無關,雖然考慮了projection的梯度上升過程,比如循環(huán)了2次,那么只是相當于是用了兩倍的步長更新參數(shù),inner step沒有起到明顯的作用。但是文章提出的對抗訓練思想還是很有借鑒意義的。

FreeLB—適用于自然語言理解的對抗學習

3.  我們的模型FreeLB

FreeLB—適用于自然語言理解的對抗學習

在我們的實驗中,就借鑒了YOPO的對抗訓練方式,但我們摒棄了YOPO提倡的inner step步驟。這樣,我們的模型只在K步梯度上升的過程中積累梯度,并在之后用積累的梯度進行參數(shù)更新。這與并行優(yōu)化非常類似,如左圖所示,并行優(yōu)化會將3個圖片分別放在了3個GPU上進行訓練,同時各自計算梯度,然后計算三個圖片的平均梯度,這樣batch size相當于原來的的3倍,模型訓練時的learning_rate也可以增加到原來的3倍,但總迭代次數(shù)可以減少到原來的1/3,并且往往能達到同樣的效果。自然語言理解任務,尤其是GLUE上所需要的迭代次數(shù)一般較少,所以與之不同的是,我們沒有將總迭代次數(shù)(模型參數(shù)更新次數(shù))減少到原來的1/K,但這種方式相比于K-PGD仍然提高了梯度的利用率,并能夠進一步提升模型性能。

4.  實驗結果

FreeLB—適用于自然語言理解的對抗學習

我們將我們的方法與YOPO進行對比。在實現(xiàn)YOPO時,我們把第一層換成了非線性的,這樣在inner step中傳遞的梯度就不是一個常數(shù)。

我們嘗試了不同inner step的數(shù)量,YOPO-3-2 就是包含了2個inner step,YOPO-3-3就是包含了3個inner step。同時,為保證等效步長一致,在左圖中,我們還將每個inner step的長度換成FreeLB-3的梯度上升步長除以inner step數(shù)。而在右圖中每個inner step的步長和FreeLB一致,這樣YOPO等效步長更長。根據(jù)實驗結果,我們發(fā)現(xiàn)inner step過程沒有表現(xiàn)出期望的結果,有時增加inner step還會使結果變差。步長大一些的時候(右圖)YOPO與FreeLB的差距會縮小,但仍然沒有變得更好。

FreeLB—適用于自然語言理解的對抗學習

之前提到我們把生成的對抗樣本加入到了模型的輸入中,相當于增加了數(shù)據(jù)的batch size,目標函數(shù)可以看成最大化對抗樣本的損失函數(shù)在某個鄰域內的值,當有K個對抗樣本時,相當于優(yōu)化了在原來輸入樣本附近的K個不同區(qū)域的最大loss值。最后對目標函數(shù)求最小值來優(yōu)化求解模型的參數(shù),進行預測。我們的方法確實有一定的提升,但是背后的原因目前還沒有去進一步證明,有文章指出【8】,如果一個模型對T中不同的變換,比如對輸入進行了T種變換但預測結果都是正確,那么這模型的泛化錯誤率還比原來沒有變換的模型降到根號T倍(上限)。

FreeLB—適用于自然語言理解的對抗學習

實驗中的算法會積累中間對抗樣本的梯度,在K步之后更新參數(shù),積累得到的對抗樣本的梯度都是使用當前步驟下的參數(shù),避免了FreeAT中參數(shù)過期的問題,所以實驗結果性能優(yōu)于其他對抗訓練的模型。并在GLUE很多數(shù)據(jù)集上都得到了好的結果。

FreeLB—適用于自然語言理解的對抗學習

Dropout的影響在圖片的抗訓練領域里沒有得到廣泛關注,因為目前在圖像領域在大多情況下已經(jīng)不再使用Dropout了,但是在基于Transformer的語言模型里還是需要使用Dropout,即使是在fine tuning過程,我們仍使用了Dropout。為了增加對抗的強度,我們需要在每步梯度上升時固定Dropout Mask,這與FreeAT過期問題相似,因為網(wǎng)絡每一層的結構都不相同,得到的輸入梯度有很多的噪聲。從目標函數(shù)的角度來看,我們想優(yōu)化對于不同dropout mask下?lián)p失函數(shù)的期望,損失函數(shù)在K-step里是所有樣本損失之和,所以需要在每一步里的dropout保持相同。

FreeLB—適用于自然語言理解的對抗學習

FreeLB—適用于自然語言理解的對抗學習

將我們的模型用于GLUE的其他數(shù)據(jù)集上也有一些得到了不同程度的提升,另外將freeLB用在BERT-base模型上,整體的score提升了1.1%,用在RoBERTa模型上能提升0.3%,另外有時候FreeLB單個模型,性能遠遠超過了一些集成的模型。

▌結論

對抗訓練可以提升自然語言模型預測的性能,雖然我們只是把對抗訓練過程用在fine-tuning階段內,也同樣提升了模型的準確率。從大量實驗中可以看出對抗訓練在提升模型的泛化能力上潛力巨大。

未來希望能夠找到一種使得對抗訓練,能夠運用在語言模型預訓練階段的高效對抗訓練方法,預訓練階段需要相當大的計算量,目前認為最簡單的解決方式也是使用large-batch的訓練方式。最后感謝我的導師和mentor們,也感謝一起實習工作的同事,與他們的日常交流也使我受益匪淺。

▌參考資料

1. J.Goodfellow, J. Shlens, and C. Szegedy. Explaining and harnessing adversarialexamples. arXiv:1412.6572,2.Ribeiro, M.T., Singh, S., & Guestrin, C.. Semantically equivalent adversarial rulesfor debugging nlp models. ACL (2018)3.Tsipras,D., Santurkar, S., Engstrom, L., Turner, A., & Madry, A. (2018). Robustnessmay be at odds with accuracy.ICLR (2019).4.Xie, C.,Tan, M., Gong, B., Wang, J., Yuille, A., & Le, Q. V.. Adversarial ExamplesImprove Image Recognition. arXiv:1911.09665.5.Cheng, Yong, Lu Jiang, and Wolfgang Macherey. "Robust NeuralMachine Translation with Doubly Adversarial Inputs."ACL(2019).6.Miyato, T., Dai, A. M., & Goodfellow. Adversarial trainingmethods for semi-supervised text classification.ICLR (2017)。7.Shafahi, A., Najibi, M., Ghiasi, A., Xu, Z., Dickerson, J., Studer,C., ... & Goldstein, T.. Adversarial Training for Free。 NeurIPS(2019).8.Sokolic, J., Giryes, R., Sapiro, G., & Rodrigues, M.Generalization Error of Invariant Classifiers. AISTATS (2017).

聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

人工智能 獵頭職位 更多
掃碼關注公眾號
OFweek人工智能網(wǎng)
獲取更多精彩內容
文章糾錯
x
*文字標題:
*糾錯內容:
聯(lián)系郵箱:
*驗 證 碼:

粵公網(wǎng)安備 44030502002758號