深度學(xué)習(xí)中的損失函數(shù)/代價(jià)函數(shù)

  • 損失函數(shù)(loss function)是用來估量你模型的預(yù)測值 f(x) 與真實(shí)值 Y 的不一致程度,它是一個(gè)非負(fù)實(shí)值函數(shù),通常使用 L(Y, f(x)) 來表示,損失函數(shù)越小,模型的魯棒性就越好。

  • 之前手寫數(shù)字識(shí)別代碼中我們直接使用的是 CrossEntropyLoss() 代價(jià)函數(shù)。我們應(yīng)該需要了解更多的代價(jià)函數(shù),幫助我們?cè)谝院蟮捻?xiàng)目中代價(jià)函數(shù)的確定。當(dāng)然這些函數(shù)在 Pytorch 官方文檔中也能找到:https://pytorch.org/docs/stable/nn.html#loss-functions

L1Loss :

計(jì)算 output 和 target 之差的絕對(duì)值,可以通過參數(shù)調(diào)整 mean 或 sum.


image.png

MSELoss :

計(jì)算 output 和 target 之差的平方, 可以通過參數(shù)調(diào)整 mean 或 sum.


image.png

CrossEntropyLoss :

  • 將輸入經(jīng)過 softmax 激活函數(shù)之后,再計(jì)算其與 target 的交叉熵?fù)p失。即該方法將 nn.LogSoftmax() 和 nn.NLLLoss() 進(jìn)行了結(jié)合。嚴(yán)格意義上的交叉熵?fù)p失函數(shù)應(yīng)該是 nn.NLLLoss()。
  • 交叉熵?fù)p失 (cross-entropy Loss) 又稱為對(duì)數(shù)似然損失 (Log-likelihood Loss)、對(duì)數(shù)損失;二分類時(shí)還可稱之為邏輯斯諦回歸損失 (Logistic Loss)。交叉熵?fù)p失函數(shù)表達(dá)式為 L = - sigama(y_i * log(x_i))。pytroch 這里不是嚴(yán)格意義上的交叉熵?fù)p失函數(shù),而是先將 input 經(jīng)過 softmax 激活函數(shù),將向量“歸一化”成概率形式,然后再與 target 計(jì)算嚴(yán)格意義上交叉熵?fù)p失。 在多分類任務(wù)中,經(jīng)常采用 softmax 激活函數(shù)+交叉熵?fù)p失函數(shù),因?yàn)榻徊骒孛枋隽藘蓚€(gè)概率分布的差異,然而神經(jīng)網(wǎng)絡(luò)輸出的是向量,并不是概率分布的形式。所以需要 softmax 激活函數(shù)將一個(gè)向量進(jìn)行“歸一化”成概率分布的形式,再采用交叉熵?fù)p失函數(shù)計(jì)算 loss。


    image.png

CTCLoss :

  • CTC 的全稱是 Connectionist Temporal Classification,中文名稱是“連接時(shí)序分類”,這個(gè)方法主要是解決神經(jīng)網(wǎng)絡(luò) label 和 output 不對(duì)齊的問題(Alignment problem),其優(yōu)點(diǎn)是不用強(qiáng)制對(duì)齊標(biāo)簽且標(biāo)簽可變長,僅需輸入序列和監(jiān)督標(biāo)簽序列即可進(jìn)行訓(xùn)練,目前,該方法主要應(yīng)用于場景文本識(shí)別(scene text recognition)、語音識(shí)別(speech recognition)及手寫字識(shí)別(handwriting recognition)等工程場景。

NLLLoss :

  • 常用于多分類任務(wù),但是 input 在輸入 NLLLoss() 之前,需要對(duì) input 進(jìn)行 log_softmax 函數(shù)激活,即將 input 轉(zhuǎn)換成概率分布的形式,并且取對(duì)數(shù)。其實(shí)這些步驟在 CrossEntropyLoss 中就有,如果不想讓網(wǎng)絡(luò)的最后一層是log_softmax層的話,就可以采用 CrossEntropyLoss 完全代替此函數(shù)。


    image.png

PoissonNLLLoss :

  • 用于 target 服從泊松分布的分類任務(wù).

KLDivLoss :

  • 計(jì)算 input 和 target 之間的 KL 散度( Kullback–Leibler divergence)
  • KL散度 KL散度( Kullback–Leibler divergence) 又稱為相對(duì)熵 (Relative Entropy),用于描述兩個(gè)概率分布之間的差異。計(jì)算公式(離散時(shí)):其中 p 表示真實(shí)分布,q 表示 p 的擬合分布, D(P||Q) 表示當(dāng)用概率分布q來擬合真實(shí)分布 p 時(shí),產(chǎn)生的信息損耗。這里的信息損耗,可以理解為損失,損失越低,擬合分布q越接近真實(shí)分布 p。同時(shí)也可以從另外一個(gè)角度上觀察這個(gè)公式,即計(jì)算的是 p 與 q 之間的對(duì)數(shù)差在 p 上的期望值。 特別注意,D(p||q) ≠ D(q||p), 其不具有對(duì)稱性,因此不能稱為K-L距離。
  • 信息熵 = 交叉熵 - 相對(duì)熵 從信息論角度觀察三者,其關(guān)系為信息熵 = 交叉熵 - 相對(duì)熵。在機(jī)器學(xué)習(xí)中,當(dāng)訓(xùn)練數(shù)據(jù)固定,最小化相對(duì)熵 D(p||q) 等價(jià)于最小化交叉熵 H(p,q).


    image.png

BCELoss :

  • 二分類任務(wù)時(shí)的交叉熵計(jì)算函數(shù)。此函數(shù)可以認(rèn)為是 nn.CrossEntropyLoss 函數(shù)的特例。其分類限定為二分類,y必須是{0,1}。還需要注意的是,input 應(yīng)該為概率分布的形式,這樣才符合交叉熵的應(yīng)用。所以在 BCELoss 之前,input 一般為 sigmoid 激活層的輸出,官方例子也是這樣給的。該損失函數(shù)在自編碼器中常用.


    image.png

BCEWithLogitsLoss :

  • 將 Sigmoid 與 BCELoss 結(jié)合,類似于 CrossEntropyLos s(將 nn.LogSoftmax()和 nn.NLLLoss() 進(jìn)行結(jié)合)。即 input 會(huì)經(jīng)過 Sigmoid 激活函數(shù),將 input 變成概率分布的形式。


    image.png

MarginRankingLoss :

  • 計(jì)算兩個(gè)向量之間的相似度,當(dāng)兩個(gè)向量之間的距離大于 margin,則 loss 為正,小于 margin,loss 為 0。

HingeEmbeddingLoss :

  • 主要用于衡量兩個(gè)輸入是否相似, 通常用于非線性嵌入和半監(jiān)督學(xué)習(xí).

MultiLabelMarginLoss :

  • 用于一個(gè)樣本屬于多個(gè)類別時(shí)的分類任務(wù).

SmoothL1Loss :

  • 計(jì)算平滑L1損失,屬于 Huber Loss中的一種(因?yàn)閰?shù)δ固定為1了)。Huber Loss 常用于回歸問題,其最大的特點(diǎn)是對(duì)離群點(diǎn)(outliers)、噪聲不敏感,具有較強(qiáng)的魯棒性。


    image.png

SoftMarginLoss :

  • 待補(bǔ)充

MultiLabelSoftMarginLoss:

  • 待補(bǔ)充

CosineEmbeddingLoss :

  • 用 cosin 函數(shù)來衡量兩個(gè)輸入是否相似, 通常用于非線性嵌入和半監(jiān)督學(xué)習(xí).

MultiMarginLoss :

  • 計(jì)算多分類的折頁損失.

TripletMarginLoss :

  • 計(jì)算三元組損失,人臉驗(yàn)證中常用。目標(biāo)是讓 Positive 元和 Anchor 元之間的距離盡可能的小,Positive 元和 Negative 元之間的距離盡可能的大。


    image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容