在深度學習中會遇到各種各樣的任務,我們期望通過優化最終的loss使網絡模型達到期望的效果,因此loss的選擇是十分重要的。
cross entropy loss
cross entropy loss和log loss,logistic loss是同一種loss。常用於分類問題,一般是配合softmax使用的,通過softmax操作得到每個類別的概率值,然后計算loss。
softmax函數為:
,
,
除了e,還可以使用另一個底數b,b>0,選擇一個較大的b值,將創建一個概率分布,該分布更集中於輸入值最大的位置。或
,因此,softmax函數又可以寫作
或
,
softmax函數的輸出是一個概率分布,概率和為1。
cross entropy loss為:
cross entropy loss用來度量模型預測分布和真實分布之間的距離,是平方誤差(MSE)的一種廣泛應用的替代方法。一般用於當輸出特征為概率分布時,輸出特征的每個值代表估計為對應類別的概率。
hingle loss
hingle loss是機器學習模型中用於訓練分類器的loss,用於“最大間隔”分類。對於二分類,ground truth t=1,預測結果為y,則hingle loss為
注意y是分類器決策函數的原始輸出,而不是經過處理德奧的預測類別。
Mean Squre Error (MSE/L2 loss)
,
表示ground truth,
表示預測結果。
Mean Absolute Error (MAE/ L1 loss)
,
表示ground truth,
表示預測結果。
L1 loss和L2 loss的區別:
L2 loss對異常值比較敏感,L1 loss比起L2 loss不易受異常值的影響,更加魯棒,但在0處不可導。L2 loss有穩定的唯一的解決方案,而L1 loss的解決方案則不一定唯一。
L2 loss優化能力較L1 loss更強一些。在訓練神經網絡時,L1 loss更新的梯度始終相同,也就是說,即使對於很小的損失值,梯度也很大。這樣不利於模型的學習。為了解決這個缺陷,我們可以使用變化的學習率,在損失接近最小值時降低學習率。而L2 loss在這種情況下的表現就很好,即便使用固定的學習率也可以有效收斂。L2 loss的梯度隨損失增大而增大,而損失趨於0時則會減小。這使得在訓練結束時,使用L2 loss的模型的結果會更精確。
如果異常值代表在商業中很重要的異常情況,並且需要被檢測出來,則應選用L2 loss。相反,如果只把異常值當作受損數據,則應選用L1 loss。
Huber loss (smooth L1 loss)
,
是一個可調參數。
Huber loss相對於L2 loss,對異常值不敏感,而且在0處可導。Huber loss可以看作是L1 loss和L2 loss的結合體,在誤差較大時,Huber loss等效於L1 loss,在誤差較小時,Huber loss等效於L2 loss。
Log-cos loss
log-cos是另一種應用於回歸問題中的,且比L2更平滑的損失函數。它的計算方式是預測誤差的雙曲余弦的對數。
優點:對於較小的x,log(cos(x))近似等於,對於較大的x,近似等於abs(x)-log2。這意味着log-cos基本類似於均方誤差,但不易受到異常點的影響。它具有Huber loss的所有優點,但不同於Huber loss的是,log-cos二階處處可微。
為什么需要二階導數?許多機器學習模型如XGBoost,即使采用牛頓法來尋找最優點。而牛頓法就需要求解二階導數(Hessian)。因此對於諸如XGBoost這類機器學習框架,損失函數的二階可微是很有必要的。