【深度学习】Focal Loss 与 GHM——解决样本不平衡问题
Focal Loss 與 GHM
Focal Loss
Focal Loss 的提出主要是為了解決難易樣本數量不平衡(注意:這有別于正負樣本數量不均衡問題)問題。下面以目標檢測應用場景來說明。
一些 one-stage 的目標檢測器通常會產生很多數量的 anchor box,但是只有極少數是正樣本,導致正負樣本數量不均衡。這里假設我們計算分類損失函數為交叉熵公式。
由于在目標檢測中,大量的候選目標都是易分樣本,這些樣本的損失很低,但是由于數量極不平衡,易分樣本數量相對來說太多,最終主導了總的損失,但是模型也應該關注那些難分樣本(難分樣本又分為普通難分樣本和特別難分樣本,后面即將講到的GHM就是為了解決特別難分樣本的問題)。
基于以上兩個場景中的問題,Focal Loss 給出了很好的解決方法:
GHM
Focal Loss存在一些問題:
- 如果讓模型過多關注 難分樣本 會引發一些問題,比如樣本中的離群點(outliers),已經收斂的模型可能會因為這些離群點還是被判別錯誤,總而言之,我們不應該過多關注易分樣本,但也不應該過多關注難分樣本;
- \(\alpha\) 與 \(\gamma\) 的取值全從實驗得出,且兩者要聯合一起實驗,因為它們的取值會相互影響。
幾個概念:
梯度模長g:\(g\) 正比于檢測的難易程度,\(g\) 越大則檢測難度越大,\(g\) 從交叉熵損失求梯度得來
\[ g=|p-p^*|= \begin{cases} 1-p, & \text{if p* = 1} \\ p, & \text{if p* = 0} \end{cases} \]
\(p\) 是模型預測的概率,\(p^*\) 是 Ground-Truth 的標簽(取值為1或者0);
\(g\) 正比于檢測的難易程度,\(g\) 越大則檢測難度越大;
梯度模長與樣本數量的關系:梯度模長接近于 0 時樣本數量最多(這些可歸類為易分樣本),隨著梯度模長的增長,樣本數量迅速減少,但是當梯度模長接近于 1 時樣本數量也挺多(這些可歸類為難分樣本)。如果過多關注難分樣本,由于其梯度模長比一般樣本大很多,可能會降低模型的準確度。因此,要同時抑制易分樣本和難分樣本!
抑制方法之梯度密度 \(G(D)\): 因為易分樣本和特別難分樣本數量都要比一般樣本多一些,而我們要做的就是衰減 單位區間數量多的那類樣本,也就是物理學上的密度概念。
\[ GD(g) = \frac{1}{l_{\epsilon}}\sum_{k=1}^{N}\delta_{\epsilon}(g_k, g) \]
\(\delta_{\epsilon}(g_k, g)\) 表示樣本 \(1 \sim N(樣本數量)\) 中,梯度模長分布在 \((g-\frac{\epsilon}{2}, g+\frac{\epsilon}{2} )\) 范圍內的樣本個數,\(l_{\epsilon}(g)\) 代表了 \((g-\frac{\epsilon}{2}, g+\frac{\epsilon}{2} )\) 區間的長度;
最后對每個樣本,用交叉熵 \(CE\) \(\times\) 該樣本梯度密度的倒數即可。
分類問題的GHM損失:
\[ L_{GHM-C} = \sum_{i=1}^{N}\frac{L_{CE}(p_i, p_i^*)}{GD(g_i)} \]
回歸問題的GHM損失:
\[ L_{GHM-R} = \sum_{i=1}^N \frac{ASL_1(d_i)}{GD(gr_i)} \]
其中,\(ASL_1(d_i)\) 為修正的 smooth L1 Loss。
抑制效果:
參考資料:
5分鐘理解Focal Loss與GHM-解決樣本不平衡利器——知乎
轉載于:https://www.cnblogs.com/xxxxxxxxx/p/11602248.html
總結
以上是生活随笔為你收集整理的【深度学习】Focal Loss 与 GHM——解决样本不平衡问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: django--模板继承、组件、自定义标
- 下一篇: django查询表记录的十三种方法