損失函式、風險函式及正則化知識系統總結
0 引言
做機器學習專案的時候總是遇到經驗風險、結構風險、正則化項等這些概念,還有損失函式最小化問題,今天我們就來詳細地總結下這些知識吧。
1 損失函式
針對單個具體樣本,表示模型預測值與真實樣本值之間的差距。損失函式越小,說明模型對於該樣本預測越準確。
在實際應用中,選取損失函式會受到諸多因素的制約,比如是否有異常值、機器學習演算法的選擇、梯度下降的時間複雜度、求導的難易程度以及預測值的置信度等等。因此,不存在一種損失函式適用於處理所有型別的資料。
分類問題和迴歸問題的損失函式是不同的,常見損失函式分類如下圖所示:
1.1 分類模型的損失函式
1.1.1 Log loss
損失函式的標準形式:
1.1.2 Focal Loss
Focal loss為凱明大神的大作,主要用於解決多分類任務中樣本不平衡的現象,可以獲得比softmax_cross_entropy更好的分類效果。
其標準形式如下:
論文中α=0.25,γ=2效果最好。
1.1.3 KL 散度(Relative Entropy)
KL散度( Kullback–Leibler divergence),也叫相對熵,是描述兩個概率分佈P和Q差異的一種方法。它是非對稱的,這意味著D(P||Q) ≠ D(Q||P)。特別的,在資訊理論中,D(P||Q)表示當用概率分佈Q來擬合真實分佈P時,產生的資訊損失,值越小資訊損失越小,其中P表示真實分佈,Q表示P的擬合分佈。
計算公式為:
顯然,根據上面的公式,K-L散度其實是資料的原始分佈p和近似分佈q之間的對數差值的期望。如果繼續用2為底的對數計算,則K-L散度值表示資訊損失的二進位制位數。
一般,K-L散度以下面的書寫方式更常見:
1.1.4 Exponential Loss
損失函式的標準形式是:
主要應用於 Boosting 演算法中,在Adaboost 演算法中,經過 m 次迭代後,可以得到 :
Adaboost 每次迭代時的目的都是找到最小化下列式子的引數α 和G:
易知,Adabooost 的目標式子就是指數損失,在給定n個樣本的情況下,Adaboost 的損失函式為:
1.1.5 Hinge Loss
Hinge loss 的叫法來源於其損失函式的圖形,為一個折線,形如一個鉸鏈結構所以取名為Hinge,通用的函式表示式為:
表示如果被正確分類,損失是0,否則損失就是 。
在機器學習中,Hinge 可以用來解間距最大化的問題,最有代表性的就是SVM 問題,最初的SVM 優化函式如下:
將約束項進行變形,則為:
則損失函式可以進一步寫為:
因此, SVM 的損失函式可以看作是 L2-norm 和 Hinge loss 之和。
1.1.6 Softmax Loss
有些人可能覺得邏輯迴歸的損失函式就是平方損失,其實並不是。平方損失函式可以通過線性迴歸在假設樣本是高斯分佈的條件下推導得到,而邏輯迴歸得到的並不是平方損失。在邏輯迴歸的推導中,它假設樣本服從伯努利分佈(即0-1分佈),然後求得滿足該分佈的似然函式,接著取對數求極值等等。而邏輯迴歸並沒有求似然函式的極值,而是把極大化當做是一種思想,進而推匯出它的經驗風險函式為:最小化負的似然函式(即)。從損失函式的視角來看,它就成了Softmax 損失函數了。