訂閱
糾錯
加入自媒體

一文詳解損失函數(shù)技術(shù)

前言:

一直想寫損失函數(shù)的技術(shù)總結(jié),但網(wǎng)上已經(jīng)有諸多關(guān)于損失函數(shù)綜述的文章或博客,考慮到這點就一直拖著沒寫,直到有一天,我將一個二分類項目修改為多分類,簡簡單單地修改了損失函數(shù),結(jié)果一直有問題,后來才發(fā)現(xiàn)是不同函數(shù)的標(biāo)簽的設(shè)置方式并不相同。

為了避免讀者也出現(xiàn)這樣的問題,本文中會給出每個損失函數(shù)的pytorch使用示例,這也是本文與其它相關(guān)綜述文章或博客的區(qū)別所在。希望讀者在閱讀本文時,重點關(guān)注一下每個損失函數(shù)的使用示例中的target的設(shè)置問題。

本文對損失函數(shù)的類別和應(yīng)用場景,常見的損失函數(shù),常見損失函數(shù)的表達(dá)式,特性,應(yīng)用場景和使用示例作了詳細(xì)的總結(jié)。

主要涉及到L1 loss、L2 loss、Negative Log-Likelihood loss、Cross-Entropy loss、Hinge Embedding loss、Margin Ranking Loss、Triplet Margin loss、KL Divergence.

更多內(nèi)容歡迎關(guān)注公眾號CV技術(shù)指南,專注于計算機(jī)視覺的技術(shù)總結(jié),最新技術(shù)跟蹤。

損失函數(shù)分類與應(yīng)用場景

損失函數(shù)可以分為三類:回歸損失函數(shù)(Regression loss)、分類損失函數(shù)(Classification loss)和排序損失函數(shù)(Ranking loss)。

應(yīng)用場景:

回歸損失:用于預(yù)測連續(xù)的值。如預(yù)測房價、年齡等。

分類損失:用于預(yù)測離散的值。如圖像分類,語義分割等。

排序損失:用于預(yù)測輸入數(shù)據(jù)之間的相對距離。如行人重識別。

L1 loss

也稱Mean Absolute Error,簡稱MAE,計算實際值和預(yù)測值之間的絕對差之和的平均值。

表達(dá)式如下:

Loss( pred , y ) = | y - pred |

y表示標(biāo)簽,pred表示預(yù)測值。

應(yīng)用場合:回歸問題。

根據(jù)損失函數(shù)的表達(dá)式很容易了解它的特性:當(dāng)目標(biāo)變量的分布具有異常值時,即與平均值相差很大的值,它被認(rèn)為對異常值具有很好的魯棒行。

使用示例:

image.png

L2 loss

也稱為Mean Squared Error,簡稱MSE,計算實際值和預(yù)測值之間的平方差的平均值。

表達(dá)式如下:

損失函數(shù)技術(shù)總結(jié)

應(yīng)用場合:對大部分回歸問題,pytorch默認(rèn)使用L2,即MSE。

使用平方意味著當(dāng)預(yù)測值離目標(biāo)值更遠(yuǎn)時在平方后具有更大的懲罰,預(yù)測值離目標(biāo)值更近時在平方后懲罰更小,因此,當(dāng)異常值與樣本平均值相差格外大時,模型會因為懲罰更大而開始偏離,相比之下,L1對異常值的魯棒性更好。

使用示例:

image.png

Negative Log-Likelihood

簡稱NLL。表達(dá)式如下:

loss( pred, y) = - (log pred)

應(yīng)用場景:多分類問題。

注:NLL要求網(wǎng)絡(luò)最后一層使用softmax作為激活函數(shù)。通過softmax將輸出值映射為每個類別的概率值。

根據(jù)表達(dá)式,它的特性是懲罰預(yù)測準(zhǔn)確而預(yù)測概率不高的情況。

NLL 使用負(fù)號,因為概率(或似然)在 0 和 1 之間變化,并且此范圍內(nèi)的值的對數(shù)為負(fù)。最后,損失值變?yōu)檎怠?/p>

在 NLL 中,最小化損失函數(shù)有助于獲得更好的輸出。從近似最大似然估計 (MLE) 中檢索負(fù)對數(shù)似然。這意味著嘗試最大化模型的對數(shù)似然,從而最小化 NLL。

使用示例

image.png

Cross-Entropy

此損失函數(shù)計算提供的一組出現(xiàn)次數(shù)或隨機(jī)變量的兩個概率分布之間的差異。它用于計算預(yù)測值與實際值之間的平均差異的分?jǐn)?shù)。

表達(dá)式:

損失函數(shù)技術(shù)總結(jié)

應(yīng)用場景:二分類及多分類。

特性:負(fù)對數(shù)似然損失不對預(yù)測置信度懲罰,與之不同的是,交叉熵懲罰不正確但可信的預(yù)測,以及正確但不太可信的預(yù)測。

交叉熵函數(shù)有很多種變體,其中最常見的類型是Binary Cross-Entropy (BCE)。BCE Loss 主要用于二分類模型;也就是說,模型只有 2 個類。

使用示例

image.png

Hinge Embedding

表達(dá)式:

loss(pred, y) = max(0, 1 - y * pred )

其中y為1或-1。

應(yīng)用場景:

分類問題,特別是在確定兩個輸入是否不同或相似時。

學(xué)習(xí)非線性嵌入或半監(jiān)督學(xué)習(xí)任務(wù)。

使用示例

image.png

Margin Ranking Loss

Margin Ranking Loss 計算一個標(biāo)準(zhǔn)來預(yù)測輸入之間的相對距離。這與其他損失函數(shù)(如 MSE 或交叉熵)不同,后者學(xué)習(xí)直接從給定的輸入集進(jìn)行預(yù)測。

表達(dá)式:

loss(pred, y) = max(0, -y*(pred1 - pred2) + margin)

標(biāo)簽張量 y(包含 1 或 -1)。

當(dāng) y == 1 時,第一個輸入將被假定為更大的值。它將排名高于第二個輸入。如果 y == -1,則第二個輸入將排名更高。

應(yīng)用場景:排名問題

使用示例

image.png

Triplet Margin Loss

計算三元組的損失。

表達(dá)式:

Loss (a, p, n) = max{0, d(ai, pi) - d(ai, ni) + margin}

三元組由a (anchor),p (正樣本) 和 n (負(fù)樣本)組成.

應(yīng)用場景:

確定樣本之間的相對相似性

用于基于內(nèi)容的檢索問題

使用示例

image.png

KL Divergence Loss

計算兩個概率分布之間的差異。

表達(dá)式:

loss (pred, y) = y*( log y - pred )

輸出表示兩個概率分布的接近程度。如果預(yù)測的概率分布與真實的概率分布相差很遠(yuǎn),就會導(dǎo)致很大的損失。如果 KL Divergence 的值為零,則表示概率分布相同。

KL Divergence 與交叉熵?fù)p失的關(guān)鍵區(qū)別在于它們?nèi)绾翁幚眍A(yù)測概率和實際概率。交叉熵根據(jù)預(yù)測的置信度懲罰模型,而 KL Divergence 則沒有。KL Divergence 僅評估概率分布預(yù)測與ground truth分布的不同之處。

應(yīng)用場景:

逼近復(fù)雜函數(shù)

多類分類任務(wù)

確保預(yù)測的分布與訓(xùn)練數(shù)據(jù)的分布相似

使用示例

image.png

更多內(nèi)容歡迎關(guān)注公眾號CV技術(shù)指南,專注于計算機(jī)視覺的技術(shù)總結(jié),最新技術(shù)跟蹤。

聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

人工智能 獵頭職位 更多
掃碼關(guān)注公眾號
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯
x
*文字標(biāo)題:
*糾錯內(nèi)容:
聯(lián)系郵箱:
*驗 證 碼:

粵公網(wǎng)安備 44030502002758號