處理長尾問題:Class-Balanced Loss Based on Effective Number of Samples


這篇cvpr2019的論文主要提出了一個損失函數Class-Balanced Loss用來處理數據長尾問題

長尾問題是由於分類問題中數據集每類的數據量不同,導致分類准確度下降。舉個極端點的例子有助於理解:A、B二分類問題,數據集中,A、B數據量比例為999:1,為了減少損失值,網絡很自然的將所有圖片都分到A類,這樣准確率為99.9%,但是明顯這個網絡不能用。

為了解決長尾問題,前人也提出了不少辦法,比如將B圖片數據增強,縮放、旋轉、平移、裁剪,使得B類別中有999張圖片,這樣數據就均衡了;或者給A的損失值之前加一個權重系數(1/999)。理想很豐滿,現實很骨感。這樣做提升效果有限。

為什么呢?打個比方:假設AB兩個類別分別是一個圓形,數據集中的數據就是圓形中的點。如果訓練時你能把圓中每個點都取到了,測試時網絡的准確率一定是100%,畢竟所有點都記錄在案了。然而實際上不可能取到圓中每一個點,同樣也不能取到類中的每一個數據。我們可以退而求其次,如果能從圓中均勻的取足夠多的點,也能反應出這個圓(類別)的特性。然而用上面提到的兩種方法做數據增強,相當於在已有點周圍取點,很明顯這些點不能反映圓(類別)的特性。

那什么樣的點能夠反映圓的特性呢?換言之,哪些點是有效的,哪些點是無效的呢?

這篇論文一開始就提出一個概念:Effective Number(有效數據,用E來表示),如果知道了每個類別中的有效數據數量,問題似乎就好辦多了:CB = 1/E *  L 。其中CB是本文提出的Class-Balanced Loss,L是普通損失函數,可以任意更換。

現在要做的就是求有效數據E。先給結論:

,其中,N為有效樣本的上限,該類別的采樣數(數據集中該類別的圖片數量),可以用歸納法證明

 

 

當n=1時,E1=1

當n>1時,,因為

 

 

 所以,

 

 

 

 

所以最終,

 

 

 是Class-Balanced Loss是普通損失函數,可以任意更換。

 

 

由於現實中,N無法得到,因此無法計算,因為N幾近無窮,因此β取一個接近1的數,作者代碼里給的是0.9999。

這樣,這個問題就完美解決。

 

作者在論文里還嘗試了該算法與一些傳統算法結合,效果也不錯:

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM