標簽平滑 - Label Smoothing概述
點擊上方“AI算法與圖像處理”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
來源:素質(zhì)云筆記
目 錄
One-Hot -> Label Smoothing
label smoothing 降低feature norm
標簽平滑歸一化:Label Smoothing Regularization (LSR)
label smoothing在什么場景有奇效?
什么時候不使用標簽平滑
Label Smoothing 更進一步的思考研究
關于label smoothing是一些比賽中,比較常用的技巧,特別是圖像多分類之中,效果蠻好的。這邊整理一下,該技巧的文章,其中文章[6]寫的非常贊,由其開篇。
當然這里,還有多種對應的說法:
Hard target和Soft target
hard label 和 soft label
舉一個問文章[2]的例子,Hard target和Soft target:

另一個hard label轉(zhuǎn)變成soft label,文章[5]:

1 One-Hot -> Label Smoothing
文本分類和圖像分類實際上在訓練模式上是類似的,基本都遵循這樣的一個流程:
step 1. 一個深度網(wǎng)絡(DNN,諸如LSTM、CNN、BERT等)來得到向量表示
step 2. 一個softmax分類器來輸出預測的標簽概率分布p
step 3. 使用Cross-entropy來計算真實標簽(one-hot表示)與p之間的損失,從而優(yōu)化
這里使用cross-entropy loss(簡稱CE-loss)基本上成了大家訓練模型的默認方法,但它實際上存在一些問題。下面我舉個例子:
比如有一個六個類別的分類任務,CE-loss是如何計算當前某個預測概率p相對于y的損失呢:

可以看出,根據(jù)CE-loss的公式,只有y中為1的那一維度參與了loss的計算,其他的都忽略了。這樣就會造成一些后果:
真實標簽跟其他標簽之間的關系被忽略了,很多有用的知識無法學到;比如:“鳥”和“飛機”本來也比較像,因此如果模型預測覺得二者更接近,那么應該給予更小的loss;
傾向于讓模型更加“武斷”,成為一個“非黑即白”的模型,導致泛化性能差;
面對易混淆的分類任務、有噪音(誤打標)的數(shù)據(jù)集時,更容易受影響
總之,這都是由one-hot的不合理表示造成的,因為one-hot只是對真實情況的一種簡化。
面對one-hot可能帶來的容易過擬合的問題,有研究提出了Label Smoothing方法:

label smoothing就是把原來的one-hot表示,在每一維上都添加了一個隨機噪音。這是一種簡單粗暴,但又十分有效的方法,目前已經(jīng)使用在很多的圖像分類模型中了。
目前來看一下兩者的優(yōu)劣勢:
one-hot 劣勢:
- 可能導致過擬合。0或1的標記方式導致模型概率估計值為1,或接近于1,這樣的編碼方式不夠soft,容易導致過擬合。為什么?
用于訓練模型的training set通常是很有限的,往往不能覆蓋所有的情況,特別是在訓練樣本比較少的情況下更為明顯。
以神經(jīng)機器翻譯(NMT)為例:假設預測句子“今天下午我們?nèi)?.”中,“去”后面的一個詞。假設只有“去釣魚”和“去逛街”兩種搭配,且真實的句子是“今天下午我們?nèi)メ烎~”。
training set中,“去釣魚”這個搭配出現(xiàn)10次,“去逛街”搭配出現(xiàn)40次。“去釣魚”出現(xiàn)概率真實概率是20%,
“去逛街”出現(xiàn)的真實概率是80%。
因為采用0或1的表示方式,隨著training次數(shù)增加,模型逐漸傾向于“去逛街”這個搭配,使這個搭配預測概率為100%或接近于100%,“去釣魚”這個搭配逐漸被忽略。(文章[1])
- 另外,也會造成模型對它的預測過于confident,導致模型對觀測變量x的預測嚴重偏離真實的情況,比如上述例子中,把“去逛街”搭配出現(xiàn)的概率從80%放大到100%,這種放大是不合理的。
Label Smoothing 優(yōu)勢:
一定程度上,可以緩解模型過于武斷的問題,也有一定的抗噪能力
彌補了簡單分類中監(jiān)督信號不足(信息熵比較少)的問題,增加了信息量;
提供了訓練數(shù)據(jù)中類別之間的關系(數(shù)據(jù)增強);
可能增強了模型泛化能力
降低feature norm (feature normalization)從而讓每個類別的樣本聚攏的效果(文章[10]提及)
產(chǎn)生更好的校準網(wǎng)絡,從而更好地泛化,最終對不可見的生產(chǎn)數(shù)據(jù)產(chǎn)生更準確的預測。(文章[11]提及)
Label Smoothing 劣勢:
單純地添加隨機噪音,也無法反映標簽之間的關系,因此對模型的提升有限,甚至有欠擬合的風險。
它對構(gòu)建將來作為教師的網(wǎng)絡沒有用處,hard 目標訓練將產(chǎn)生一個更好的教師神經(jīng)網(wǎng)絡。(文章[11]提及)
2 label smoothing 降低feature norm
文章[10]提及了一個有意思的知識點:
Hinton組對Label Smoothing的分析文章[When Does Label Smoothing Help? https://arxiv.org/pdf/1906.02629.pdf],里面有一張圖比較有意思:

熟悉人臉識別loss的人會發(fā)現(xiàn),這個Label Smoothing得到的特征分布,怎么跟人臉loss的效果這么像?
竟然都可以起到讓每個類別的樣本聚攏的效果。
而少數(shù)細心的朋友可能會發(fā)現(xiàn)這里的玄機:
不做Label Smoothing(標注為w/o LS)的feature norm,普遍比做了LS(標注為w/ LS)的要大很多!w/o LS時最大可以達到1.6,而w/ LS時只有0.4。
Label Smoothing也并不要求p優(yōu)化到1,而是優(yōu)化到0.9即可。Softmax Cross Entropy 的loss曲線其實跟sigmoid類似,越靠近1的時候,loss曲線會越平緩:

3 標簽平滑歸一化:Label Smoothing Regularization (LSR)
文章[1][2]提及該方法:
Label Smoothing Regularization(LSR)是一種通過在輸出y中添加噪聲,實現(xiàn)對模型進行約束,降低模型過擬合(overfitting)程度的一種約束方法(regularization methed)。
LSR也是對“硬目標”的優(yōu)化:

Label Smoothing Regularization(LSR)就是為了緩解由label不夠soft而容易導致過擬合的問題,使模型對預測less confident,把預測值過度集中在概率較大類別上,把一些概率分到其他概率較小類別上。
該方法應用在較多的論文中,譬如:
Attentional Encoder Network for Targeted Sentiment Classification
Müller R, Kornblith S, Hinton G. When Does Label Smoothing Help?[J]. arXiv preprint arXiv:1906.02629, 2019.
4 label smoothing在什么場景有奇效?
文章[4]提及了一些NLP領域使用場景的思考:
真實場景下,尤其數(shù)據(jù)量大的時候 數(shù)據(jù)里是會有噪音的(當然如果你非要說我100%確定數(shù)據(jù)都是完全正確的, 那就無所謂了啊),為了避免模型錯誤的學到這些噪音可以加入label smoothing
2.避免模型太自信了,有時候我們訓練一個模型會發(fā)現(xiàn)給出相當高的confidence,但有時候我們不希望模型太自信了(可能會導致over-fit 等別的問題),希望提高模型的學習難度,也會引入label smoothing
3.分類的中會有一些模糊的case,比如圖片分類,有些圖片即像貓又像狗, 利用soft-target可以給兩類都提供監(jiān)督效果
hinton的這篇[when does label smoothing help? ]論文從另一個角度去解釋了 label smoothing的作用:
多分類可能更效果, 類別更緊密,不同類別分的更開;小類別可能效果弱一些
發(fā)散一下,該策略如果用到序列標注等模型上,是不是效果會變好?
文章[5]提及,該策略可以使網(wǎng)絡優(yōu)化更加平滑:

label smoothing將hard label轉(zhuǎn)變成soft label,使網(wǎng)絡優(yōu)化更加平滑。標簽平滑是用于深度神經(jīng)網(wǎng)絡(DNN)的有效正則化工具,該工具通過在均勻分布和hard標簽之間應用加權平均值來生成soft標簽。
它通常用于減少訓練DNN的過擬合問題并進一步提高分類性能。
targets = (1 - label_smooth) * targets + label_smooth / num_classes

文章[8]在[觀點閱讀理解任務]比賽中也使用該策略:
focal loss的損失函數(shù)中加入了標簽平滑(label smoothing),標簽平滑[6]是一種防止模型過擬合的正則化手段。
label smoothing是將真實的one hot標簽做一個標簽平滑處理,使得標簽變成soft label。
其中,在真實label處的概率值接近于1,其他位置的概率值是個非常小的數(shù)。
在label smoothing中有個參數(shù)epsilon,描述了將標簽軟化的程度,該值越大,經(jīng)過label smoothing后的標簽向量的標簽概率值越小,標簽越平滑,反之,標簽越趨向于hard label。
較大的模型使用label smoothing可以有效的提升模型的精度,較小的模型使用此種方法可能會降低模型精度。
本次比賽中,在多個roberta_large預訓練模型微調(diào)過程中使用有一定的提升。
文章[9]提到在早先Google在Inception網(wǎng)絡上就使用過這個技巧
對于Imagenet這個分類問題標簽的種類是確定的K=1000類,所以在Inception論文[2]里直接用一個系數(shù)來控制平滑的強度,即平滑后的標簽

但是如果用同樣方法在這些長短不一的句子上做平滑,其實是不合適的。每個位置的平滑概率反比于句子的長度,也就是K,所以我認為更好的確定平滑強度的方法是先確定一個單位平滑強度,再根據(jù)句子總長來確定原標簽的權重。
文章[10]的大佬還細細研究了該策略為什么不能在人臉任務取得效果:
Label Smoothing起到的作用實際上是抑制了feature norm,此時softmax prob永遠無法達到設定的 ,loss曲面上不再存在平緩區(qū)域,處處都有較大的梯度指向各個類中心,所以特征會更加聚攏。
而之所以人臉上不work,是因為我們通常會使用固定的s,此時Label Smoothing無法控制feature norm,只能控制角度,就會起到反向優(yōu)化的作用,因此在人臉loss上加Label Smoothing效果會變差。
文章[11]也提及了與文章[10]類似的結(jié)論:
標簽平滑強制對分類進行更緊密的分組,同時強制在聚類之間進行更等距的間隔。
標簽平滑為最終的激活產(chǎn)生了更緊密的聚類和更大的類別間的分離。

左:沒有使用標簽平滑進行訓練,右:使用標簽標簽平滑進行訓練
標簽平滑可以產(chǎn)生更多的正則化和魯棒的神經(jīng)網(wǎng)絡的主要原因,重要的是趨向于更好地泛化未來的數(shù)據(jù)
因此,標簽平滑應該是大多數(shù)深度學習訓練的一部分。然而,有一種情況是,它對構(gòu)建將來作為教師的網(wǎng)絡沒有用處,hard 目標訓練將產(chǎn)生一個更好的教師神經(jīng)網(wǎng)絡。
5 什么時候不使用標簽平滑
文章[11]提及了一種不適用的場景:
盡管標簽平滑可以產(chǎn)生用于各種任務的改進的神經(jīng)網(wǎng)絡……如果最終的模型將作為其他“學生”網(wǎng)絡的老師,那么它不應該被使用。
盡管使用標簽平滑化訓練提高了教師的最終準確性,但與使用“硬”目標訓練的教師相比,它未能向?qū)W生網(wǎng)絡傳遞足夠多的知識(沒有標簽平滑化)。
標簽平滑“擦除”了在hard目標訓練中保留的一些細節(jié)。
這樣的泛化有利于教師網(wǎng)絡的性能,但是它傳遞給學生網(wǎng)絡的信息更少。
標簽平滑產(chǎn)生的模型是不好的教師模型的原因可以通過初始的可視化或多或少的表現(xiàn)出來。
通過強制將最終的分類劃分為更緊密的集群,該網(wǎng)絡刪除了更多的細節(jié),將重點放在類之間的核心區(qū)別上。
這種“舍入”有助于網(wǎng)絡更好地處理不可見數(shù)據(jù)。
然而,丟失的信息最終會對它教授新學生模型的能力產(chǎn)生負面影響。
因此,準確性更高的老師并不能更好地向?qū)W生提煉信息。
Label Smoothing 更進一步的思考研究
文章[6]針對label smoothing隨機噪音 以及 smoothing值都為固定的缺陷,提出一個更優(yōu)質(zhì)的策略:
最終的目標,是能夠使用更加合理的標簽分布來代替one-hot分布訓練模型,最好這個過程能夠和模型的訓練同步進行。
一個合理的標簽分布,應該有什么樣的性質(zhì)。
**① 很自然地,標簽分布應該可以反映標簽之間的相似性。**比方下面這個例子:

② 標簽間的相似性是相對的,要根據(jù)具體的樣本內(nèi)容來看。比方下面這個例子,同樣的標簽,對于不同的句子,標簽之間的相似度也是不一樣的:

③ 構(gòu)造得到的標簽分布,在01化之后應該跟原one-hot表示相同。
啥意思呢,就是我們不能構(gòu)造出了一個標簽分布,最大值對應的標簽跟原本的one-hot標簽還不一致,我們最終的標簽分布,還是要以one-hot為標桿來構(gòu)造。
根據(jù)上面的思考,我們這樣來設計模型:
使用一個Label Encoder來學習各個label的表示,與input sample的向量表示計算相似度,從而得到一個反映標簽之間的混淆/相似程度的分布。
最后,使用該混淆分布來調(diào)整原來的one-hot分布,從而得到一個更好的標簽分布。

這個結(jié)構(gòu)分兩部分,左邊是一個Basic Predictor,就是各種我們常用的分類模型。右邊的則是LCM的模型。注意LCM是一個插件,所以左側(cè)可以更換成任何深度學習模型。
參考文獻
1 Label Smoothing Regularization_LSR原理是什么?
2 一文總覽知識蒸餾概述
3 小方案蘊藏大改變,人物識別挑戰(zhàn)賽TOP2團隊依靠創(chuàng)新突圍
4 label smoothing + knowledge distill + nlp
5 大道至簡:算法工程師煉丹Trick手冊
6 用模型“想象”出來的target來訓練,可以提高分類的效果!
7 樣本混進了噪聲怎么辦?通過Loss分布把它們揪出來!
8 百度人工智能開源大賽冠軍分享——如何在觀點閱讀理解任務取得高分
9 Kaggle Tweet Sentiment Extraction 第七名復盤
10 Label Smoothing分析
11 標簽平滑&深度學習:Google Brain解釋了為什么標簽平滑有用以及什么時候使用它
關聯(lián)閱讀
訓練集 和 測試集分布是否一致——對抗驗證(Adversarial Validation)
筆記︱模型壓縮:knowledge distillation知識蒸餾(一)
競賽技巧:TTA(Test Time Augmentation)與數(shù)據(jù)增強
個人微信(如果沒有備注不拉群!) 請注明:地區(qū)+學校/企業(yè)+研究方向+昵稱
下載1:何愷明頂會分享
在「AI算法與圖像處理」公眾號后臺回復:何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結(jié)分析
下載2:終身受益的編程指南:Google編程風格指南
在「AI算法與圖像處理」公眾號后臺回復:c++,即可下載。歷經(jīng)十年考驗,最權威的編程規(guī)范!
下載3 CVPR2021
在「AI算法與圖像處理」公眾號后臺回復:CVPR,即可下載1467篇CVPR 2020論文 和 CVPR 2021 最新論文
點亮
,告訴大家你也在看
