一文助你解決數(shù)據(jù)傾斜問題
在處理文本分類任務(wù)時,基準(zhǔn)測試流行的自然語言處理架構(gòu)的性能是建立對可用選項的理解的重要步驟。在這里,本文將深入探討與分類相關(guān)的最常見的挑戰(zhàn)之一——數(shù)據(jù)傾斜。如果你曾經(jīng)將機器學(xué)習(xí)(ML)應(yīng)用于真實世界的分類數(shù)據(jù)集,那么你可能已經(jīng)很熟悉這個問題了。
了解數(shù)據(jù)分類中的不平衡問題
在數(shù)據(jù)分類中,我們經(jīng)常關(guān)注數(shù)據(jù)點在不同類別中的分布情況。平衡的數(shù)據(jù)集在所有類別中的數(shù)據(jù)點數(shù)大致相同,因此更易于處理。然而,現(xiàn)實世界中的數(shù)據(jù)集往往是不平衡的。
不平衡數(shù)據(jù)可能會導(dǎo)致問題,因為模型可能會學(xué)習(xí)用最常見的類來標(biāo)注所有內(nèi)容,而忽略實際輸入。如果主要類別非常普遍,以至于模型不會因為將少數(shù)類別錯誤分類而受到太多懲罰這種情況。此外,代表性不足的類別可能沒有足夠的數(shù)據(jù)供模型學(xué)習(xí)有意義的模式。
不平衡是否需要糾正?不平衡是數(shù)據(jù)的一個特征,一個很好的問題是,我們是否要對其采取任何措施。有一些技巧可以讓模型的訓(xùn)練過程變得更容易。我們可以選擇對訓(xùn)練過程或數(shù)據(jù)本身進行操作,讓模型知道哪些類對我們來說特別重要,但這應(yīng)該以業(yè)務(wù)需求或領(lǐng)域知識為依據(jù)。接下來,我們將詳細(xì)討論這些技巧和操作。
為了說明解決數(shù)據(jù)不平衡的不同技術(shù)的效果,我們將使用包含747條垃圾短信和4827條正常短信的sms-spam數(shù)據(jù)集。雖然只有兩類,但為了更好地泛化,我們將把該任務(wù)視為多類分類問題。我們將使用roberta-base模型。
【sms-spam數(shù)據(jù)集】:https://huggingface.co/datasets/sms_spam
請記住,這些技術(shù)在其他數(shù)據(jù)中可能會產(chǎn)生不同的結(jié)果。在特定數(shù)據(jù)集上測試它們至關(guān)重要。
在不做任何調(diào)整的情況下訓(xùn)練分類模型時,我們會得到以下分類報告:
圖片
“Safe” 技巧偏置初始化
本文的第一項技術(shù)是從一開始就讓模型了解數(shù)據(jù)分布。我們可以通過相應(yīng)地初始化最終分類層的偏置來傳播這一知識。Andrej Karpathy在他的《訓(xùn)練神經(jīng)網(wǎng)絡(luò)的秘訣》(A Recipe for Training Neural Networks)中分享了這一技巧,它有助于模型從知情的角度出發(fā)。在我們的多分類案例中,我們使用softmax作為最終激活函數(shù),我們希望模型在初始化時的輸出能夠反映數(shù)據(jù)分布。為了實現(xiàn)這一目標(biāo),我們需要解決以下問題:
【A Recipe for Training Neural Networks】:http://karpathy.github.io/2019/04/25/recipe/#2-set-up-the-end-to-end-trainingevaluation-skeleton--get-dumb-baselines:~:text=Huber%20losses%2C%20etc.-,init%20well.,-Initialize%20the%20final
圖片
作為提醒,
圖片
然后,
圖片
其中,b0和b1分別為負(fù)類和正類的偏置,neg和pos分別為負(fù)類和正類中元素的數(shù)量。
通過這種初始化,所有指標(biāo)都得到了簡單的改善!
圖片
在貝葉斯術(shù)語中,這意味著手動設(shè)置先驗,并允許模型在訓(xùn)練過程中學(xué)習(xí)調(diào)整它們。
下采樣和上加權(quán)/上采樣和下加權(quán)
這些技術(shù)也能有效解決類不平衡問題。二者的概念相似,但執(zhí)行方式不同。下采樣和上加權(quán)涉及減少主要類的規(guī)模以平衡分布,同時在訓(xùn)練過程中為該類的示例分配更大的權(quán)重。上加權(quán)可確保輸出概率仍然代表觀察到的數(shù)據(jù)分布。相反,上采樣和下加權(quán)則需要增加代表性不足的類別的規(guī)模,并按比例降低其權(quán)重。
下采樣和上加權(quán)的結(jié)果:
圖片
上采樣和下加權(quán)的結(jié)果:
圖片
在這兩種情況下,“垃圾郵件”的召回率都有所下降,這可能是因為“正常郵件”的權(quán)重是“垃圾郵件”權(quán)重的兩倍。
Focal loss
【Focal loss】:https://arxiv.org/abs/1708.02002
Focal loss是一種“動態(tài)縮放交叉熵?fù)p失”,是為了解決不平衡數(shù)據(jù)的訓(xùn)練問題而引入的。它只適用于二元情況,幸運的是,我們的問題只涉及兩個類別。請看下面的公式:
圖片
在該公式中,p是真實類別的概率,ɑ是加權(quán)系數(shù),??控制著根據(jù)置信度(概率)對損失的懲罰程度。
這種設(shè)計可以確保概率較低的示例獲得指數(shù)級更大的權(quán)重,從而推動模型學(xué)習(xí)更具挑戰(zhàn)性的示例。α參數(shù)允許不同類別的示例獲得不同的權(quán)重。
通過調(diào)整α和??的組合,可以找到最佳配置。要消除明確的類別偏好,可將α設(shè)為0.5;但是,使用這一平衡因子會有微小的改進。
以下是使用Focal loss方法獲得的最佳結(jié)果:
圖片
所有指標(biāo)都優(yōu)于基線,但需要調(diào)整一些參數(shù)。請記住,不一定總是這么順利。
“Not-so-safe”的技巧
眾所周知,存在著方法可以故意改變輸出概率分布,從而給代表性不足的類別帶來優(yōu)勢。通過使用這些技術(shù),我們明確地向模型發(fā)出信號,表明某些類別至關(guān)重要,不應(yīng)被忽視。這通常是由業(yè)務(wù)需求驅(qū)動的,比如檢測金融欺詐或攻擊性評論,這比意外地錯誤標(biāo)記好的示例更重要。當(dāng)目標(biāo)是提高特定類別的召回率時,即使?fàn)奚渌笜?biāo)也要應(yīng)用這些技術(shù)。
加權(quán)
加權(quán)法是為不同類別的樣本損失值分配不同的權(quán)重。這是一種有效且適應(yīng)性強的方法,因為它可以讓你指出每個類別對模型的重要性。以下是單個訓(xùn)練樣本的多類別加權(quán)交叉熵?fù)p失公式:
圖片
其中,pytrue表示真實類別的概率,wytrue是該類別的權(quán)重。
確定權(quán)重的一個很好的默認(rèn)方法是使用類別頻率倒數(shù):
圖片
其中,N是數(shù)據(jù)集的總條目數(shù),c是類別計數(shù),ni是第i個類別的元素計數(shù)
權(quán)重計算如下:{'ham': 0.576, 'spam': 3.784}
以下是使用這些權(quán)重得出的指標(biāo):
圖片
指標(biāo)超過基線方案。雖然這種情況可能會發(fā)生,但并非總是如此。
不過,如果避免特定類的漏檢至關(guān)重要,可以考慮增加類別的權(quán)重,這樣可能會提高類別的召回率。讓我們嘗試使用權(quán)重{"ham": 0.576, "spam": 10.0}來查看結(jié)果。
結(jié)果如下:
圖片
正如預(yù)期的那樣,“垃圾郵件”的召回率提高了,但精確度卻下降了。與使用類別頻率倒數(shù)權(quán)重相比,F(xiàn)1分?jǐn)?shù)有所下降。這證明了基本損失加權(quán)的潛力。即使對于平衡數(shù)據(jù),加權(quán)也可能有利于召回關(guān)鍵類別。
上采樣和下采樣。
雖然與前面討論的方法類似,但它們不包括加權(quán)步驟。下采樣可能會導(dǎo)致數(shù)據(jù)丟失,而上采樣可能會導(dǎo)致過度擬合上采樣類別。雖然這兩種方法都有幫助,但加權(quán)通常是更有效、更透明的選擇。
概率比較
本文將用一個很明顯的垃圾郵件示例來評估各種模型版本的可信度:“Call to claim your prize!”,結(jié)果見下表。
圖片
正如預(yù)期的那樣,與基線相比,加權(quán)模型顯示出過度自信,而“下采樣+上加權(quán)”模型則信心不足(由于上加權(quán)的“正常郵件”)。值得注意的是,偏置初始化會增加模型對“垃圾郵件”類別的可信度,而焦點丟失則會降低模型對“垃圾郵件”類別的可信度。
總結(jié)
總之,必要時可以解決數(shù)據(jù)不平衡問題。請記住,有些技術(shù)會有意改變數(shù)據(jù)分布,只有在必要時才可使用。不平衡是一種特征,而不是錯誤!
雖然本文討論了概率問題,但最終的性能指標(biāo)才是對業(yè)務(wù)最重要的指標(biāo)。如果離線測試表明某個模型能增加價值,那么就在生產(chǎn)中進行測試。
在實驗中,本文使用了Toloka ML平臺。它提供了一系列隨時可用的模型,可以為ML項目提供一個良好的開端。
總的來說,考慮到訓(xùn)練ML模型的數(shù)據(jù)分布至關(guān)重要。訓(xùn)練數(shù)據(jù)必須代表真實世界的分布,模型才能有效工作。如果數(shù)據(jù)本身不平衡,模型應(yīng)考慮到這一點,以便在實際場景中表現(xiàn)良好。