1.類別不平衡問題
一份給定的數(shù)據(jù)集中,可能出現(xiàn)類別不平衡,即某種類型的數(shù)量特別少,以我現(xiàn)在做的二分類項目為例, 訓(xùn)練集類別為NG數(shù)量為12000, OK1600張,相差較多.
存在的問題:
模型對NG的學(xué)習(xí)較多,所以對NG的識別能力很強,Ok的識別能力很弱
2.FocalLoss損失函數(shù):
2.1 二分類交叉損失函數(shù):

這里的y表示標(biāo)簽,y' 表示預(yù)測此樣本為1的概率p,或者說為正例的概率p.
其實對于二分類問題的類型不同,會導(dǎo)致最后使用的激活函數(shù)不同,交叉熵的計算方法也不一樣.
這里的激活函數(shù)的選擇導(dǎo)致了兩種計算方式:
假設(shè)一個二分類問題,神經(jīng)網(wǎng)絡(luò)的最后一層輸出有兩個結(jié)果,最后需要再加一層激活函數(shù)-- sigmoid函數(shù)或者softmax函數(shù):
2.1.1 sigmoid層作為輸出的交叉熵:
sigmoid一般用來處理多標(biāo)簽分類問題,比如在多標(biāo)簽二分類問題里,一張圖片既可能是A,也可能是B,也可能都是, 怎么判別?sigmoid的每個輸出值與某個閾值比較,概率大于那個閾值,就可以判別為那一類.
作為最后一層的輸出,兩個輸出值加起來不等于1,那么這時候的二分類其實指的是對單個類別的二分類,即是是否為A.另一個輸出用來判斷是否為B,這兩個值的處理是相互獨立的,不相斥的.
所有這個時候的分類交叉損失熵如何計算呢?其實應(yīng)該計算每個神經(jīng)元的二分類交叉損失熵,然后相加.

ti為單個神經(jīng)元為正例的概率
比如最后一層sigmoid層的輸出是[0.7, 0.8], 表示預(yù)測是A的概率是0.7, 是B的概率為0.8,? label為[1, 0],表示此樣本是A且不是B
第一個神經(jīng)元的交叉熵:? -1*log(0.7)
第二個神經(jīng)元的交叉熵: -(1-0)*log(1-0.8)
總的交叉熵就是-log(0.7)-log(1-0.8)
2.1.2 softmax層作為輸出的交叉熵:
softmax一般用來處理單標(biāo)簽分類問題,同樣拿二分類問題舉例子,如果是單標(biāo)簽分類問題,那么最后一層就應(yīng)該使用softmax,這時候兩個結(jié)果是互斥的,輸出值加起來為1.
這時候的計算公式是:

同樣加入最后一層的輸出為[0.35, 0.65], label為[1], 表示預(yù)測是A的概率是0.35, 預(yù)測是B的概率是0.65, 但實際上是A
交叉熵:? -1*log(0.35)
2.2 類別不平衡在二分類交叉損失函數(shù)中的問題
二分類交叉損失函數(shù)會帶來什么問題呢,我們先改寫一下形式,y'改寫程概率p,以單標(biāo)簽二分類問題為例

其中

所以二分類交叉損失函數(shù)最簡單的形式就是:

可見普通的交叉熵而言,輸出概率pt越大損失越小。符合預(yù)測越準(zhǔn),損失越小的原則
什么是簡單樣本:?什么是困難樣本?就是預(yù)測值pt較大的的那些樣本
兩個問題:
1.如果某類型的樣本占比較大,數(shù)量少的樣本產(chǎn)生的loss較少,
2.而且簡單樣本比較多,就會導(dǎo)致困難樣本產(chǎn)生的loss值占比較少,
負樣本數(shù)量太大,占總的loss函數(shù)輸入?yún)?shù)的大部分,而且多是容易分類的,因此使得模型的優(yōu)化方向(即loss函數(shù)的梯度下降方向)并不是我們所希望的那樣。
2.3 FocalLoss:
由此提出Focal loss函數(shù):

首先在原有的基礎(chǔ)上加了一個因子,其中Gamma>0使得減少易分類樣本的損失,使得模型更關(guān)注于困難的、錯分的樣本。
例如:Gamma為2時,對于正類樣本而言,預(yù)測結(jié)果為0.95肯定是簡單樣本,所以(1-0.95)的gamma次方就會很小,這時損失函數(shù)值就變得更小。而預(yù)測概率為0.3的樣本其損失相對很大。對于負類樣本而言同樣,預(yù)測0.1的結(jié)果應(yīng)當(dāng)遠比預(yù)測0.7的樣本損失值要小得多。對于預(yù)測概率為0.5時,損失只減少了0.25倍。所以更加關(guān)注于這種難以區(qū)分的樣本。這樣減少了簡單樣本的影響,大量預(yù)測概率很小的樣本疊加起來后的效應(yīng)才可能比較有效。
換個形式看更清晰:

顯然,樣本越易分,pt越大,則貢獻的loss就越小,相對來說,難分樣本所占的比重就會變大.
在此基礎(chǔ)上,再引入一個平衡因子 Alpha,用來平衡正負樣本本身的數(shù)量比例不均(即類別不均衡):

我們?yōu)榻徊骒胤峙湟粋€權(quán)重,其中權(quán)重因子的大小一般為相反類的比重。即負樣本不是多嗎,它越多,我們給它的權(quán)重越小。這樣就可以降低負樣本的影響。
只添加Alpha雖然可以平衡正負樣本的重要性,但是無法解決簡單與困難樣本的問題,因此針對難分樣本的Gamma也必不可少。