FreeLB—適用于自然語言理解的對抗學(xué)習(xí)
導(dǎo) 讀
大家好,今天介紹的是暑期我在微軟實(shí)習(xí)期間主要做的工作,關(guān)于自然語言模型對抗訓(xùn)練的問題,也就是使用更好的對抗訓(xùn)練的方式增強(qiáng)transformer-based的模型在自然語言理解領(lǐng)域的效果。這項工作由我和我的幾位mentor,導(dǎo)師以及manager一起完成的。
這次分享共包括一下幾個部分:
對抗訓(xùn)練的介紹
關(guān)于transformer-based模型的對抗訓(xùn)練
結(jié)論
▌對抗訓(xùn)練的介紹
1、圖片分類器的對抗訓(xùn)練
對輸入的樣本做微小的改動很容易讓機(jī)器學(xué)習(xí)模型出現(xiàn)誤判,這種操作稱為對抗性攻擊,這對實(shí)際應(yīng)用模型帶來了極大的風(fēng)險。一般情況下我們通過在輸入中加入對抗樣本,使得樣本能夠正視這種微小的改動,從而增加模型的魯棒性。
對抗訓(xùn)練最初用于圖像識別領(lǐng)域,然后演變到自然語言處理的對抗訓(xùn)練,我們也是基于前人的理論上對自然語言中的對抗訓(xùn)練進(jìn)行了改進(jìn)。
最初的對抗樣本概念是基于圖像領(lǐng)域,就是我們對一張自然的圖片加一個人眼不可見(微。┑臄_動,這種擾動不改變圖像本身的類別,但是神經(jīng)網(wǎng)絡(luò)模型卻把他識別為一個完全不同的類別。比如圖片中本來是一個“pig”,通過加入一個微小的擾動,模型卻識別為"airliner"。這種對抗樣本對于普通的神經(jīng)網(wǎng)絡(luò)來說幾乎是普遍存在的,或者說對任意的圖片我們都能找到對抗樣本使得神經(jīng)網(wǎng)絡(luò)模型預(yù)測出現(xiàn)錯誤,利用這種操作我們幾乎能使模型在訓(xùn)練集上的準(zhǔn)確率降為0;在自然語言中也存在對抗樣本,但是構(gòu)造對抗樣本比圖像領(lǐng)域要復(fù)雜一些,根據(jù)Ribeiro在文章中提出的,根據(jù)一些詞變換的規(guī)則(Semantically Equivalent Adversarial Rules)來生成對抗樣本,比如把"What is" 改成縮寫形式"What's",或者在語句結(jié)束時多加一個問號"?",就能使得基于神經(jīng)網(wǎng)絡(luò)的自然語言模型在某些情況下給出一個錯誤的分類。
為了提升使圖像分類器對抗攻擊的魯棒性,可以使用對抗樣本訓(xùn)練模型。具體的做法是在訓(xùn)練的過程中,動態(tài)生成對抗樣本,同時優(yōu)化模型使得在對抗樣本上的損失函數(shù)盡可能小。這個優(yōu)化問題是一個min-max問題,max部分要找到一個圖像上的擾動使其盡可能增大損失函數(shù),盡可能讓模型錯分類,同時要求它的模(||||F)盡可能的小,就是盡可能的肉眼不可見,不改變原圖像實(shí)際的類別。優(yōu)化問題可以通過映射梯度下降(Projected Gradient Descent)的方式來求解。首先對δ進(jìn)行梯度上升,并保證||δ||F小于一定的值,通過K步操作后,然后再進(jìn)行一次梯度下降。這種加入對抗樣本的訓(xùn)練方式可以提高分類器的魯棒性,但同時分類器在原數(shù)據(jù)集的干凈測試集上分類的準(zhǔn)確率也會下降,這個是副作用。提升魯棒性的原因在于分類器在使用包含對抗樣本訓(xùn)練后泛化性能明顯提升。這種泛化性排除了數(shù)據(jù)集的bias,所以在測試集上的準(zhǔn)確率有所下降,但模型捕捉的特征也更接近于人的認(rèn)知。如果把訓(xùn)練過程中梯度下降過程的可視化圖片中,可以看出,對普通模型的預(yù)測影響最大的圖像特征基本上是隨機(jī)的,和輸入的圖片中物體的實(shí)際輪廓關(guān)系不大,但是經(jīng)過對抗訓(xùn)練的模型會捕捉到圖片中鳥或者飛機(jī)的邊緣,使得分類器和人的感知非常接近,這也就說明了對抗訓(xùn)練的模型是魯棒的。
但是,近期來自JHU和Google的一篇文章中提出一種對抗訓(xùn)練方法,能夠提升模型在干凈樣本測試集上的準(zhǔn)確率。和前文所述Madry等人的訓(xùn)練方法不同,其損失函數(shù)同時包含了干凈樣本和對抗樣本,并且對干凈樣本和對抗樣本分別使用兩組不同的Batch Normalization。作者們通過對比干凈樣本和對抗樣本的BatchNormalization的參數(shù),發(fā)現(xiàn)二者概率分布不同,所以在訓(xùn)練過程中對干凈樣本和對抗樣本分別采用了不同的BatchNormalization。預(yù)測時,只使用干凈樣本對應(yīng)的BatchNormalization參數(shù),最終在ImageNet數(shù)據(jù)集上將Efficient Net的TOP1的準(zhǔn)確率最高提升了0.7個百分點(diǎn),并且在數(shù)據(jù)越大的情況下提升越明顯。這給我們提供了一個使用對抗訓(xùn)練來提升模型準(zhǔn)確率的一種方式。
2. 常用的自然語言對抗訓(xùn)練
自然語言中生成對抗的句子是有一定難度的,一般最常用的方法,是把句子中的一些詞替換成他的近義詞。對擾動也采用一種梯度上升的方式,具體做法是通過替換后的embedding向量和原句子的embedding向量求得差向量后,再求與梯度向量求夾角,夾角越小說明對損失函數(shù)的增加越多。一般情況下都是通過這種方式結(jié)合近義詞替換的約束來構(gòu)造一些對抗樣本,但是這種近義詞替換與上下文關(guān)系密切,所以有時候也存在一些不合理的情況。
比如圖片中“He has a natural giftfor writing scripts.”中的gift,在此句中是”天賦”的意思,第二句中的“talent”也有天賦的意思,但是第三句中的“present”雖然和“gift”也是近義詞,都有“禮物”的意思,但是在上下文中確實(shí)不合理的。采用這種詞替換的方式時還需要結(jié)合其他約束方式來過濾掉那些不合理的對抗樣本,比如使用back-translationscores,但是這種方式需要使用額外的機(jī)器翻譯模型,在每次生成對抗樣本時檢測一次,這種方式的效率非常低;另一種方式就是找一些通用的語言規(guī)則,比如縮寫(what is 替換成 what's),名詞換成指示代詞(noun>this/that/it)等語義等價對抗規(guī)則(semanticallyequivalent adversarial rules,簡稱SEARs)方式來生成對抗樣本。
這種語義等價對抗規(guī)則產(chǎn)生的對抗樣本基本上保留了原義,但不是一種非常有效的攻擊方式,從實(shí)驗中我們可以看到SEARs在數(shù)據(jù)集Visual QA和SentimentAnalysis上產(chǎn)生對抗樣本的準(zhǔn)確率最低只降到10.9%,這點(diǎn)跟之前提到的圖像對抗攻擊不同,在圖像上對沒有經(jīng)過對抗訓(xùn)練的模型準(zhǔn)確率能夠降底到0。實(shí)驗證明SEARs對抗訓(xùn)練在數(shù)據(jù)集上的準(zhǔn)確率表現(xiàn)也一般,而且也只能有限降低抵抗對抗樣本的敏感性。
Back-translationscores 不能保證一定能生成有效的對抗樣本,但確實(shí)提升模型的識別性能。在ACL paper【5】中在機(jī)器翻譯的過程中生成了一些對抗樣本,模型通過Back-translation Score過濾掉了一些不合理的對抗樣本,提升了模型的準(zhǔn)確率。
由于在每一步梯度上升的過程中,需要對每種可能的詞替換計算Back-translation Score ,這種模型的消耗巨大,運(yùn)行時間長,所以也不是最優(yōu)的方式。
另一種比較簡單粗暴的方式就是直接在詞的embedding上加入對抗擾動,雖然有時加入擾動不一定能夠真正對應(yīng)到詞的embedding,但是以提升對抗訓(xùn)練模型的性能為目的,而不關(guān)心生成的對抗樣本的質(zhì)量,那這種方式也是可以采取的。圖中r是生成的對抗擾動,v是原來輸入詞的embedding向量,模型采用LSTM,把r加入到這個圖模型中,加入的擾動不影響整個模型的訓(xùn)練,仍然可以用梯度下降求出embedding中更新參數(shù)的梯度,這種方式早在2017年被Goodfellow【6】用來增強(qiáng)語言模型的性能,當(dāng)時通過對抗訓(xùn)練把錯誤率從7.33%降低到6.21%。后來又提出了一種半監(jiān)督的訓(xùn)練方式,在原來數(shù)據(jù)集中增加了一些沒有標(biāo)簽的數(shù)據(jù),通過最小化無標(biāo)簽數(shù)據(jù)的KL散度,最小化鄰域內(nèi)最大的KL散度。通過增加無標(biāo)簽的數(shù)據(jù)之后,錯誤率由6.21%降低到5.91%。在embedding中加入對抗擾動是目前一種比較有效的方式,我們的工作中也是采用了這種方式引入的對抗擾動。
▌關(guān)于transformer-based模型的對抗訓(xùn)練
前面介紹的都是現(xiàn)有的一些對抗訓(xùn)練的方法,接下來介紹一下我們的方法,以及一些相關(guān)的方法。
首先介紹一下我們設(shè)計模型的思路:
我們只是在fine-tuning的階段做了對抗訓(xùn)練任務(wù),沒有在Bert等類似的預(yù)訓(xùn)練階段加入對抗訓(xùn)練,主要是預(yù)訓(xùn)練本身就需要較大的計算量,而對抗訓(xùn)練會額外增加一些計算量,所以在大量的數(shù)據(jù)集上我們沒有在預(yù)訓(xùn)練的階段做對抗訓(xùn)練;我們也是在詞的 embedding上加入了一些擾動;我們保持了Bert和RoBERTA預(yù)訓(xùn)練模型的超參數(shù),只改變我們加入了對抗訓(xùn)練部分的超參數(shù)。
普通訓(xùn)練模型RoBERTA為baseline,對抗訓(xùn)練的baseline實(shí)驗是在加入了擾動后的embedding數(shù)據(jù)后采用K-PGD進(jìn)行對抗訓(xùn)練,與RoBERTA模型相比,K-PGD不會降低RoBERTA的性能,并且在大部分?jǐn)?shù)據(jù)集中有所提升。
1. 標(biāo)準(zhǔn)的對抗訓(xùn)練:映射式梯度下降(Projected Gradient Descent)
KPGD的一般流程如下,如果輸入詞向量大小是n× d,那么我們加入的擾動delta 也是n×d,并且||δ||F小于epsilon,在K-步的梯度計算過程中首先要初始化δ0,然后計算K步增加的梯度,通過gadv/||gadv||F模,乘以單步的學(xué)習(xí)率,加上前一步的δ值,最后得到的δ都會映射到約束范圍內(nèi)(如果超過ε則取ε值),這種normalization的操作是加快模型收斂的速度,因為模型訓(xùn)練趨近最優(yōu)值附近時梯度比較小,通過這種標(biāo)準(zhǔn)化操作可以增加有效的步長,收斂更快。
K-PGD優(yōu)點(diǎn)和缺點(diǎn):
非常簡單并且有效的方法。比較低效,因為需要做K倍的后向傳播過程。
梯度更新時對輸入的embedding求的梯度,在這個過程中也可以得到所有神經(jīng)網(wǎng)絡(luò)參數(shù)的梯度,并不需要額外的計算量。在FreeAT和YOPO兩篇也是利用用梯度上升過程獲取參數(shù)的梯度,來減少總的前向-后向傳播的次數(shù)。
2. PGD的變種:FreeAT和YOPO
利用之前對輸入求梯度進(jìn)行梯度上升的過程中可以獲得參數(shù)θ的梯度,所以FreeAT中對輸入每做一次梯度上升時,同時對參數(shù)θ做一次梯度下降操作。在K-PGD中比如K=2,那么需要經(jīng)過3步(梯度上升之后)才更新一次參數(shù),但FreeAT每一步迭代生成對抗樣本時,參數(shù)θ也同時更新,總的對抗訓(xùn)練步驟和普通模型訓(xùn)練時一致,消耗時間也近似,但是比KPGD縮短了很多。
但FreeAT也有副作用,就是會在同一個樣本附近更新多次參數(shù),PGD的隨機(jī)性有助于模型的泛化能力。參數(shù)在一個batch的樣本上梯度下降m次得到結(jié)果稱為batch replay,參數(shù)更新次數(shù)越多,模型準(zhǔn)確率隨之下降的越多。柱狀圖是模型普通訓(xùn)練方式(natural trained)的準(zhǔn)確率和訓(xùn)練次數(shù)的關(guān)系,根據(jù)這個關(guān)系在FreeAT中設(shè)置replay =8,訓(xùn)練時間比普通模型多5min,準(zhǔn)確率保持與PGD差不多,但是魯棒性有所提升。
但是freeAT中也存在一些問題,我們看到δt更新的公式中,δt是θt-1的函數(shù),就是每次更新時仍然使用了上一步驟中的參數(shù),參數(shù)存在滯后性,所以產(chǎn)生的對抗效果不夠強(qiáng)。
YOPO模型中每進(jìn)行一次前向-后向傳播后,固定損失函數(shù)關(guān)于第一層輸出的梯度,然后用梯度乘以第一層對抗樣本參數(shù)的雅克比矩陣來更新梯度,這一操作被稱為innter steps ,這個過程重復(fù)n步,這種方式也能增加對抗樣本的額強(qiáng)度,減少了整個前向-后向傳播次數(shù)。比如之前使用K-PGD得到了一些對抗樣本,而使用YOPO僅用K/2步就可以得到相同強(qiáng)度的對抗樣本。
YOPO外層循環(huán)更新參數(shù)的梯度時會疊加上inner step中生成對抗樣本時每一步的梯度(gθ(1),gθ(2)),一般是這些梯度的平均值。這種做法有點(diǎn)類似于通過增大batch size的方式來加快模型的收斂。YOPO訓(xùn)練速度比其他對抗訓(xùn)練方式要快很多,準(zhǔn)確率相比FreeAT也有提升,同時也提升了模型的魯棒性(防御攻擊能力)。最后文章并未指出通用的規(guī)則來表示具體減少的循環(huán)次數(shù),只是發(fā)現(xiàn)用了更少的循環(huán)次數(shù),得到了更好的結(jié)果。
我們也同時存在疑問:文章中的inner step是必須存在的嗎?
文中所說的第一層是卷積操作,而卷積的操作是一個線性操作,所以第一層的梯度是一個常數(shù),這樣inner step中傳遞的梯度與對抗樣本無關(guān),雖然考慮了projection的梯度上升過程,比如循環(huán)了2次,那么只是相當(dāng)于是用了兩倍的步長更新參數(shù),inner step沒有起到明顯的作用。但是文章提出的對抗訓(xùn)練思想還是很有借鑒意義的。
3. 我們的模型FreeLB
在我們的實(shí)驗中,就借鑒了YOPO的對抗訓(xùn)練方式,但我們摒棄了YOPO提倡的inner step步驟。這樣,我們的模型只在K步梯度上升的過程中積累梯度,并在之后用積累的梯度進(jìn)行參數(shù)更新。這與并行優(yōu)化非常類似,如左圖所示,并行優(yōu)化會將3個圖片分別放在了3個GPU上進(jìn)行訓(xùn)練,同時各自計算梯度,然后計算三個圖片的平均梯度,這樣batch size相當(dāng)于原來的的3倍,模型訓(xùn)練時的learning_rate也可以增加到原來的3倍,但總迭代次數(shù)可以減少到原來的1/3,并且往往能達(dá)到同樣的效果。自然語言理解任務(wù),尤其是GLUE上所需要的迭代次數(shù)一般較少,所以與之不同的是,我們沒有將總迭代次數(shù)(模型參數(shù)更新次數(shù))減少到原來的1/K,但這種方式相比于K-PGD仍然提高了梯度的利用率,并能夠進(jìn)一步提升模型性能。
4. 實(shí)驗結(jié)果
我們將我們的方法與YOPO進(jìn)行對比。在實(shí)現(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ù)實(shí)驗結(jié)果,我們發(fā)現(xiàn)inner step過程沒有表現(xiàn)出期望的結(jié)果,有時增加inner step還會使結(jié)果變差。步長大一些的時候(右圖)YOPO與FreeLB的差距會縮小,但仍然沒有變得更好。
之前提到我們把生成的對抗樣本加入到了模型的輸入中,相當(dāng)于增加了數(shù)據(jù)的batch size,目標(biāo)函數(shù)可以看成最大化對抗樣本的損失函數(shù)在某個鄰域內(nèi)的值,當(dāng)有K個對抗樣本時,相當(dāng)于優(yōu)化了在原來輸入樣本附近的K個不同區(qū)域的最大loss值。最后對目標(biāo)函數(shù)求最小值來優(yōu)化求解模型的參數(shù),進(jìn)行預(yù)測。我們的方法確實(shí)有一定的提升,但是背后的原因目前還沒有去進(jìn)一步證明,有文章指出【8】,如果一個模型對T中不同的變換,比如對輸入進(jìn)行了T種變換但預(yù)測結(jié)果都是正確,那么這模型的泛化錯誤率還比原來沒有變換的模型降到根號T倍(上限)。
實(shí)驗中的算法會積累中間對抗樣本的梯度,在K步之后更新參數(shù),積累得到的對抗樣本的梯度都是使用當(dāng)前步驟下的參數(shù),避免了FreeAT中參數(shù)過期的問題,所以實(shí)驗結(jié)果性能優(yōu)于其他對抗訓(xùn)練的模型。并在GLUE很多數(shù)據(jù)集上都得到了好的結(jié)果。
Dropout的影響在圖片的抗訓(xùn)練領(lǐng)域里沒有得到廣泛關(guān)注,因為目前在圖像領(lǐng)域在大多情況下已經(jīng)不再使用Dropout了,但是在基于Transformer的語言模型里還是需要使用Dropout,即使是在fine tuning過程,我們?nèi)允褂昧薉ropout。為了增加對抗的強(qiáng)度,我們需要在每步梯度上升時固定Dropout Mask,這與FreeAT過期問題相似,因為網(wǎng)絡(luò)每一層的結(jié)構(gòu)都不相同,得到的輸入梯度有很多的噪聲。從目標(biāo)函數(shù)的角度來看,我們想優(yōu)化對于不同dropout mask下?lián)p失函數(shù)的期望,損失函數(shù)在K-step里是所有樣本損失之和,所以需要在每一步里的dropout保持相同。
將我們的模型用于GLUE的其他數(shù)據(jù)集上也有一些得到了不同程度的提升,另外將freeLB用在BERT-base模型上,整體的score提升了1.1%,用在RoBERTa模型上能提升0.3%,另外有時候FreeLB單個模型,性能遠(yuǎn)遠(yuǎn)超過了一些集成的模型。
▌結(jié)論
對抗訓(xùn)練可以提升自然語言模型預(yù)測的性能,雖然我們只是把對抗訓(xùn)練過程用在fine-tuning階段內(nèi),也同樣提升了模型的準(zhǔn)確率。從大量實(shí)驗中可以看出對抗訓(xùn)練在提升模型的泛化能力上潛力巨大。
未來希望能夠找到一種使得對抗訓(xùn)練,能夠運(yùn)用在語言模型預(yù)訓(xùn)練階段的高效對抗訓(xùn)練方法,預(yù)訓(xùn)練階段需要相當(dāng)大的計算量,目前認(rèn)為最簡單的解決方式也是使用large-batch的訓(xùn)練方式。最后感謝我的導(dǎo)師和mentor們,也感謝一起實(shí)習(xí)工作的同事,與他們的日常交流也使我受益匪淺。
▌參考資料
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).
請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
-
11月20日火熱報名中>> 2024 智能家居出海論壇
-
11月28日立即報名>>> 2024工程師系列—工業(yè)電子技術(shù)在線會議
-
12月19日立即報名>> 【線下會議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會
-
即日-12.26火熱報名中>> OFweek2024中國智造CIO在線峰會
-
即日-2025.8.1立即下載>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍(lán)皮書》
-
精彩回顧立即查看>> 【在線會議】多物理場仿真助跑新能源汽車
推薦專題
-
10 臺積電7nm停供中國大陸
- 高級軟件工程師 廣東省/深圳市
- 自動化高級工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市