every blog every motto: You can do more than you think.
0. 前言
簡單記錄損失函數,dice loss、focal loss
說明: 後續增補
1. 正文
1.1 基礎概念
舉個栗子:
用模型對100人進行身體健康狀況預測,已知30人患惡性良性腫瘤。規定惡性良性腫瘤為陽性,正常為陰性。
預測結果:25人陽性,其中5人實際為陰性。則,
TP = 20,(True Positive,正确預測為陽性)
FP = 5,False Positive,錯誤預測為陽性)
FN=10, (False Negative,錯誤預測為陰性)
TN = 65,(True Negative,正确預測為陰性)
小結:
第二字母為預測結果(P或N,預測為陽性或陰性),第一個字母為對預測結果的判斷(T或F,預測正确或錯誤)
第二字母為預測結果(P或N,預測為陽性或陰性),第一個字母為對預測結果的判斷(T或F,預測正确或錯誤)
第二字母為預測結果(P或N,預測為陽性或陰性),第一個字母為對預測結果的判斷(T或F,預測正确或錯誤)
混淆矩陣形式:
圖示:
說明: 不管是惡性良性腫瘤還是建築物預測,我們一般将我們所關心的類别歸為陽性,剩下的歸為陰性。
1.2 正文
1.2.1 dice loss
dice loss 來自 dice coefficient(一種用于評估兩個樣本相似性的度量函數參考文獻1),取值範圍0-1。
dice coefficient定義如下:
d i c e = 2 ∣ X ∩ Y ∣ ∣ X ∣ + ∣ Y ∣ dice = {2 |X \cap Y| \over |X| + |Y|} dice=∣X∣+∣Y∣2∣X∩Y∣
dice loss 定義如下:
L d i c e = 1 − d i c e = 1 − 2 ∣ X ∩ Y ∣ ∣ X ∣ + ∣ Y ∣ L_{dice} = 1 - dice = 1 - {2 |X \cap Y| \over |X| + |Y|} Ldice=1−dice=1−∣X∣+∣Y∣2∣X∩Y∣
對于二分類問題,用混淆矩陣計算如下,
d i c e = 2 T P 2 T P + F P + F N dice = {2TP \over 2TP + FP + FN} dice=2TP+FP+FN2TP
由參考文獻1知,
精确率:
P r e c i s i o n = T P T P + F P Precision = {TP \over TP + FP} Precision=TP+FPTP
召回率:
R e c a l l = T P T P + F N Recall = {TP \over TP + FN} Recall=TP+FNTP
其中,F1:
F 1 = 2 ∗ P r e c i s i o n ∗ R e c a l l P r e c i s i o n + R e c a l l F1 = {2*Precision*Recall \over Precision + Recall} F1=Precision+Recall2∗Precision∗Recall
又,
F 1 = 2 ∗ P r e c i s i o n ∗ R e c a l l P r e c i s i o n + R e c a l l = 2 T P 2 T P + F P + F N = d i c e F1 = {2*Precision*Recall \over Precision + Recall} = {2TP \over 2TP + FP + FN} = dice F1=Precision+Recall2∗Precision∗Recall=2TP+FP+FN2TP=dice
F1和我們的評價名額dice本質是一個意思,即,我們優化dice loss是直接優化F1
def dice_loss(target,predictive,ep=1e-8):
intersection = 2 * torch.sum(predictive * target) + ep
union = torch.sum(predictive) + torch.sum(target) + ep
loss = 1 - intersection / union
return loss
小結:
dice loss 對于正負樣本不平衡問題有着不錯的性能,訓練過程側重前景的挖掘。但訓練loss容易不穩定,改進操作包括和其他loss結合,包括:
dice loss + ce loss
dice loss + focal loss
具體參考文獻1
1.2.1 focal loss
1. 二分類交叉熵回顧
主要解決樣本不平衡問題提出的。
我們首先回顧一下二分類交叉熵
l o s s = − 1 N [ p ∗ l o g q + ( 1 − p ) ∗ l o g ( 1 − q ) ] loss =-{1 \over N} [p*logq + (1-p)*log(1-q)] loss=−N1[p∗logq+(1−p)∗log(1−q)]
其中,p為标簽,q為預測。對于二分類,我們規定上述p為正樣本,則,1-p代表負樣本。如果我們對遙感影像進行建築物提取,那麼p代表建築物(像素),q代表背景(像素)。則,上式又可改寫為:
l o s s = { − l o g q , p = 1 − l o g ( 1 − q ) , p = 0 loss = \begin{cases} -logq, \quad \quad \quad p=1 \\ -log(1-q), \quad p=0 \end{cases} loss={−logq,p=1−log(1−q),p=0
-log函數圖如下,
我們對上式進行解釋:
對一張遙感進行建築物提取,簡化圖如下,
(我們規定,像素值為0代表背景,像素值為1代表建築物)
我們分析左上角的像素點的計算過程,其中标簽值為1,我們預測結果為0.45。那麼我們代入公式
l 1 = − l o g ( 0.45 ) l1 = -log(0.45) l1=−log(0.45)
我們再分析右下角像素的計算過程,其中,右下角點為背景,是以我們的标簽值為0,如下圖所示,
代入公式
l 2 = − l o g ( 1 − 0.7 ) l2 = -log(1-0.7) l2=−log(1−0.7)
0.7位我們預測為建築物的機率
更進一步關于資料驗證部分,參考文獻3
參考文獻4
2. focal loss
對于上述二分類交叉熵而言,對正負樣本是同等考慮的,
同時,由公式我們發現一個現象,
對于正樣本(标簽中正樣本像素位置),輸出機率機率越大,損失越小,
對于負樣本(标簽中負樣本像素位置),輸出機率越小,損失越小,
為了抑制樣本不平衡問題(背景占比多),添加平衡因子 α \alpha α,論文中取值為0.25
l o s s = { − α × l o g q , p = 1 − ( 1 − α ) × l o g ( 1 − q ) , p = 0 loss = \begin{cases} -\alpha×logq ,\quad p=1 \\ -(1-\alpha) × log(1-q) ,\quad\quad\quad\quad p=0 \end{cases} loss={−α×logq,p=1−(1−α)×log(1−q),p=0
為了 減少易分類樣本的損失,更加關注困難的、錯分樣本,又添加了調制系數 γ \gamma γ,
l o s s = { − α × ( 1 − q ) γ × l o g q , p = 1 − α × q γ × l o g ( 1 − q ) , p = 0 loss = \begin{cases} -\alpha×(1-q)^\gamma ×logq ,\quad p=1 \\ -\alpha×q^\gamma × log(1-q) ,\quad\quad\quad\quad p=0 \end{cases} loss={−α×(1−q)γ×logq,p=1−α×qγ×log(1−q),p=0
參考文獻
[1] https://zhuanlan.zhihu.com/p/269592183
[2] https://blog.csdn.net/qq_34107425/article/details/110119894
[3] https://blog.csdn.net/weixin_39190382/article/details/114922578
[4] https://blog.csdn.net/weixin_39190382/article/details/114681163
[5] https://zhuanlan.zhihu.com/p/49981234
[6] https://www.cnblogs.com/king-lps/p/9497836.html
[7] https://www.aiuai.cn/aifarm1159.html