smoothL1 loss不用L1 loss和L2 LOSS

爲了從兩個方面限制梯度:

    當預測框與 ground truth 差別過大時,梯度值不至於過大;
    當預測框與 ground truth 差別很小時,梯度值足夠小。

考察如下幾種損失函數,其中 x 爲預測框與 groud truth 之間 elementwise 的差異:

 

損失函數對 x 的導數分別爲:

 

觀察 (4),當 x 增大時 L2 損失對 x 的導數也增大。這就導致訓練初期,預測值與 groud truth 差異過於大時,損失函數對預測值的梯度十分大,訓練不穩定。

根據方程 (5),L1 對 x 的導數爲常數。這就導致訓練後期,預測值與 ground truth 差異很小時, L1 損失對預測值的導數的絕對值仍然爲 1,而 learning rate 如果不變,損失函數將在穩定值附近波動,難以繼續收斂以達到更高精度。

最後觀察 (6), smoothL1 在 x 較小時,對 x 的梯度也會變小,而在 x 很大時,對 x 的梯度的絕對值達到上限 1,也不會太大以至於破壞網絡參數。 smoothL1 完美地避開了 L1 和 L2 損失的缺陷。其函數圖像如下:

由圖中可以看出,它在遠離座標原點處,圖像和 L1 loss 很接近,而在座標原點附近,轉折十分平滑,不像 L1 loss 有個尖角,因此叫做 smooth L1 loss。

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