<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 六個(gè)深度學(xué)習常用損失函數總覽:基本形式、原理、特點(diǎn)

六個(gè)深度學(xué)習常用損失函數總覽:基本形式、原理、特點(diǎn)

發(fā)布人:數據派THU 時(shí)間:2022-02-19 來(lái)源:工程師 發(fā)布文章

來(lái)源:極市平臺


機器學(xué)習中的監督學(xué)習本質(zhì)上是給定一系列訓練樣本  ,嘗試學(xué)習  的映射關(guān)系,使得給定一個(gè)  ,即便這個(gè)  不在訓練樣本中,也能夠得到盡量接近真實(shí)  的輸出  。而損失函數(Loss Function)則是這個(gè)過(guò)程中關(guān)鍵的一個(gè)組成部分,用來(lái)衡量模型的輸出  與真實(shí)的  之間的差距,給模型的優(yōu)化指明方向。


本文將介紹機器學(xué)習、深度學(xué)習中分類(lèi)與回歸常用的幾種損失函數,包括均方差損失 Mean Squared Loss、平均絕對誤差損失 Mean Absolute Error Loss、Huber Loss、分位數損失 Quantile Loss、交叉熵損失函數 Cross Entropy Loss、Hinge 損失 Hinge Loss。主要介紹各種損失函數的基本形式、原理、特點(diǎn)等方面。

目錄


  1. 前言

  2. 均方差損失 Mean Squared Error Loss

  3. 平均絕對誤差損失 Mean Absolute Error Loss

  4. Huber Loss

  5. 分位數損失 Quantile Loss

  6. 交叉熵損失 Cross Entropy Loss

  7. 合頁(yè)損失 Hinge Loss

  8. 總結


前言


在正文開(kāi)始之前,先說(shuō)下關(guān)于 Loss Function、Cost Function 和 Objective Function 的區別和聯(lián)系。在機器學(xué)習的語(yǔ)境下這三個(gè)術(shù)語(yǔ)經(jīng)常被交叉使用。


  • - 損失函數 Loss Function 通常是針對單個(gè)訓練樣本而言,給定一個(gè)模型輸出  和一個(gè)真實(shí)  ,損失函數輸出一個(gè)實(shí)值損失 
  • - 代價(jià)函數 Cost Function 通常是針對整個(gè)訓練集(或者在使用 mini-batch gradient descent 時(shí)一個(gè) mini-batch)的總損失 
  • - 目標函數 Objective Function 是一個(gè)更通用的術(shù)語(yǔ),表示任意希望被優(yōu)化的函數,用于機器學(xué)習領(lǐng)域和非機器學(xué)習領(lǐng)域(比如運籌優(yōu)化)


一句話(huà)總結三者的關(guān)系就是:A loss function is a part of a cost function which is a type of an objective function.


由于損失函數和代價(jià)函數只是在針對樣本集上有區別,因此在本文中統一使用了損失函數這個(gè)術(shù)語(yǔ),但下文的相關(guān)公式實(shí)際上采用的是代價(jià)函數 Cost Function 的形式,請讀者自行留意。


均方差損失 Mean Squared Error Loss


基本形式與原理


均方差 Mean Squared Error (MSE) 損失是機器學(xué)習、深度學(xué)習回歸任務(wù)中最常用的一種損失函數,也稱(chēng)為 L2 Loss。其基本形式如下

圖片

從直覺(jué)上理解均方差損失,這個(gè)損失函數的最小值為 0(當預測等于真實(shí)值時(shí)),最大值為無(wú)窮大。下圖是對于真實(shí)值  ,不同的預測值  的均方差損失的變化圖。橫軸是不同的預測值,縱軸是均方差損失,可以看到隨著(zhù)預測與真實(shí)值絕對誤差  的增加,均方差損失呈二次方地增加。圖片

背后的假設


實(shí)際上在一定的假設下,我們可以使用最大化似然得到均方差損失的形式。假設模型預測與真實(shí)值之間的誤差服從標準高斯分布(  ),則給定一個(gè)  模型輸出真實(shí)值  的概率為

圖片

進(jìn)一步我們假設數據集中 N 個(gè)樣本點(diǎn)之間相互獨立,則給定所有  輸出所有真實(shí)值  的概率,即似然 Likelihood,為所有  的累乘

圖片

通常為了計算方便,我們通常最大化對數似然 Log-Likelihood

圖片

去掉與  無(wú)關(guān)的第一項,然后轉化為最小化負對數似然 Negative Log-Likelihood

圖片


可以看到這個(gè)實(shí)際上就是均方差損失的形式。也就是說(shuō)在模型輸出與真實(shí)值的誤差服從高斯分布的假設下,最小化均方差損失函數與極大似然估計本質(zhì)上是一致的,因此在這個(gè)假設能被滿(mǎn)足的場(chǎng)景中(比如回歸),均方差損失是一個(gè)很好的損失函數選擇;當這個(gè)假設沒(méi)能被滿(mǎn)足的場(chǎng)景中(比如分類(lèi)),均方差損失不是一個(gè)好的選擇。

平均絕對誤差損失 Mean Absolute Error Loss


基本形式與原理


平均絕對誤差 Mean Absolute Error (MAE) 是另一類(lèi)常用的損失函數,也稱(chēng)為 L1 Loss。其基本形式如下

圖片

同樣的我們可以對這個(gè)損失函數進(jìn)行可視化如下圖,MAE 損失的最小值為 0(當預測等于真實(shí)值時(shí)),最大值為無(wú)窮大??梢钥吹诫S著(zhù)預測與真實(shí)值絕對誤差  的增加,MAE 損失呈線(xiàn)性增長(cháng)

圖片

背后的假設

同樣的我們可以在一定的假設下通過(guò)最大化似然得到 MAE 損失的形式,假設模型預測與真實(shí)值之間的誤差服從拉普拉斯分布 Laplace distribution(  ),則給定一個(gè)  模型輸出真實(shí)值  的概率為

圖片

與上面推導 MSE 時(shí)類(lèi)似,我們可以得到的負對數似然實(shí)際上就是 MAE 損失的形式

圖片

MAE 與 MSE 區別

MAE 和 MSE 作為損失函數的主要區別是:MSE 損失相比 MAE 通??梢愿斓厥諗?,但 MAE 損失對于 outlier 更加健壯,即更加不易受到 outlier 影響。MSE 通常比 MAE 可以更快地收斂。當使用梯度下降算法時(shí),MSE 損失的梯度為  ,而 MAE 損失的梯度為  ,即 MSE 的梯度的 scale 會(huì )隨誤差大小變化,而 MAE 的梯度的 scale 則一直保持為 1,即便在絕對誤差  很小的時(shí)候 MAE 的梯度 scale 也同樣為 1,這實(shí)際上是非常不利于模型的訓練的。當然你可以通過(guò)在訓練過(guò)程中動(dòng)態(tài)調整學(xué)習率緩解這個(gè)問(wèn)題,但是總的來(lái)說(shuō),損失函數梯度之間的差異導致了 MSE 在大部分時(shí)候比 MAE 收斂地更快。這個(gè)也是 MSE 更為流行的原因。MAE 對于 outlier 更加 robust。我們可以從兩個(gè)角度來(lái)理解這一點(diǎn):

  • 第一個(gè)角度是直觀(guān)地理解,下圖是 MAE 和 MSE 損失畫(huà)到同一張圖里面,由于MAE 損失與絕對誤差之間是線(xiàn)性關(guān)系,MSE 損失與誤差是平方關(guān)系,當誤差非常大的時(shí)候,MSE 損失會(huì )遠遠大于 MAE 損失。因此當數據中出現一個(gè)誤差非常大的 outlier 時(shí),MSE 會(huì )產(chǎn)生一個(gè)非常大的損失,對模型的訓練會(huì )產(chǎn)生較大的影響。

圖片

  • 第二個(gè)角度是從兩個(gè)損失函數的假設出發(fā),MSE 假設了誤差服從高斯分布,MAE 假設了誤差服從拉普拉斯分布。拉普拉斯分布本身對于 outlier 更加 robust。參考下圖(來(lái)源:Machine Learning: A Probabilistic Perspective 2.4.3 The Laplace distribution Figure 2.8),當右圖右側出現了 outliers 時(shí),拉普拉斯分布相比高斯分布受到的影響要小很多。因此以拉普拉斯分布為假設的 MAE 對 outlier 比高斯分布為假設的 MSE 更加 robust。

圖片

Huber Loss


上文我們分別介紹了 MSE 和 MAE 損失以及各自的優(yōu)缺點(diǎn),MSE 損失收斂快但容易受 outlier 影響,MAE 對 outlier 更加健壯但是收斂慢,Huber Loss 則是一種將 MSE 與 MAE 結合起來(lái),取兩者優(yōu)點(diǎn)的損失函數,也被稱(chēng)作 Smooth Mean Absolute Error Loss 。其原理很簡(jiǎn)單,就是在誤差接近 0 時(shí)使用 MSE,誤差較大時(shí)使用 MAE,公式為

圖片


上式中  是 Huber Loss 的一個(gè)超參數, 的值是 MSE 和 MAE 兩個(gè)損失連接的位置。上式等號右邊第一項是 MSE 的部分,第二項是 MAE 部分,在 MAE 的部分公式為  是為了保證誤差  時(shí) MAE 和 MSE 的取值一致,進(jìn)而保證 Huber Loss 損失連續可導。下圖是  時(shí)的 Huber Loss,可以看到在  的區間內實(shí)際上就是 MSE 損失,在  和  區間內為 MAE損失。圖片

Huber Loss 的特點(diǎn)


Huber Loss 結合了 MSE 和 MAE 損失,在誤差接近 0 時(shí)使用 MSE,使損失函數可導并且梯度更加穩定;在誤差較大時(shí)使用 MAE 可以降低 outlier 的影響,使訓練對 outlier 更加健壯。缺點(diǎn)是需要額外地設置一個(gè)  超參數。

分位數損失 Quantile Loss


分位數回歸 Quantile Regression 是一類(lèi)在實(shí)際應用中非常有用的回歸算法,通常的回歸算法是擬合目標值的期望或者中位數,而分位數回歸可以通過(guò)給定不同的分位點(diǎn),擬合目標值的不同分位數。例如我們可以分別擬合出多個(gè)分位點(diǎn),得到一個(gè)置信區間,如下圖所示(圖片來(lái)自筆者的一個(gè)分位數回歸代碼 demo Quantile Regression Demo)


圖片




分位數回歸是通過(guò)使用分位數損失 Quantile Loss 來(lái)實(shí)現這一點(diǎn)的,分位數損失形式如下,式中的 r 分位數系數。


圖片

我們如何理解這個(gè)損失函數呢?這個(gè)損失函數是一個(gè)分段的函數 ,將  (高估) 和  (低估) 兩種情況分開(kāi)來(lái),并分別給予不同的系數。當  時(shí),低估的損失要比高估的損失更大,反過(guò)來(lái)當  時(shí),高估的損失比低估的損失大;分位數損失實(shí)現了分別用不同的系數控制高估和低估的損失,進(jìn)而實(shí)現分位數回歸。特別地,當  時(shí),分位數損失退化為 MAE 損失,從這里可以看出 MAE 損失實(shí)際上是分位數損失的一個(gè)特例 — 中位數回歸(這也可以解釋為什么 MAE 損失對 outlier 更魯棒:MSE 回歸期望值,MAE 回歸中位數,通常 outlier 對中位數的影響比對期望值的影響?。?。

圖片

下圖是取不同的分位點(diǎn) 0.2、0.5、0.6 得到的三個(gè)不同的分位損失函數的可視化,可以看到 0.2 和 0.6 在高估和低估兩種情況下?lián)p失是不同的,而 0.5 實(shí)際上就是 MAE。圖片

交叉熵損失 Cross Entropy Loss


上文介紹的幾種損失函數都是適用于回歸問(wèn)題損失函數,對于分類(lèi)問(wèn)題,最常用的損失函數是交叉熵損失函數 Cross Entropy Loss。


二分類(lèi)


考慮二分類(lèi),在二分類(lèi)中我們通常使用 Sigmoid 函數將模型的輸出壓縮到 (0, 1) 區間內  ,用來(lái)代表給定輸入  ,模型判斷為正類(lèi)的概率。由于只有正負兩類(lèi),因此同時(shí)也得到了負類(lèi)的概率。

圖片

將兩條式子合并成一條

圖片

假設數據點(diǎn)之間獨立同分布,則似然可以表示為

圖片

對似然取對數,然后加負號變成最小化負對數似然,即為交叉熵損失函數的形式

圖片

下圖是對二分類(lèi)的交叉熵損失函數的可視化,藍線(xiàn)是目標值為 0 時(shí)輸出不同輸出的損失,黃線(xiàn)是目標值為 1 時(shí)的損失??梢钥吹郊s接近目標值損失越小,隨著(zhù)誤差變差,損失呈指數增長(cháng)。圖片

多分類(lèi)


在多分類(lèi)的任務(wù)中,交叉熵損失函數的推導思路和二分類(lèi)是一樣的,變化的地方是真實(shí)值  現在是一個(gè) One-hot 向量,同時(shí)模型輸出的壓縮由原來(lái)的 Sigmoid 函數換成 Softmax 函數。Softmax 函數將每個(gè)維度的輸出范圍都限定在  之間,同時(shí)所有維度的輸出和為 1,用于表示一個(gè)概率分布。

圖片

其中  表示 K 個(gè)類(lèi)別中的一類(lèi),同樣的假設數據點(diǎn)之間獨立同分布,可得到負對數似然為

圖片

由于  是一個(gè) one-hot 向量,除了目標類(lèi)為 1 之外其他類(lèi)別上的輸出都為 0,因此上式也可以寫(xiě)為

圖片


其中  是樣本  的目標類(lèi)。通常這個(gè)應用于多分類(lèi)的交叉熵損失函數也被稱(chēng)為 Softmax Loss 或者 Categorical Cross Entropy Loss。

Cross Entropy is good. But WHY?


分類(lèi)中為什么不用均方差損失?上文在介紹均方差損失的時(shí)候講到實(shí)際上均方差損失假設了誤差服從高斯分布,在分類(lèi)任務(wù)下這個(gè)假設沒(méi)辦法被滿(mǎn)足,因此效果會(huì )很差。為什么是交叉熵損失呢?有兩個(gè)角度可以解釋這個(gè)事情,一個(gè)角度從最大似然的角度,也就是我們上面的推導;另一個(gè)角度是可以用信息論來(lái)解釋交叉熵損失:


假設對于樣本  存在一個(gè)最優(yōu)分布  真實(shí)地表明了這個(gè)樣本屬于各個(gè)類(lèi)別的概率,那么我們希望模型的輸出  盡可能地逼近這個(gè)最優(yōu)分布,在信息論中,我們可以使用 KL 散度 Kullback–Leibler Divergence 來(lái)衡量?jì)蓚€(gè)分布的相似性。給定分布  和分布  , 兩者的 KL 散度公式如下

圖片

其中第一項為分布  的信息熵,第二項為分布  和  的交叉熵。將最優(yōu)分布  和輸出分布  帶入  和  得到

圖片

由于我們希望兩個(gè)分布盡量相近,因此我們最小化 KL 散度。同時(shí)由于上式第一項信息熵僅與最優(yōu)分布本身相關(guān),因此我們在最小化的過(guò)程中可以忽略掉,變成最小化

圖片

我們并不知道最優(yōu)分布  ,但訓練數據里面的目標值  可以看做是  的一個(gè)近似分布

圖片

這個(gè)是針對單個(gè)訓練樣本的損失函數,如果考慮整個(gè)數據集,則

圖片


可以看到通過(guò)最小化交叉熵的角度推導出來(lái)的結果和使用最大 化似然得到的結果是一致的。


合頁(yè)損失 Hinge Loss


合頁(yè)損失 Hinge Loss 是另外一種二分類(lèi)損失函數,適用于 maximum-margin 的分類(lèi),支持向量機 Support Vector Machine (SVM) 模型的損失函數本質(zhì)上就是 Hinge Loss + L2 正則化。合頁(yè)損失的公式如下

圖片

下圖是  為正類(lèi), 即  時(shí),不同輸出的合頁(yè)損失示意圖圖片可以看到當  為正類(lèi)時(shí),模型輸出負值會(huì )有較大的懲罰,當模型輸出為正值且在  區間時(shí)還會(huì )有一個(gè)較小的懲罰。即合頁(yè)損失不僅懲罰預測錯的,并且對于預測對了但是置信度不高的也會(huì )給一個(gè)懲罰,只有置信度高的才會(huì )有零損失。使用合頁(yè)損失直覺(jué)上理解是要找到一個(gè)決策邊界,使得所有數據點(diǎn)被這個(gè)邊界正確地、高置信地被分類(lèi)。

總結


本文針對機器學(xué)習中最常用的幾種損失函數進(jìn)行相關(guān)介紹,首先是適用于回歸的均方差損失 Mean Squared Loss、平均絕對誤差損失 Mean Absolute Error Loss,兩者的區別以及兩者相結合得到的 Huber Loss,接著(zhù)是應用于分位數回歸的分位數損失 Quantile Loss,表明了平均絕對誤差損失實(shí)際上是分位數損失的一種特例,在分類(lèi)場(chǎng)景下,本文討論了最常用的交叉熵損失函數 Cross Entropy Loss,包括二分類(lèi)和多分類(lèi)下的形式,并從信息論的角度解釋了交叉熵損失函數,最后簡(jiǎn)單介紹了應用于 SVM 中的 Hinge 損失 Hinge Loss。本文相關(guān)的可視化代碼在 這里。


受限于時(shí)間,本文還有其他許多損失函數沒(méi)有提及,比如應用于 Adaboost 模型中的指數損失 Exponential Loss,0-1 損失函數等。另外通常在損失函數中還會(huì )有正則項(L1/L2 正則),這些正則項作為損失函數的一部分,通過(guò)約束參數的絕對值大小以及增加參數稀疏性來(lái)降低模型的復雜度,防止模型過(guò)擬合,這部分內容在本文中也沒(méi)有詳細展開(kāi)。讀者有興趣可以查閱相關(guān)的資料進(jìn)一步了解。



*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>