模型提效的另一条路:数据增强
NLP提效,除了選擇合適的模型,就是數(shù)據(jù)增強了
作者:十方,公眾號:煉丹筆記如何用有限的數(shù)據(jù)做出最佳的效果?除了一個優(yōu)秀的模型以外,最有效的方法就是做數(shù)據(jù)增強了。自然語言處理(NLP)不同于圖像,可以做裁剪,反轉(zhuǎn),縮放等操作來增強,而是有文本特別的處理方式。這篇論文《CODA: CONTRAST-ENHANCED AND DIVERSITYPROMOTING DATA AUGMENTATION FOR NATURAL LANGUAGE UNDERSTANDING》提出的CoDA方案號稱能在Roberta-large上平均提升2.2%的效果,那我們就來看看這篇到底提出了哪些方法吧。
數(shù)據(jù)增強
這篇論文主要探討如何在文本分類做數(shù)據(jù)增強,當(dāng)然這些數(shù)據(jù)增強的方法一樣可以用在其他NLP任務(wù)中。
一句話概括數(shù)據(jù)增強,就是把原有訓(xùn)練集合:
通過某種變換,轉(zhuǎn)變成新的訓(xùn)練集合:
我們用這兩個集合的數(shù)據(jù),去學(xué)習(xí)參數(shù):
參考以往論文給出的數(shù)據(jù)增強的方法,可以概括為下圖:
back-translate(回譯)很容易理解,如上圖,英語翻譯成德語又翻譯回英語,作為訓(xùn)練樣本。
Adversarial Training(對抗訓(xùn)練):對抗訓(xùn)練方法被用于文本數(shù)據(jù)提升模型的魯棒性。對抗訓(xùn)練不需要任何額外的領(lǐng)域知識,只需要模型本身產(chǎn)出樣本,這些樣本都是模型最容易預(yù)測錯的樣本。下面是兩個最常用的對抗訓(xùn)練的loss。
其實就是要找到模型認為相似的樣本加入到模型中訓(xùn)練,但是在實際使用時,我們很難獲得準(zhǔn)確的對抗樣本,因此可以用模型梯度構(gòu)建相似的對抗樣本,如下公式所示:
提升多樣性
上述數(shù)據(jù)增強方法思路其實都很一致,找到已有樣本的相似樣本,訓(xùn)練目標(biāo)也較為一致。這時候思考一個問題,不同的數(shù)據(jù)增強方法是等同的,還是互補的呢?是否可以混合所有數(shù)據(jù)增強方法提升模型泛化能力呢?CV上已經(jīng)證明是有效的,應(yīng)用到文本就難多了,對文本輕微的可能會帶來語意上的巨大差異。
本文提出了多種混合數(shù)據(jù)增強的方法,如下圖所示:
這3種其實沒啥好說的,字面意思。
(a)就是在一個mini-batch中,采用一個隨機的數(shù)據(jù)增強方法把x變?yōu)閤',
(b)是混合插值,是對兩個樣本的embedding ei和ej做操作,其中a是符合beta分布。
(c)就是把x用一系列的數(shù)據(jù)增強方法變成x'。
值得注意的是sequential stacking的方式,牽涉到各個增強方法的順序,并不是所有順序都是合理的,比如我們不可能在生成對抗訓(xùn)練樣本后,去做回譯,正確的融合方式如下:
這種融合方式,可以簡單的用下面的公式表示:
先用xi做回譯得到xi',然后找到模型最難分辨的對抗樣本,最后計算原樣本和對抗樣本的loss。我們可以看到loss有3項,第一項就是正常的交叉熵,第二項是對抗loss,第三項是一致性的loss,即樣本和對抗樣本理應(yīng)相似度較高,這里RCS定義如下:
對抗正則化
我們看上述loss的3項,反應(yīng)了我們對抗樣本xi要和xi'預(yù)估結(jié)果要一致,然而卻沒反應(yīng)xi'要和xj不一致。為了充分利用數(shù)據(jù)增強后的數(shù)據(jù),論文又提出了對抗學(xué)習(xí)目標(biāo)。考慮到xi'是由xi生成的,因此模型應(yīng)該學(xué)到每個數(shù)據(jù)增強樣本的“爸爸”是誰。如下圖所示:
memory是用來存儲歷史embeding的,作為大量的負樣本。為了避免encoder更新過快(會導(dǎo)致embeding不一致),因此提出momentum key encoder,該 encoder不是通過梯度更新參數(shù)的,而是通過下式:
當(dāng)有一個樣本xi,增強樣本xi',我們會得到3個embedding:
新的對抗學(xué)習(xí)目標(biāo)如下式:
其中t是溫度,M就是memory bank,該式表達的意思也很簡單,就是樣本xi和增強樣本xi'和momentum key encoder產(chǎn)出的ki的相似度,要高于memory bank的負樣本。和之前的loss一整合,就成了我們最終的學(xué)習(xí)目標(biāo):
實驗
多種增強方式混搭的效果比較好,采用回譯+對抗訓(xùn)練stack方式取得了最佳效果。關(guān)于調(diào)參的細節(jié)可以看原文。我們著重看下采用數(shù)據(jù)增強帶來的模型提效增益,從下圖可以看到,用CoDA的效果,還是很顯著的:
更多干貨,請關(guān)注微信公眾號:煉丹筆記總結(jié)
以上是生活随笔為你收集整理的模型提效的另一条路:数据增强的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AAAI21最佳论文Informer:效
- 下一篇: Transformer Family