在深度學習中會遇到各類各樣的任務,咱們指望經過優化最終的loss使網絡模型達到指望的效果,所以loss的選擇是十分重要的。網絡
cross entropy loss框架
cross entropy loss和log loss,logistic loss是同一種loss。經常使用於分類問題,通常是配合softmax使用的,經過softmax操做獲得每一個類別的機率值,而後計算loss。機器學習
softmax函數爲:函數
,,學習
除了e,還可使用另外一個底數b,b>0,選擇一個較大的b值,將建立一個機率分佈,該分佈更集中於輸入值最大的位置。或,所以,softmax函數又能夠寫做優化
或,3d
softmax函數的輸出是一個機率分佈,機率和爲1。blog
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,表示預測結果。
,表示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這類機器學習框架,損失函數的二階可微是頗有必要的。