神經網絡之loss總結學習

         影響一個網絡性能的因素很多,網絡結構,參數優化,loss約束等,這裏就常見的幾種loss進行比較總結。其中(1)(2)(3)爲迴歸損失,(4)(5)(6)爲分類損失。


(1)MSE(均方誤差)

均方誤差(MSE)是迴歸損失函數中最常用的誤差,也常被稱爲L2 loss,它是預測值與目標值之間差值的平方和,其公式如下所示:

å¨è¿éæå¥å¾çæè¿°,有時也寫成這樣å¨è¿éæå¥å¾çæè¿°

優點:各點都連續光滑,方便求導,具有較爲穩定的解

缺點:不是特別的穩健,因爲當函數的輸入值距離中心值較遠的時候,使用梯度下降法求解的時候梯度很大,可能導致梯度爆炸

(2)平均絕對誤差

平均絕對誤差(MAE)是另一種常用的迴歸損失函數,也常被稱爲L1 loss,它是目標值與預測值之差絕對值的和,表示了預測值的平均誤差幅度,而不需要考慮誤差的方向,範圍是0到∞,其公式如下所示:

å¨è¿éæå¥å¾çæè¿°  , 有時也寫成這樣  å¨è¿éæå¥å¾çæè¿°

優點:無論對於什麼樣的輸入值,都有着穩定的梯度,不會導致梯度爆炸問題,具有較爲穩健性的解。
缺點:在中心點是折點,不能求導,不方便求解。

(3)smooth L1 loss

smooth L1說的是光滑之後的L1,前面說過了L1損失的缺點就是有折點,不光滑,導致不穩定,那如何讓其變得光滑呢?smooth L1損失函數爲:

smooth l1 loss對於離羣點更加魯棒,根據fast rcnn的說法,"...... L1 loss that is less sensitive to outliers than the L2 loss used in R-CNN and SPPnet." 也就是smooth L1 loss讓loss對於離羣點更加魯棒,相比於L2損失函數,其對離羣點、異常值(outlier)不敏感,梯度變化相對更小,訓練時不容易跑飛。


補:在機器學習中,正規化是防止過擬合的一種重要技巧。從數學上講,它會增加一個正則項,防止係數擬合得過好以至於過擬合。L1與L2的區別只在於,L2是權重的平方和,而L1就是權重的和。

L1正則化表達式:lasso regression

L2正則化表達式:ridge regression

下面是L1正則化和L2正則化的作用,

  • L1正則化可以產生稀疏權值矩陣,即產生一個稀疏模型,可以用於特徵選擇
  • L2正則化可以防止模型過擬合(overfitting);一定程度上,L1也可以防止過擬合
L2正則化 L1正則化
計算效率高(因爲有解析解) 在非稀疏情形下計算效率低
非稀疏輸出 稀疏輸出
無特徵選擇 內置特徵選擇

(4)邏輯迴歸

邏輯迴歸一般用在二分類問題上,有時也被稱爲二值交叉熵,其算法表達式爲

其中 y∈{0,1} 是真實標籤,ŷ 是預測值。當然,對於二分類我們幾乎都是用 sigmoid 函數激活 ŷ =σ(x),1- ŷ =σ(-x)。

(5)交叉熵、center loss

至於多分類損失,一般選用交叉熵,其算法公式如下,  ,其中q(x)表示的是x樣本出現的概率,一般經過Softmax迴歸處理之後的得到: 

這樣就把神經網絡的輸出也變成了一個概率分佈,從而可以通過交叉熵來計算預測的概率分佈和真實答案的概率分佈之間的距離了。在分類任務時,僅僅使用softmax作爲監督信號的輸出處理只能做到seperable而不是discriminative,這時就有大佬在softmax的基礎上弄了center loss,目的就是爲了使得學習的特徵類內距離更小。(有點像後面的metric learning loss增加類間距離,減少類內距離)。具體的計算方式如下,參考鏈接https://blog.csdn.net/Lucifer_zzq/article/details/81236174

è¿éåå¾çæè¿°

λ用於平衡softmax loss與center loss,越大則區分度越大。m是mini-batch、n是class。在Lc公式中有一個缺陷,就是Cyi是i這個樣本對應的類別yi所屬於的類中心C∈ Rd,d代表d維。理想情況下,Cyi需要隨着學到的feature變化而實時更新,也就是要在每一次迭代中用整個數據集的feature來算每個類的中心。但這顯然不現實,做以下兩個修改:

1、由整個訓練集更新center改爲mini-batch更改center

2、避免錯誤分類的樣本的干擾,使用scalar α 來控制center的學習率

因此求算梯度的公式如下:

具體算法流程


補:交叉熵這個概念來自信息學,用來描述兩個事物之間的相似程度,具體瞭解可參考https://zhuanlan.zhihu.com/p/74075915

下面補充幾個簡單的概念,

熵:是表示隨機變量不確定的度量,計算公式爲H(x)=-\sum_{x}^{n} P(x)log(P(x))

 以下幾個都是用來衡量概率分佈之間差異性的指標,

KL散度:

JS散度:

交叉熵:

推土機距離(Wasserstein距離):

 

 

Wasserstein距離相比KL散度、JS散度的優越性在於,即便兩個分佈沒有重疊,Wasserstein距離仍然能夠反映它們的遠近,在WGAN中應用比較廣。


(6)focal loss

Focal Loss的引入主要是爲了解決難易樣本數量不平衡(注意,有區別於正負樣本數量不平衡)的問題,使用的範圍非常廣泛。

單階段的目標檢測器通常會產生高達100k的候選目標,只有極少數是正樣本,正負樣本數量非常不平衡。我們在計算分類的時候常用的損失——交叉熵的公式如下:

爲了解決正負樣本不平衡的問題,我們通常會在交叉熵損失的前面加上一個參數 \alpha ,即:

儘管 \alpha 平衡了正負樣本,但對難易樣本的不平衡沒有任何幫助。而實際上,目標檢測中大量的候選目標都是像下圖一樣的易分樣本。何凱明大神認爲易分樣本(即,置信度高的樣本)對模型的提升效果非常小,模型應該主要關注與那些難分樣本這個假設是有問題的,是GHM的主要改進對象),於是結合上面的思想得到focal loss,

實驗表明\gamma 取2, \alpha取0.25的時候效果最佳。

補:

GHM是基於focal loss進行改進的,由於focal loss使模型過多關注那些特別難分的樣本,當樣本中有離羣點(outliers),可能模型已經收斂了但是這些離羣點還是會被判斷錯誤,其次\gamma 和\alpha的取值會相互影響,需要聯合起來一起實驗纔行。

Focal Loss是從置信度p的角度入手衰減loss,而GHM是一定範圍置信度p的樣本數量的角度衰減loss。在GHM中先定義了一個梯度模長g

同時定義了一個變量來衡量出一定梯度範圍內的樣本數量,即梯度密度 GD(g)

於是用於分類的GHM損失:

用於迴歸的GHM損失:


補充:

GIOU Loss(論文原文:https://arxiv.org/abs/1902.09630)

這是2019年CVPR論文《Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression》所提出,針對目前Anchor-Based的目標檢測算法,如yolo,SSD,faster rcnn等,其的定位Loss普遍採用bbox和ground truth bbox的L1範數,L2範數來計算,但是在評測的時候卻使用IOU(交併比)去判斷是否檢測到目標。顯然這兩者並不是完全等價的,而且直接將IOU作爲Loss來優化任務,但這存在兩個問題:

  • 預測框bbox和ground truth bbox如果沒有重疊,IOU就始終爲0並且無法優化。也就是說損失函數失去了可導的性質。

  • IOU無法分辨不同方式的對齊。

GIOU指的是假設現在有兩個任意的bbox A和B,我們要找到一個最小的封閉形狀C,讓C可以將A和B包圍在裏面,然後我們計算C中沒有覆蓋A和B的面積佔C總面積的比例,然後用A和B的IOU值減去這個比值,具體過程用下面的算法1來表示:

GIoU相比於IoU有如下性質:

  • 和IoU類似,GIoU也可以作爲一個距離,然後損失可以用下面的公式來計算: L_{GIOU}=1-GIOU

  • 和原始的IoU類似,GIoU對物體的尺度大小不敏感(因爲比值的原因),並且GIoU<=Iou。

  • 由於GIoU引入了包含A,B兩個框的C,所以當A,B不重合時也同樣可以計算。

整個算法的流程如下:

DIOU Loss(論文原文:https://arxiv.org/pdf/1911.08287.pdf

最新的AAAI 2020的論文《Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression》提出了DIOU Loss,相對於IOU loss與Giou loss,IoU Loss可以表示爲:,從IoU的角度來解決迴歸損失,但它的缺點是當兩個框不想交時,IOU-Loss始終爲1,無法給出優化方向。因此GIoU來了,GIoU可以用下面的公式表示: ,可以看到GIoU在IoU的基礎上添加了一項,其中表示包含兩個框的最小矩形,這樣就可以優化兩個框不相交的情況。但GIoU仍然存在一個問題是,當兩個框相交時,GIoU損失退化爲了IoU損失。導致在預測框bbox和ground truth bbox包含的時候優化變得非常困難,特別是在水平和垂直方向收斂難。這裏一個猜想是在水平和垂直方向,值的增長沒有在其他方向快,因此對這兩個方向的懲罰力度不夠,導致放慢了收斂速度。

Diou具體計算公式如下:

DIoU Loss的優點如下:

  • 和GIoU Loss類似,DIoU Loss在和目標框不重疊時,仍然可以爲邊界框提供移動方向。

  • DIoU Loss可以直接最小化兩個目標框的距離,因此比GIoU Loss收斂快得多。

  • 對於包含兩個框在水平方向和垂直方向上這種情況,DIoU Loss可以使迴歸Loss 下降非常快,而GIoU Loss幾乎退化爲IoU Loss。

同時爲了使目標框有重疊甚至有包含關係時更準確更快收斂,論文還提出了ciou loss。一個好的目標框迴歸損失應該考慮三個重要的幾何因素:重疊面積,中心點距離,長寬比。GIoU爲了歸一化座標尺度,利用IOU並初步解決了IoU爲0無法優化的問題。然後DIoU損失在GIoU Loss的基礎上考慮了邊界框的重疊面積和中心點距離。所以還有最後一個點上面的Loss沒有考慮到,即Anchor的長寬比和目標框之間的長寬比的一致性。基於這一點,論文提出了CIoU Loss。

從上面的損失可以看到,CIoU比DIoU多了\alpha\upsilon這兩個參數。其中\alpha是用來平衡比例的係數,\upsilon是用來衡量Anchor框和目標框之間的比例一致性。它們的公式如下:

                

具體的可參考大神的公衆號https://mp.weixin.qq.com/s/u41W31IEg5xuX9jtRyVGmQ


參考鏈接:

https://zhuanlan.zhihu.com/p/80594704(5分鐘理解Focal Loss與GHM——解決樣本不平衡利器)

https://blog.csdn.net/weixin_41940752/article/details/93159710(L1、L2、smooth L1三類損失函數)

https://blog.csdn.net/qq_14845119/article/details/80787753(損失函數loss大大總結)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章