機(jī)器學(xué)習(xí)中的監(jiān)督學(xué)習(xí)本質(zhì)上是給定一系列訓(xùn)練樣本,嘗試學(xué)習(xí)的映射關(guān)系,使得給定一個,即便這個不在訓(xùn)練樣本中,也能夠得到盡量接近真實(shí)的輸出。而損失函數(shù)(Loss Function)則是這個過程中關(guān)鍵的一個組成部分,用來衡量模型的輸出與真實(shí)的之間的差距,給模型的優(yōu)化指明方向。
本文將介紹機(jī)器學(xué)習(xí)、深度學(xué)習(xí)中分類與回歸常用的幾種損失函數(shù),包括均方差損失 Mean Squared Loss、平均絕對誤差損失 Mean Absolute Error Loss、Huber Loss、分位數(shù)損失 Quantile Loss、交叉熵?fù)p失函數(shù) Cross Entropy Loss、Hinge 損失 Hinge Loss。主要介紹各種損失函數(shù)的基本形式、原理、特點(diǎn)等方面。
目錄
前言
均方差損失 Mean Squared Error Loss
平均絕對誤差損失 Mean Absolute Error Loss
Huber Loss
分位數(shù)損失 Quantile Loss
交叉熵?fù)p失 Cross Entropy Loss
合頁損失 Hinge Loss
總結(jié)
前言
在正文開始之前,先說下關(guān)于 Loss Function、Cost Function 和 Objective Function 的區(qū)別和聯(lián)系。在機(jī)器學(xué)習(xí)的語境下這三個術(shù)語經(jīng)常被交叉使用。
- 損失函數(shù) Loss Function 通常是針對單個訓(xùn)練樣本而言,給定一個模型輸出和一個真實(shí),損失函數(shù)輸出一個實(shí)值損失
- 代價函數(shù) Cost Function 通常是針對整個訓(xùn)練集(或者在使用 mini-batch gradient descent 時一個 mini-batch)的總損失
- 目標(biāo)函數(shù) Objective Function 是一個更通用的術(shù)語,表示任意希望被優(yōu)化的函數(shù),用于機(jī)器學(xué)習(xí)領(lǐng)域和非機(jī)器學(xué)習(xí)領(lǐng)域(比如運(yùn)籌優(yōu)化)
一句話總結(jié)三者的關(guān)系就是:A loss function is a part of a cost function which is a type of an objective function.
由于損失函數(shù)和代價函數(shù)只是在針對樣本集上有區(qū)別,因此在本文中統(tǒng)一使用了損失函數(shù)這個術(shù)語,但下文的相關(guān)公式實(shí)際上采用的是代價函數(shù) Cost Function 的形式,請讀者自行留意。
均方差損失 Mean Squared Error Loss
基本形式與原理
均方差 Mean Squared Error (MSE) 損失是機(jī)器學(xué)習(xí)、深度學(xué)習(xí)回歸任務(wù)中最常用的一種損失函數(shù),也稱為 L2 Loss。其基本形式如下
從直覺上理解均方差損失,這個損失函數(shù)的最小值為 0(當(dāng)預(yù)測等于真實(shí)值時),最大值為無窮大。下圖是對于真實(shí)值,不同的預(yù)測值的均方差損失的變化圖。橫軸是不同的預(yù)測值,縱軸是均方差損失,可以看到隨著預(yù)測與真實(shí)值絕對誤差的增加,均方差損失呈二次方地增加。
背后的假設(shè)
實(shí)際上在一定的假設(shè)下,我們可以使用最大化似然得到均方差損失的形式。假設(shè)模型預(yù)測與真實(shí)值之間的誤差服從標(biāo)準(zhǔn)高斯分布(),則給定一個模型輸出真實(shí)值的概率為
進(jìn)一步我們假設(shè)數(shù)據(jù)集中 N 個樣本點(diǎn)之間相互獨(dú)立,則給定所有輸出所有真實(shí)值的概率,即似然 Likelihood,為所有的累乘
通常為了計(jì)算方便,我們通常最大化對數(shù)似然 Log-Likelihood
去掉與無關(guān)的第一項(xiàng),然后轉(zhuǎn)化為最小化負(fù)對數(shù)似然 Negative Log-Likelihood
可以看到這個實(shí)際上就是均方差損失的形式。也就是說在模型輸出與真實(shí)值的誤差服從高斯分布的假設(shè)下,最小化均方差損失函數(shù)與極大似然估計(jì)本質(zhì)上是一致的,因此在這個假設(shè)能被滿足的場景中(比如回歸),均方差損失是一個很好的損失函數(shù)選擇;當(dāng)這個假設(shè)沒能被滿足的場景中(比如分類),均方差損失不是一個好的選擇。
平均絕對誤差損失 Mean Absolute Error Loss
基本形式與原理
平均絕對誤差 Mean Absolute Error (MAE) 是另一類常用的損失函數(shù),也稱為 L1 Loss。其基本形式如下
同樣的我們可以對這個損失函數(shù)進(jìn)行可視化如下圖,MAE 損失的最小值為 0(當(dāng)預(yù)測等于真實(shí)值時),最大值為無窮大。可以看到隨著預(yù)測與真實(shí)值絕對誤差的增加,MAE 損失呈線性增長
背后的假設(shè)
同樣的我們可以在一定的假設(shè)下通過最大化似然得到 MAE 損失的形式,假設(shè)模型預(yù)測與真實(shí)值之間的誤差服從拉普拉斯分布 Laplace distribution(),則給定一個模型輸出真實(shí)值的概率為
與上面推導(dǎo) MSE 時類似,我們可以得到的負(fù)對數(shù)似然實(shí)際上就是 MAE 損失的形式
MAE 與 MSE 區(qū)別
MAE 和 MSE 作為損失函數(shù)的主要區(qū)別是:MSE 損失相比 MAE 通常可以更快地收斂,但 MAE 損失對于 outlier 更加健壯,即更加不易受到 outlier 影響。
MSE 通常比 MAE 可以更快地收斂。當(dāng)使用梯度下降算法時,MSE 損失的梯度為,而 MAE 損失的梯度為,即 MSE 的梯度的 scale 會隨誤差大小變化,而 MAE 的梯度的 scale 則一直保持為 1,即便在絕對誤差很小的時候 MAE 的梯度 scale 也同樣為 1,這實(shí)際上是非常不利于模型的訓(xùn)練的。當(dāng)然你可以通過在訓(xùn)練過程中動態(tài)調(diào)整學(xué)習(xí)率緩解這個問題,但是總的來說,損失函數(shù)梯度之間的差異導(dǎo)致了 MSE 在大部分時候比 MAE 收斂地更快。這個也是 MSE 更為流行的原因。
MAE 對于 outlier 更加 robust。我們可以從兩個角度來理解這一點(diǎn):
第一個角度是直觀地理解,下圖是 MAE 和 MSE 損失畫到同一張圖里面,由于MAE 損失與絕對誤差之間是線性關(guān)系,MSE 損失與誤差是平方關(guān)系,當(dāng)誤差非常大的時候,MSE 損失會遠(yuǎn)遠(yuǎn)大于 MAE 損失。因此當(dāng)數(shù)據(jù)中出現(xiàn)一個誤差非常大的 outlier 時,MSE 會產(chǎn)生一個非常大的損失,對模型的訓(xùn)練會產(chǎn)生較大的影響。
第二個角度是從兩個損失函數(shù)的假設(shè)出發(fā),MSE 假設(shè)了誤差服從高斯分布,MAE 假設(shè)了誤差服從拉普拉斯分布。拉普拉斯分布本身對于 outlier 更加 robust。參考下圖(來源:Machine Learning: A Probabilistic Perspective 2.4.3 The Laplace distribution Figure 2.8),當(dāng)右圖右側(cè)出現(xiàn)了 outliers 時,拉普拉斯分布相比高斯分布受到的影響要小很多。因此以拉普拉斯分布為假設(shè)的 MAE 對 outlier 比高斯分布為假設(shè)的 MSE 更加 robust。
Huber Loss
上文我們分別介紹了 MSE 和 MAE 損失以及各自的優(yōu)缺點(diǎn),MSE 損失收斂快但容易受 outlier 影響,MAE 對 outlier 更加健壯但是收斂慢,Huber Loss 則是一種將 MSE 與 MAE 結(jié)合起來,取兩者優(yōu)點(diǎn)的損失函數(shù),也被稱作 Smooth Mean Absolute Error Loss 。其原理很簡單,就是在誤差接近 0 時使用 MSE,誤差較大時使用 MAE,公式為
上式中是 Huber Loss 的一個超參數(shù),的值是 MSE 和 MAE 兩個損失連接的位置。上式等號右邊第一項(xiàng)是 MSE 的部分,第二項(xiàng)是 MAE 部分,在 MAE 的部分公式為是為了保證誤差時 MAE 和 MSE 的取值一致,進(jìn)而保證 Huber Loss 損失連續(xù)可導(dǎo)。
下圖是時的 Huber Loss,可以看到在的區(qū)間內(nèi)實(shí)際上就是 MSE 損失,在和區(qū)間內(nèi)為 MAE損失。
Huber Loss 的特點(diǎn)
Huber Loss 結(jié)合了 MSE 和 MAE 損失,在誤差接近 0 時使用 MSE,使損失函數(shù)可導(dǎo)并且梯度更加穩(wěn)定;在誤差較大時使用 MAE 可以降低 outlier 的影響,使訓(xùn)練對 outlier 更加健壯。缺點(diǎn)是需要額外地設(shè)置一個超參數(shù)。
分位數(shù)損失 Quantile Loss
分位數(shù)回歸 Quantile Regression 是一類在實(shí)際應(yīng)用中非常有用的回歸算法,通常的回歸算法是擬合目標(biāo)值的期望或者中位數(shù),而分位數(shù)回歸可以通過給定不同的分位點(diǎn),擬合目標(biāo)值的不同分位數(shù)。例如我們可以分別擬合出多個分位點(diǎn),得到一個置信區(qū)間,如下圖所示(圖片來自筆者的一個分位數(shù)回歸代碼 demo Quantile Regression Demo)
分位數(shù)回歸是通過使用分位數(shù)損失 Quantile Loss 來實(shí)現(xiàn)這一點(diǎn)的,分位數(shù)損失形式如下,式中的 r 分位數(shù)系數(shù)。
我們?nèi)绾卫斫膺@個損失函數(shù)呢?這個損失函數(shù)是一個分段的函數(shù) ,將(高估) 和(低估) 兩種情況分開來,并分別給予不同的系數(shù)。當(dāng)時,低估的損失要比高估的損失更大,反過來當(dāng)時,高估的損失比低估的損失大;分位數(shù)損失實(shí)現(xiàn)了分別用不同的系數(shù)控制高估和低估的損失,進(jìn)而實(shí)現(xiàn)分位數(shù)回歸。特別地,當(dāng)時,分位數(shù)損失退化為 MAE 損失,從這里可以看出 MAE 損失實(shí)際上是分位數(shù)損失的一個特例 — 中位數(shù)回歸(這也可以解釋為什么 MAE 損失對 outlier 更魯棒:MSE 回歸期望值,MAE 回歸中位數(shù),通常 outlier 對中位數(shù)的影響比對期望值的影響?。?。
下圖是取不同的分位點(diǎn) 0.2、0.5、0.6 得到的三個不同的分位損失函數(shù)的可視化,可以看到 0.2 和 0.6 在高估和低估兩種情況下?lián)p失是不同的,而 0.5 實(shí)際上就是 MAE。
交叉熵?fù)p失 Cross Entropy Loss
上文介紹的幾種損失函數(shù)都是適用于回歸問題損失函數(shù),對于分類問題,最常用的損失函數(shù)是交叉熵?fù)p失函數(shù) Cross Entropy Loss。
二分類
考慮二分類,在二分類中我們通常使用 Sigmoid 函數(shù)將模型的輸出壓縮到 (0, 1) 區(qū)間內(nèi),用來代表給定輸入,模型判斷為正類的概率。由于只有正負(fù)兩類,因此同時也得到了負(fù)類的概率。
將兩條式子合并成一條
假設(shè)數(shù)據(jù)點(diǎn)之間獨(dú)立同分布,則似然可以表示為
對似然取對數(shù),然后加負(fù)號變成最小化負(fù)對數(shù)似然,即為交叉熵?fù)p失函數(shù)的形式
下圖是對二分類的交叉熵?fù)p失函數(shù)的可視化,藍(lán)線是目標(biāo)值為 0 時輸出不同輸出的損失,黃線是目標(biāo)值為 1 時的損失??梢钥吹郊s接近目標(biāo)值損失越小,隨著誤差變差,損失呈指數(shù)增長。
多分類
在多分類的任務(wù)中,交叉熵?fù)p失函數(shù)的推導(dǎo)思路和二分類是一樣的,變化的地方是真實(shí)值現(xiàn)在是一個 One-hot 向量,同時模型輸出的壓縮由原來的 Sigmoid 函數(shù)換成 Softmax 函數(shù)。Softmax 函數(shù)將每個維度的輸出范圍都限定在之間,同時所有維度的輸出和為 1,用于表示一個概率分布。
其中表示 K 個類別中的一類,同樣的假設(shè)數(shù)據(jù)點(diǎn)之間獨(dú)立同分布,可得到負(fù)對數(shù)似然為
由于是一個 one-hot 向量,除了目標(biāo)類為 1 之外其他類別上的輸出都為 0,因此上式也可以寫為
其中是樣本的目標(biāo)類。通常這個應(yīng)用于多分類的交叉熵?fù)p失函數(shù)也被稱為 Softmax Loss 或者 Categorical Cross Entropy Loss。
Cross Entropy is good. But WHY?
分類中為什么不用均方差損失?上文在介紹均方差損失的時候講到實(shí)際上均方差損失假設(shè)了誤差服從高斯分布,在分類任務(wù)下這個假設(shè)沒辦法被滿足,因此效果會很差。為什么是交叉熵?fù)p失呢?有兩個角度可以解釋這個事情,一個角度從最大似然的角度,也就是我們上面的推導(dǎo);另一個角度是可以用信息論來解釋交叉熵?fù)p失:
假設(shè)對于樣本存在一個最優(yōu)分布真實(shí)地表明了這個樣本屬于各個類別的概率,那么我們希望模型的輸出盡可能地逼近這個最優(yōu)分布,在信息論中,我們可以使用 KL 散度 Kullback–Leibler Divergence 來衡量兩個分布的相似性。給定分布和分布, 兩者的 KL 散度公式如下
其中第一項(xiàng)為分布的信息熵,第二項(xiàng)為分布和的交叉熵。將最優(yōu)分布和輸出分布帶入和得到
由于我們希望兩個分布盡量相近,因此我們最小化 KL 散度。同時由于上式第一項(xiàng)信息熵僅與最優(yōu)分布本身相關(guān),因此我們在最小化的過程中可以忽略掉,變成最小化
我們并不知道最優(yōu)分布,但訓(xùn)練數(shù)據(jù)里面的目標(biāo)值可以看做是的一個近似分布
這個是針對單個訓(xùn)練樣本的損失函數(shù),如果考慮整個數(shù)據(jù)集,則
可以看到通過最小化交叉熵的角度推導(dǎo)出來的結(jié)果和使用最大 化似然得到的結(jié)果是一致的。
合頁損失 Hinge Loss
合頁損失 Hinge Loss 是另外一種二分類損失函數(shù),適用于 maximum-margin 的分類,支持向量機(jī) Support Vector Machine (SVM) 模型的損失函數(shù)本質(zhì)上就是 Hinge Loss + L2 正則化。合頁損失的公式如下
下圖是為正類, 即時,不同輸出的合頁損失示意圖
可以看到當(dāng)為正類時,模型輸出負(fù)值會有較大的懲罰,當(dāng)模型輸出為正值且在區(qū)間時還會有一個較小的懲罰。即合頁損失不僅懲罰預(yù)測錯的,并且對于預(yù)測對了但是置信度不高的也會給一個懲罰,只有置信度高的才會有零損失。使用合頁損失直覺上理解是要找到一個決策邊界,使得所有數(shù)據(jù)點(diǎn)被這個邊界正確地、高置信地被分類。
總結(jié)
本文針對機(jī)器學(xué)習(xí)中最常用的幾種損失函數(shù)進(jìn)行相關(guān)介紹,首先是適用于回歸的均方差損失 Mean Squared Loss、平均絕對誤差損失 Mean Absolute Error Loss,兩者的區(qū)別以及兩者相結(jié)合得到的 Huber Loss,接著是應(yīng)用于分位數(shù)回歸的分位數(shù)損失 Quantile Loss,表明了平均絕對誤差損失實(shí)際上是分位數(shù)損失的一種特例,在分類場景下,本文討論了最常用的交叉熵?fù)p失函數(shù) Cross Entropy Loss,包括二分類和多分類下的形式,并從信息論的角度解釋了交叉熵?fù)p失函數(shù),最后簡單介紹了應(yīng)用于 SVM 中的 Hinge 損失 Hinge Loss。本文相關(guān)的可視化代碼在 這里。
受限于時間,本文還有其他許多損失函數(shù)沒有提及,比如應(yīng)用于 Adaboost 模型中的指數(shù)損失 Exponential Loss,0-1 損失函數(shù)等。另外通常在損失函數(shù)中還會有正則項(xiàng)(L1/L2 正則),這些正則項(xiàng)作為損失函數(shù)的一部分,通過約束參數(shù)的絕對值大小以及增加參數(shù)稀疏性來降低模型的復(fù)雜度,防止模型過擬合,這部分內(nèi)容在本文中也沒有詳細(xì)展開。讀者有興趣可以查閱相關(guān)的資料進(jìn)一步了解。That’s all. Thanks for reading.
責(zé)任編輯:YYX
-
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8420瀏覽量
132681 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5503瀏覽量
121200
發(fā)布評論請先 登錄
相關(guān)推薦
評論