1. L1 loss:
公式和求導公式:
(帶絕對值求導時,先去掉絕對值符号,再分情況求導)

一個batch的形式:
L1 loss 圖形和求導圖形如下:
圖的底部是預測值和label的內插補點。 我們可以看到L1 loss的底部是尖的。底部是不存在導數的。而在其他地方,導數大小都是一樣的。
優缺點:
優點:
1. L1 loss的魯棒性(抗幹擾性)比L2 loss強。概括起來就是L1對異常點不太敏感,而L2則會對異常點存在放大效果。因為L2将誤差平方化,當誤差大于1時,誤會會放大很多,是以使用L2 loss的模型的誤差會比使用L1 loss的模型對異常點更敏感。如果這個樣本是一個異常值,模型就需要調整以适應單個的異常值,這會犧牲許多其它正常的樣本,因為這些正常樣本的誤差比這單個的異常值的誤差小。如果異常值對研究很重要,最小均方誤差則是更好的選擇。
缺點:
1. L1 loss 對 x(損失值)的導數為常數,在訓練後期,x較小時,若學習率不變,損失函數會在穩定值附近波動,很難收斂到更高的精度。
2. L2 loss的穩定性比L1 loss好。概括起來就是對于新資料的調整,L1的變動很大,而L2的則整體變動不大。
2. L2 loss:
公式和求導公式:
一個batch的形式:
L2 loss圖形和求導圖像如下:
缺點:
從L2 loss的圖像可以看到,圖像(上圖左邊紅線)的每一點的導數都不一樣的,離最低點越遠,梯度越大,使用梯度下降法求解的時候梯度很大,可能導緻梯度爆炸。
L1 loss一般用于簡單的模型,但由于神經網絡一般是解決複雜的問題,是以很少用L1 loss,例如對于CNN網絡,一般使用的是L2-loss,因為L2-loss的收斂速度比L1-loss要快。如下圖:
3. Smooth L1 loss
計算公式與求導公式:
一個batch(n個)資料時:
smooth L1 loss的圖如下:
仔細觀察可以看到,當預測值和ground truth差别較小的時候(絕對值差小于1),其實使用的是L2 Loss,當絕對值差小于1時,由于L2會對誤差進行平方,是以會得到更小的損失,有利于模型收斂。而當差别大的時候,是L1 Loss的平移,是以相比于L2損失函數,其對離群點(指的是距離中心較遠的點)、異常值(outlier)不敏感,可控制梯度的量級使訓練時不容易跑飛。。SooothL1Loss其實是L2Loss和L1Loss的結合,它同時擁有L2 Loss和L1 Loss的部分優點。