Focal loss損失函式 所解決的問題

2022-04-29 00:45:11 字數 1298 閱讀 5876

解決的問題:消除正負樣本比例不平衡(one-stage演算法需要產生超大量的預選框,模型被大量負樣本所主導,focal loss對此種情況卓有成效。),並且挖掘難負樣本(難負樣本即為一些很難區分是正樣本還是負樣本的負樣本

。其對立的就是一些簡單的負樣本,很容易區分出來是負樣本,其前向傳播的loss很小,模型很容易認出,因此在模型後期這些大量的簡單樣本會浪費大量的時間。)

focal loss是在交叉熵損失函式基礎上進行的修改,focal loss損失函式降低了大量簡單負樣本在訓練中所佔的權重。首先回顧二分類交叉上損失:

其中 y 是真實樣本的標籤(1正0負), y』 是經過 sigmoid 啟用函式的**輸出(數值在0-1之間)。可見普通的交叉熵對於正樣本而言,輸出概率越大損失越小。對於負樣本而言,輸出概率越小則損失越小。此時的損失函式在大量簡單樣本的迭代過程中比較緩慢且可能無法優化至最優。 

在此背景下,focal loss函式提出來了,

它在原有的基礎之上加了乙個γ,其中γ>0使得減少易分類樣本的損失,使得模型更關注於困難的、錯分的樣本

下圖是γ的不同取值對損失函式曲線的影響

例如:γ為2時,對於正類樣本而言,**結果為0.95肯定是簡單樣本,所以(1-0.95)的γ次方就會很小,這時損失函式值就變得比沒有γ次方時更小,而**概率為0.3的樣本其損失相對很大,都加快了模型收斂的速度。

對於負類樣本而言,**0.1的結果應當遠比**0.7的樣本損失值要小得多。對於**概率為0.5時,損失值減少了0.25倍。所以更加關注於這種難以區分的樣本。這樣減少了簡單樣本的影響,大量**概率很小的樣本疊加起來後的效應才可能比較有效。

此外,加入平衡因子α,用來平衡正負樣本本身的比例不均:**中α取0.25,即正樣本要比負樣本佔比小,這是因為負例易分。

只新增α雖然可以平衡正負樣本的重要性,但是無法解決簡單與困難樣本的問題。

γ調節簡單樣本權重降低的速率,當γ為0時即為交叉熵損失函式,當γ增加時,調整因子的影響也在增加。實驗發現γ為2時最優。

虛函式所造成的效能損失

假設在乙個執行緒同步環境中,有類似下面所示的 段 進入執行緒同步 nnum 退出執行緒同步 以win32為例,如我們所知,執行緒同步工具有臨界區,互斥體,訊號量。我們可以任意選擇乙個,為了簡單很可能我們就選擇了臨界區。假如我們需要同步的 非常簡單,我非常建議不需要使用c 的任何功能。但是,很可能沒這...

損失函式 損失函式 Hinge

本文討論hinge損失函式,該函式是機器學習中常用的損失函式之一。在機器學習中,hinge loss是一種損失函式,它通常用於 maximum margin 的分類任務中,如支援向量機。數學表示式為 其中 表示 輸出,通常都是軟結果 就是說輸出不是0,1這種,可能是0.87。表示正確的類別。其函式影...

線性回歸演算法(二) 最優解與損失函式

要理解最優解和損失函式,我們需要先弄明白什麼是誤差。以簡單線性回歸為例,如下圖所示,青色資料樣本為真實值y yy,直線上同一x xx位置的紅色樣本點為 值y hat y 它們之間的空間距離r y y r y hat r y y 就是誤差,即真實樣本點與 樣本點之間的距離。那麼,如果我們把直線上每乙個...