SmoothL1 Loss
出自論文:https://arxiv.org/abs/1504.08083
採用該Loss的模型(Faster RCNN,SSD,,)
SmoothL1 Loss是在Fast RCNN論文中提出來的,依據論文的解釋,是因爲smooth L1 loss讓loss對於離羣點更加魯棒,即:相比於L2 Loss,其對離羣點、異常值(outlier)不敏感,梯度變化相對更小,訓練時不容易跑飛。
假設x是預測框與 groud truth
之間 elementwise 的差異,那麼對比L1/L2/SmoothL1 Loss
如下:
對應的曲線圖如下:
對三個loss的x求導得到:
由(4)可以看到,當x值很大,即遇到的是離羣點,異常值時,導數很大。所以在訓練初期,預測值與 groud truth 差異過於大時,L2 Loss對預測值的梯度十分大,訓練不穩定。
由(5)知道,L1 Loss的導數是常數,那麼在訓練後期,當預測值與 ground truth 差異很小時, L1 Loss 損失對預測值的導數的絕對值仍然爲 1,而 learning rate 如果不變,損失函數將在穩定值附近波動,難以繼續收斂以達到更高精度。
而(6)可以看出,smooth L1在 x 較小時,對x 的梯度也會變小,而在 x 很大時,對 x 的梯度的絕對值達到上限 1,也不會太大以至於破壞網絡參數。 smooth L1完美地避開了 L1 loss 和 L2 loss 損失的缺陷。
缺點:
- 上面的三種Loss用於計算目標檢測的Bounding Box Loss時,獨立的求出4個點的Loss,然後進行相加得到最終的Bounding Box Loss,這種做法的假設是4個點是相互獨立的,實際是有一定相關性的
- 實際評價框檢測的指標是使用IOU,這兩者是不等價的,多個檢測框可能有相同大小的smooth L1 Loss,但IOU可能差異很大,爲了解決這個問題就引入了IOU LOSS。