神經網路中的各種損失函式介紹

2022-06-14 17:48:13 字數 1865 閱讀 5038

不同的損失函式可用於不同的目標。在這篇文章中,我將帶你通過一些示例介紹一些非常常用的損失函式。這篇文章提到的一些引數細節都屬於tensorflow或者keras的實現細節。

損失函式有助於優化神經網路的引數。我們的目標是通過優化神經網路的引數(權重)來最大程度地減少神經網路的損失。通過神經網路將目標(實際)值與**值進行匹配,再經過損失函式就可以計算出損失。然後,我們使用梯度下降法來優化網路權重,以使損失最小化。這就是我們訓練神經網路的方式。

當你執行回歸任務時,可以選擇該損失函式。顧名思義,這種損失是通過計算實際(目標)值和**值之間的平方差的平均值來計算的。

例如,你有乙個神經網路,通過該網路可以獲取一些與房屋有關的資料並**其**。在這種情況下,你可以使用mse(均方誤差)損失。基本上,在輸出為實數的情況下,應使用此損失函式。

當你執行二元分類任務時,可以選擇該損失函式。如果你使用bce(二元交叉熵)損失函式,則只需乙個輸出節點即可將資料分為兩類。輸出值應通過sigmoid啟用函式,以便輸出在(0-1)範圍內。

例如,你有乙個神經網路,該網路獲取與大氣有關的資料並**是否會下雨。如果輸出大於0.5,則網路將其分類為會下雨;如果輸出小於0.5,則網路將其分類為不會下雨。即概率得分值越大,下雨的機會越大。

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

重要的一點是,如果你使用bce損失函式,則節點的輸出應介於(0-1)之間。這意味著你必須在最終輸出中使用sigmoid啟用函式。因為sigmoid函式可以把任何實數值轉換(0–1)的範圍。(也就是輸出概率值)

如果你不想在最後一層上顯示使用sigmoid啟用函式,你可以在損失函式的引數上設定from logits為true,它會在內部呼叫sigmoid函式應用到輸出值。

當你執行多類分類任務時,可以選擇該損失函式。如果使用cce(多分類交叉熵)損失函式,則輸出節點的數量必須與這些類相同。最後一層的輸出應該通過softmax啟用函式,以便每個節點輸出介於(0-1)之間的概率值。

例如,你有乙個神經網路,它讀取影象並將其分類為貓或狗。如果貓節點具有高概率得分,則將影象分類為貓,否則分類為狗。基本上,如果某個類別節點具有最高的概率得分,影象都將被分類為該類別。

為了在訓練時提供目標值,你必須對它們進行一次one-hot編碼。如果影象是貓,則目標向量將為(1,0),如果影象是狗,則目標向量將為(0,1)。基本上,目標向量的大小將與類的數目相同,並且對應於實際類的索引位置將為1,所有其他的位置都為零。

如果你不想在最後一層上顯示使用softmax啟用函式,你可以在損失函式的引數上設定from logits為true,它會在內部呼叫softmax函式應用到輸出值。與上述情況相同。

該損失函式幾乎與多分類交叉熵相同,只是有一點小更改。

使用scce(稀疏多分類交叉熵)損失函式時,不需要one-hot形式的目標向量。例如如果目標影象是貓,則只需傳遞0,否則傳遞1。基本上,無論哪個類,你都只需傳遞該類的索引。

這些是最重要的損失函式。訓練神經網路時,可能會使用這些損失函式之一。

以下鏈結是keras中所有可用損失函式的源**。

(歡迎關注磐創部落格資源彙總站:

神經網路損失函式

2018,aug 3 顧名思義,從標題就能知道損失函式 loss function 一定就是來計算神經網路在訓練中的損失的。說完了定義那到了舉例時間了 主要拿softmax loss來分析 這裡的k也就是我們分類的類別。然後這個函式是怎麼用的呢,我們可以簡單的舉乙個分類的例子來看下。假設我們輸入一張...

神經網路 損失函式

開始之前我們先進入數字識別這樣乙個場景 以識別數字1為例,神經網路模型的輸出結果越接近 0,1,0,0,0,0,0,0,0,0 越好。神經網路解決多分類的問題,最常見的方法是設定n個輸出節點,其中n類別個數,那麼上述數字判斷就應該有n 10個輸出。那麼如何判斷乙個輸出向量和期望向量的接近程度呢?交叉...

神經網路 損失函式

先上結論 在使用sigmoid作為啟用函式的時候,cross entropy相比於quadratic cost function,具有收斂速度快,更容易獲得全域性最優的特點 使用softmax作為啟用函式,log likelihood作為損失函式,不存在收斂慢的缺點。對於損失函式的收斂特性,我們期望...