不同的損失函數(shù)可用于不同的目標(biāo)。在這篇文章中,我將帶你通過(guò)一些示例介紹一些非常常用的損失函數(shù)。這篇文章提到的一些參數(shù)細(xì)節(jié)都屬于tensorflow或者keras的實(shí)現(xiàn)細(xì)節(jié)。
損失函數(shù)的簡(jiǎn)要介紹
損失函數(shù)有助于優(yōu)化神經(jīng)網(wǎng)絡(luò)的參數(shù)。我們的目標(biāo)是通過(guò)優(yōu)化神經(jīng)網(wǎng)絡(luò)的參數(shù)(權(quán)重)來(lái)最大程度地減少神經(jīng)網(wǎng)絡(luò)的損失。通過(guò)神經(jīng)網(wǎng)絡(luò)將目標(biāo)(實(shí)際)值與預(yù)測(cè)值進(jìn)行匹配,再經(jīng)過(guò)損失函數(shù)就可以計(jì)算出損失。然后,我們使用梯度下降法來(lái)優(yōu)化網(wǎng)絡(luò)權(quán)重,以使損失最小化。這就是我們訓(xùn)練神經(jīng)網(wǎng)絡(luò)的方式。
均方誤差
當(dāng)你執(zhí)行回歸任務(wù)時(shí),可以選擇該損失函數(shù)。顧名思義,這種損失是通過(guò)計(jì)算實(shí)際(目標(biāo))值和預(yù)測(cè)值之間的平方差的平均值來(lái)計(jì)算的。
例如,你有一個(gè)神經(jīng)網(wǎng)絡(luò),通過(guò)該網(wǎng)絡(luò)可以獲取一些與房屋有關(guān)的數(shù)據(jù)并預(yù)測(cè)其價(jià)格。在這種情況下,你可以使用MSE(均方誤差)損失。基本上,在輸出為實(shí)數(shù)的情況下,應(yīng)使用此損失函數(shù)。
二元交叉熵
當(dāng)你執(zhí)行二元分類任務(wù)時(shí),可以選擇該損失函數(shù)。如果你使用BCE(二元交叉熵)損失函數(shù),則只需一個(gè)輸出節(jié)點(diǎn)即可將數(shù)據(jù)分為兩類。輸出值應(yīng)通過(guò)sigmoid激活函數(shù),以便輸出在(0-1)范圍內(nèi)。
例如,你有一個(gè)神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)獲取與大氣有關(guān)的數(shù)據(jù)并預(yù)測(cè)是否會(huì)下雨。如果輸出大于0.5,則網(wǎng)絡(luò)將其分類為會(huì)下雨;如果輸出小于0.5,則網(wǎng)絡(luò)將其分類為不會(huì)下雨。即概率得分值越大,下雨的機(jī)會(huì)越大。
訓(xùn)練網(wǎng)絡(luò)時(shí),如果標(biāo)簽是下雨,則輸入網(wǎng)絡(luò)的目標(biāo)值應(yīng)為1,否則為0。
重要的一點(diǎn)是,如果你使用BCE損失函數(shù),則節(jié)點(diǎn)的輸出應(yīng)介于(0-1)之間。這意味著你必須在最終輸出中使用sigmoid激活函數(shù)。因?yàn)閟igmoid函數(shù)可以把任何實(shí)數(shù)值轉(zhuǎn)換(0–1)的范圍。(也就是輸出概率值)
如果你不想在最后一層上顯示使用sigmoid激活函數(shù),你可以在損失函數(shù)的參數(shù)上設(shè)置from logits為true,它會(huì)在內(nèi)部調(diào)用Sigmoid函數(shù)應(yīng)用到輸出值。
多分類交叉熵
當(dāng)你執(zhí)行多類分類任務(wù)時(shí),可以選擇該損失函數(shù)。如果使用CCE(多分類交叉熵)損失函數(shù),則輸出節(jié)點(diǎn)的數(shù)量必須與這些類相同。最后一層的輸出應(yīng)該通過(guò)softmax激活函數(shù),以便每個(gè)節(jié)點(diǎn)輸出介于(0-1)之間的概率值。
例如,你有一個(gè)神經(jīng)網(wǎng)絡(luò),它讀取圖像并將其分類為貓或狗。如果貓節(jié)點(diǎn)具有高概率得分,則將圖像分類為貓,否則分類為狗。基本上,如果某個(gè)類別節(jié)點(diǎn)具有最高的概率得分,圖像都將被分類為該類別。
為了在訓(xùn)練時(shí)提供目標(biāo)值,你必須對(duì)它們進(jìn)行一次one-hot編碼。如果圖像是貓,則目標(biāo)向量將為(1,0),如果圖像是狗,則目標(biāo)向量將為(0,1)。基本上,目標(biāo)向量的大小將與類的數(shù)目相同,并且對(duì)應(yīng)于實(shí)際類的索引位置將為1,所有其他的位置都為零。
如果你不想在最后一層上顯示使用softmax激活函數(shù),你可以在損失函數(shù)的參數(shù)上設(shè)置from logits為true,它會(huì)在內(nèi)部調(diào)用softmax函數(shù)應(yīng)用到輸出值。與上述情況相同。
稀疏多分類交叉熵
該損失函數(shù)幾乎與多分類交叉熵相同,只是有一點(diǎn)小更改。
使用SCCE(稀疏多分類交叉熵)損失函數(shù)時(shí),不需要one-hot形式的目標(biāo)向量。例如如果目標(biāo)圖像是貓,則只需傳遞0,否則傳遞1。基本上,無(wú)論哪個(gè)類,你都只需傳遞該類的索引。
這些是最重要的損失函數(shù)。訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),可能會(huì)使用這些損失函數(shù)之一。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4772瀏覽量
100838 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4333瀏覽量
62687
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論