label smooth、mixup理解
最近在做實驗,目前還存在些問題,很煩躁總想等做好之後再寫,大週日的還是堅持寫一篇吧。
這篇介紹的兩種方法都可以用於解決過擬合問題。
1、label smooth:
在常見的多分類問題中,先經過softmax處理後進行交叉熵計算,原理很簡單可以將計算loss理解為,為了使得網路對測試集預測的機率分佈和其真實分佈接近,常用的做法是使用one-hot對真實標籤進行編碼,作者認為這種將標籤強制one-hot的方式使網路過於自信會導致過擬合,因此軟化這種編碼方式。
等號左側:是一種新的預測的分佈
等號右側:前半部分是對原分佈乘一個權重,
是一個超參,需要自己設定,取值在0到1範圍內。後半部分u是一個均勻分佈,k表示模型的類別數。
由以上公式可以看出,這種方式使label有
機率來自於均勻分佈,
機率來自於原分佈。這就相當於在原label上增加噪聲,讓模型的預測值不要過度集中於機率較高的類別,把一些機率放在機率較低的類別。
因此,交叉熵可以替換為:
可以理解為:loss為對
“預測的分佈與真實分佈”
及
“預測分佈與先驗分佈(均勻分佈)”
的懲罰。
個人理解:label smooth的思路“做軟化、防止過擬合、增加擾動”是好的,個人認為用均勻分佈做先驗分佈有待商榷。
2、mixup
mixup可以理解為一種資料增強的方式,直接上公式:
由以上公式可以看出,同時對輸入x及其對應label y做增強,對兩張圖片做融合,同時對他們的label做融合,其中
是一個融合比例取值範圍為0到1,由beta分佈(
和
計算時相等,即都取
)計算得到。
需要注意的是,yi,yj都是one-hot編碼的label。
看了好幾種mixup的程式碼,我認為作者原始碼的思路最好。原始碼中的計算方式是取當前batch與下一個batch中的輸入做融合,將其送入網路得到one-hot形式的y‘,將該y’分別於融合時的兩個影象對應的label計算loss,再用beta分佈計算得到的
以同樣的方式融合loss,該loss作為最終loss。
個人理解:mixup是一種用於解決過擬合問題的資料增強的方式,也可以理解為對離散樣本空間進行連續化,提高鄰域內的平滑性。