當預測值與目標值相差很大時,L2 Loss的梯度為(x-t),容易產生梯度爆炸,L1 Loss的梯度為常數,通過使用Smooth L1 Loss,在預測值與目標值相差較大時,由L2 Loss轉為L1 Loss可以防止梯度爆炸。
L2 loss的導數(梯度)中包含預測值與目標值的差值,當預測值和目標值相差很大,L2就會梯度爆炸。說明L2對異常點更敏感。L1 對噪聲更加魯棒。
當差值太大時, loss在|x|>1的部分采用了 l1 loss,避免梯度爆炸。原先L2梯度里的x−t被替換成了±1, 這樣就避免了梯度爆炸, 也就是它更加健壯。
總的來說:相比於L2損失函數,其對離群點、異常值(outlier)不敏感,可控制梯度的量級使訓練時不容易跑飛。