理解神經網路的不同損失函式

dicksonjyl560101發表於2019-06-21



針對不同的目標使用不同的損失函式。在本文中,我將透過一組示例向您介紹一些常用的損失函式。本文是使用Keras和Tensorflow框架的設計。

損失函式:簡介

損失函式有助於最佳化神經網路的引數。我們的目標是透過最佳化神經網路的引數(權重)使其損失最小化。損失由損失函式計算。每個神經網路都給出了一些輸出,我們透過將此輸出與實際輸出(目標值)相匹配來計算損失。然後使用梯度下降法來最佳化網路的權重,使這種損失最小化。這就是我們訓練神經網路的方法。

均方誤差(Mean Squared Error)

顧名思義,這種損失是透過計算實際(目標)值和預測值之間的平方差的平均值來計算的。

例如,有一個神經網路,它使用一些與房子相關的引數並預測它的價格。在這種情況下,您可以使用MSE損失。基本上,在輸出是實數的情況下,應該使用這個損失函式。

理解神經網路的不同損失函式

均方誤差

二元交叉熵(Binary Cross entropy)

當有一個二元分類任務時,如果使用BCEloss函式,則只需要一個輸出節點將資料分類為兩個類。輸出值透過 sigmoid 啟用函式,以便輸出在(0-1)之間的範圍內。

例如,有一個神經網路,它採用與大氣相關的引數,並輸出預測是否下雨。如果輸出大於0.5,則網路將其分類為rain,如果輸出小於0.5,則網路將其分類為not rain。(它可能是相反的,這取決於你如何訓練網路)。機率得分值越多,下雨的機率就越大。

理解神經網路的不同損失函式

二元交叉熵

在訓練網路時,如果下雨,則輸入網路的目標值應為1,否則為0。

重要的是,如果使用BCE損失函式,節點的輸出應在(0-1)之間。這意味著你必須在最終輸出上使用sigmoid啟用函式。因為sigmoid轉換範圍在(0-1)之間的任何實際值。

如果你不在最後一層使用sigmoid啟用怎麼辦?然後,可以將一個名為from logitsas 的引數true傳遞給loss函式,它將在內部將sigmoid應用於輸出值。

分類交叉熵(Categorical Cross entropy)

當有一個多類分類任務時,如果使用CCEloss函式,則輸出節點的數量必須與類的數量相同。最後一層輸出應透過softmax啟用,以便每個節點輸出範圍在(0-1)之間的機率值。

例如,有一個神經網路,它識別影像並將其分類為貓或狗。如果貓節點具有高機率得分,則影像被分類為貓,否則為狗。基本上,無論哪個類節點的機率得分最高,影像將被分類到該類。

理解神經網路的不同損失函式

分類交叉熵

為了在訓練時提供目標值,您必須對它們進行獨熱編碼。如果影像是貓,則目標向量將是(1,0),如果影像是狗,則目標向量將是(0,1)。基本上,目標向量將相同大小的類的數量和索引位置對應於實際的類是1而所有其他的將為零。

如果在最後一層沒有使用 softmax 啟用怎麼辦?可以將一個名為from logitsas 的引數true傳遞給loss函式,它將在內部將 softmax 應用於輸出值。與上述情況相同。

稀疏分類交叉熵(Sparse Categorical Cross entropy)

除了一個變化外,這個損失函式幾乎與CCE相似。

當使用SCCE損失函式時,不需要對目標向量進行獨熱編碼。如果目標影像是貓,則只需傳遞0,否則為1。基本上,無論哪個類,只需傳遞該類的索引。

理解神經網路的不同損失函式

稀疏分類交叉熵

這些是最基本的損失函式。並且在訓練神經網路時,您可能會使用其中一種損失函式。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2648298/,如需轉載,請註明出處,否則將追究法律責任。

相關文章