1 前言
今天分享一種利用Dice Loss來解決NLP任務(wù)中樣本不平衡性問題的方法犁柜,該思路來自2020年ACL會議一篇paper《Dice Loss for Data-imbalanced NLP Tasks》堂淡。在NLP任務(wù)绢淀,我們最常見用的目標(biāo)函數(shù)就是交叉熵。在很多數(shù)據(jù)場景下覆履,存在樣本不平性的問題,使用交叉熵會有些缺陷栖雾,因?yàn)樗谟?jì)算過程中將每類別的權(quán)重視為一樣伟众,這樣模型在訓(xùn)練中就會偏向樣本多的那個(gè)類別。針對該問題账胧,也有在交叉熵上加一個(gè)權(quán)重系數(shù)先紫,但這種方法多數(shù)是出于人為定義或者根據(jù)訓(xùn)練樣本數(shù)量統(tǒng)計(jì)而來的泡孩,并不能目標(biāo)函數(shù)在訓(xùn)練中自動去調(diào)節(jié)偏向權(quán)重寺谤。
為解決上述問題,有人提出Focal Loss的方法眼俊,該方法最先出于圖像中目標(biāo)檢測的場景中疮胖,也可應(yīng)用NLP領(lǐng)域闷板,它在imbalanced data問題取得很不錯(cuò)的效果。有興趣的讀者可以閱讀《Focal Loss 原理及實(shí)踐》性昭。
在paper《Dice Loss for Data-imbalanced NLP Tasks》中县遣,作者提出使用Dice Loss去解決NLP中imbalanced data問題萧求。Dice Loss并不是作者首創(chuàng)的,而是很早從 S?rensen–Dice coefficient(Sorensen, 1948) or Tversky index (Tversky,1977) 演變而來的元旬。作者認(rèn)為,使用Dice Loss代替Cross Entropy箕速,可以降低樣本不平衡性的影響朋譬。此外徙赢,為了進(jìn)一步降低大量的負(fù)樣本的訓(xùn)練偏向影響,作者提出Self-adjusting Dice Loss窑业。下面介紹下Dice Loss原理及應(yīng)用效果枕屉。
2 Dice Loss
在介紹Dice Loss時(shí),用二分類任務(wù)來展示它的原理及各種變體西潘,也可以很容易推廣其他類型的任務(wù)哨颂。
對于一訓(xùn)練集合,
為其中一個(gè)樣本威恼,對應(yīng)的真實(shí)值為
,
為兩個(gè)類別的預(yù)測概率腹备,其中
{0,1},
馏谨,前者為取值為0或1附迷,后者取值范圍為[0,1]。
2.1 交叉熵
在上述定義的二分類任務(wù)上喊儡,其交叉熵定義為:
從公式上可以看出艾猜,每個(gè)樣本對目標(biāo)函數(shù)權(quán)重是一樣的,這對于imbalanced data來說是不合適的淤毛,這就引出帶權(quán)重的交叉熵?fù)p失函數(shù)算柳。
其中為對應(yīng)的樣本權(quán)重瞬项,但從實(shí)際情況來上,上述該目標(biāo)函數(shù)存在
取值困難的問題猪杭,當(dāng)涉及的類別特別多時(shí)妥衣,不適當(dāng)?shù)娜≈刀紩o目標(biāo)函數(shù)帶來偏向的影響税手。
2.2 Dice Coefficient and Tversky Index
dice coefficient (DSC) 最開始是為了判斷兩個(gè)集合的相似度而定義的一個(gè)指標(biāo)。給定兩個(gè)集合,則它們的dice coefficient可以定義為:
若把看著是模型預(yù)測為正樣本的集合熙暴,
為真實(shí)的正樣本的集合慌盯,那么按照True Positive (TP), False Positive (FP), and False Negative (FN)來看DSC亚皂,則:
可以看出,DSC與F1值的評價(jià)效果是一致的狞谱。難道我們一直常用的F1指標(biāo)具備解決樣本不平衡性問題跟衅,這點(diǎn)刷新了我的認(rèn)知播歼。帶這個(gè)問題,繼續(xù)往下介紹叭莫。
針對一個(gè)具體樣例來說,其DSC可以表示為:
上述公式存在一個(gè)缺陷拢肆,當(dāng)時(shí)善榛,對函數(shù)沒有影響呻畸,則會導(dǎo)致模型對這類樣本訓(xùn)練無效伤为。為解決該問題,可在分子與分母同時(shí)添加一個(gè)調(diào)節(jié)參數(shù):
在這個(gè)基礎(chǔ)上叙甸,Milletari et al. (2016) 提出了一種變體位衩,具體做法將分母項(xiàng)進(jìn)行平方糖驴,目的是為了加快收斂速度。該變體可定義為DL:
此外辙谜,還衍生出Tversky index (TI)感昼,其原理跟DSC一致定嗓,但不同的是它更靈活去權(quán)衡False-Negatives and False Positives之間的影響。
最后作者參考Focal Loss的原理奸绷,在DSC基礎(chǔ)上添加一個(gè)()的調(diào)節(jié)影響号醉,變?yōu)椋?br>
以上定義的指標(biāo)是越大越好,要轉(zhuǎn)成訓(xùn)練的目標(biāo)函數(shù)則需要變成負(fù)的铅碍,在這基礎(chǔ)上线椰,作者又進(jìn)行+1調(diào)節(jié)憨愉。則上面涉及的目標(biāo)函數(shù)匯總?cè)缦拢渲蠪L為Focal Loss:
3 實(shí)驗(yàn)效果
作者挑選了NLP領(lǐng)域四種任務(wù):part-of-speech tagging(POS), named entity recognition(NER), machine reading comprehension(MRC) and paraphrase identification(PI)径密,進(jìn)行試驗(yàn)對比享扔,看看Dice Loss作為損失函數(shù)的效果植袍。具體實(shí)驗(yàn)結(jié)果如下:
從實(shí)驗(yàn)結(jié)果來看氛魁,Dice Loss 兩種變體DL與DSC損失函數(shù)相對交叉熵厅篓,F(xiàn)ocal Loss都有明顯的提升秀存,其中DSC表現(xiàn)效果最好,最高有2%的提升贷笛。實(shí)驗(yàn)結(jié)果驗(yàn)證了Dice Loss在NLP任務(wù)上的優(yōu)勢应又。
結(jié)語
論文中驗(yàn)證了Dice Loss在NLP任務(wù)中樣本不平衡問題的有效性宙项,根據(jù)實(shí)驗(yàn)結(jié)果來看乏苦,具有很強(qiáng)的誘惑力。論文開源了代碼:https://github.com/ShannonAI/dice_loss_for_NLP尤筐。目前筆者正在測試對比中汇荐,實(shí)驗(yàn)結(jié)果后續(xù)可以分享出來。
在回到前面提到的問題:應(yīng)該這樣理解盆繁,Dice Loss原理是與F1值是一致的,說明Dice Loss直接由F1導(dǎo)向的油昂,所以訓(xùn)練的結(jié)果就偏向相對更為合理的F1評價(jià)指標(biāo)革娄。此外倾贰,論文題目是解決NLP任務(wù)中樣本不平衡問題,其實(shí)這個(gè)樣本不平衡問題存在界定問題拦惋,像NER任務(wù)中匆浙,對與預(yù)測的標(biāo)簽來說,就是樣本不平衡(大部分是O標(biāo)簽)厕妖。此外首尼,如二分類,一類2000個(gè)樣本言秸,一類1500個(gè)樣本软能,這類算不算樣本不平衡。所以举畸,我的問題是查排,Dice Loss僅適合樣本不平衡,最好是極度不平衡性問題俱恶?還是不論樣本是否平衡雹嗦,都能有效果。若真的適應(yīng)各種分布下的數(shù)據(jù)集合是,那是不是要替換主流的交叉熵了罪。這些問題,還是需要更多的實(shí)驗(yàn)來驗(yàn)證聪全。
更多文章可關(guān)注:自然語言處理算法與實(shí)踐