自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

訓練深度學習神經(jīng)網(wǎng)絡的常用五個損失函數(shù)

人工智能 深度學習
神經(jīng)網(wǎng)絡在訓練時的優(yōu)化首先是對模型的當前狀態(tài)進行誤差估計,然后為了減少下一次評估的誤差,需要使用一個能夠表示錯誤函數(shù)對權重進行更新,這個函數(shù)被稱為損失函數(shù)。

神經(jīng)網(wǎng)絡在訓練時的優(yōu)化首先是對模型的當前狀態(tài)進行誤差估計,然后為了減少下一次評估的誤差,需要使用一個能夠表示錯誤函數(shù)對權重進行更新,這個函數(shù)被稱為損失函數(shù)。

損失函數(shù)的選擇與神經(jīng)網(wǎng)絡模型從示例中學習的特定預測建模問題(例如分類或回歸)有關。在本文中我們將介紹常用的一些損失函數(shù),包括:

  • 回歸模型的均方誤差損失
  • 二元分類模型的交叉熵和hinge 損失

回歸模型的損失函數(shù)

回歸預測模型主要是用來預測連續(xù)的數(shù)值。所以我們將使用 scikit-learn的 make_regression() 函數(shù)來生成一些模擬數(shù)據(jù),并使用這些數(shù)據(jù)構建回歸模型。

我們將生成 20 個輸入特征:其中 10 個特征將是有意義的,但 10 個與問題無關。

并且隨機生成 1,000 個示例。并且指定隨機種子,所以無論何時運行代碼都會生成相同的 1,000 個示例。

將實值輸入和輸出變量縮放到一個合理的范圍通??梢蕴岣呱窠?jīng)網(wǎng)絡的性能。所以我們要對對數(shù)據(jù)進行標準化處理。

StandardScaler也可以在scikit-learn庫中找到,為了簡化問題我們將在將所有數(shù)據(jù)分割為訓練集和測試集之前對其進行縮放。

然后平均分割訓練和驗證集

圖片

為了介紹不同的損失函數(shù),我們將開發(fā)一個小型多層感知器(MLP)模型。

根據(jù)問題定義,有20個特征作為輸入,經(jīng)過我們的模型。需要要預測的一個實值,所以輸出層將有一個節(jié)點。

圖片

我們使用SGD進行優(yōu)化,并且學習率為0.01,動量為0.9,兩者都是合理的默認值。訓練將進行100個輪,測試集將在每個階段結束時進行評估,并且繪制學習曲線。

圖片

模型完成后就可以進行損失函數(shù)的介紹:

MSE

回歸問題最常使用的是均方誤差損失(MSE)。當目標變量的分布為高斯分布時,它是最大似然推理下的首選損失函數(shù)。所以只有當你有一個更好的理由時,才應該改變?yōu)槠渌麚p失函數(shù)。

如果在 Keras 中編譯模型時將“mse”或“mean_squared_error”指定為損失函數(shù),則使用均方誤差損失函數(shù)。

下面的代碼是上述回歸問題的完整示例。

在運行示例的第一步中,打印了模型的訓練和測試數(shù)據(jù)集的均方誤差,因為保留了3位小數(shù),所以顯示為0.000

圖片

從下圖中可以看出,模型收斂速度相當快,訓練和測試性能保持不變。根據(jù)模型的性能和收斂特性,均方誤差是回歸問題的一個很好的選擇。

圖片

MSLE

在具有廣泛值的回歸問題中,可能不希望在預測大值時像均方誤差那樣對模型進行懲罰。所以可以通過首先計算每個預測值的自然對數(shù)來計算均方誤差。這種損失稱為 MSLE,或均方對數(shù)誤差。

當預測值出現(xiàn)較大差異時,它具有放松懲罰效果的效果。當模型直接預測未縮放的數(shù)量時,它可能是更合適的損失度量。

keras中使用“mean_squared_logarithmic_error”作為損失函數(shù)

在下面的示例是使用MSLE損失函數(shù)的完整代碼。

該模型在訓練和測試數(shù)據(jù)集上的MSE都略差。這是由于目標變量的分布是一個標準的高斯分布,說明我們的這個損失函數(shù)可能不是很適合這個問題。

下圖顯示各訓練輪次的對比MSE收斂得很好,但MSE可能過擬合了,因為它從20輪開始下降變得變換并且開始上升。

圖片

MAE

根據(jù)回歸問題,目標變量的分布可能主要是高斯分布,但可能包含異常值,例如 遠離平均值的大值或小值。

在這種情況下,平均絕對誤差或 MAE 損失是一個合適的損失函數(shù),因為它對異常值更穩(wěn)健??紤]到實際值與預測值的絕對差值,計算為平均值。

使用“mean_absolute_error”損失函數(shù)

圖片

這是使用MAE的完整代碼

圖片

結果如下

圖片

下圖可以看到,MAE確實收斂了但它有一個顛簸的過程。MAE在這種情況下也不是很適合,因為目標變量是一個沒有大離群值的高斯函數(shù)。

圖片

二元分類的損失函數(shù)

二元分類問題是預測建模問題中兩個標簽中的一個。這個問題被定義為預測第一個或第二個類的值為0或1,一般情況下通常被實現(xiàn)為預測屬于類值1的的概率。

我們也是使用sklearn生成數(shù)據(jù)這里使用圓問題,它有一個二維平面,有兩個同心圓,其中外圓上的點屬于類0,內(nèi)圓上的點屬于類1。為了使學習更具挑戰(zhàn)性,我們還在樣本中加入了統(tǒng)計噪聲。樣本量為1000,并加入10%的統(tǒng)計噪聲。

圖片

數(shù)據(jù)集的散點圖可以幫助我們理解正在建模的問題。下面列出的是一個完整的示例。

圖片

散點圖如下,其中輸入變量確定點的位置,顏色為類值。0是藍色的,1是橙色的。

圖片

這里還是一半用于訓練,一半用于測試,

圖片

我們還是定義一個簡單的MLP模型,

圖片

使用SGD優(yōu)化,學習率為0.01,動量為0.99。

模型訓練200輪進行擬合,并根據(jù)損失和準確性評估模型的性能。

圖片

BCE

BCE是用于解決的二元分類問題默認損失函數(shù)。在最大似然推理框架下,它是首選損失函數(shù)。對于第1類的預測,交叉熵計算一個分數(shù),該分數(shù)總結了實際和預測概率分布之間的平均差異。

在編譯Keras模型時,可以指定binary_crossentropy作為損失函數(shù)。

圖片

為了預測類1的概率,輸出層必須包含一個節(jié)點和一個' sigmoid '激活。

圖片

下面是完整的代碼:

圖片

該模型對問題的學習相對較好,在測試數(shù)據(jù)集上的準確率為83%,準確率為85%。分數(shù)之間存在一定程度的重疊,表明模型既不是過擬合也不是欠擬合。

下圖中所示,訓練效果很好。由于概率分布之間的誤差是連續(xù)的,損失圖是平滑的,而精度線圖顯示出凹凸不平,因為訓練和測試集中的例子只能被預測為正確或不正確,提供的顆粒信息較少。

圖片

Hinge

支持向量機 (SVM) 模型使用Hinge 損失函數(shù)作為交叉熵的替代來解決二元分類問題。

目標值在是集合 [-1, 1] ,旨在與二進制分類一起使用。如果實際類別值和預測類別值的符號不同,則Hinge會得到更大的誤差。在二元分類問題上它有時比交叉熵更好。

作為第一步,我們必須將目標變量的值修改為集合 {-1, 1}。

圖片

keras中它被稱為' hinge '。

圖片

在網(wǎng)絡的輸出層中,必須使用tanh激活函數(shù)的單個節(jié)點以輸出介于 -1 和 1 之間的單個值。

圖片

下面是完整代碼:

圖片

比交叉熵略差的性能,在訓練和測試集上的準確性不到80%。

圖片

下圖可以看出,模型已經(jīng)收斂,分類精度圖表明也已經(jīng)收斂。

圖片

可以看到這個問題還是BCE比較好,這里可能的原因就是因為我們有一些噪聲點導致的

責任編輯:華軒 來源: DeepHub IMBA
相關推薦

2023-06-18 23:00:39

神經(jīng)網(wǎng)絡損失函數(shù)隨機變量

2017-12-22 08:47:41

神經(jīng)網(wǎng)絡AND運算

2019-10-08 15:39:54

人工智能損失函數(shù)網(wǎng)絡

2023-04-19 10:17:35

機器學習深度學習

2021-03-29 09:02:24

深度學習預測間隔

2016-12-27 14:24:57

課程筆記神經(jīng)網(wǎng)絡

2018-04-08 11:20:43

深度學習

2020-11-02 08:00:00

深度學習神經(jīng)網(wǎng)絡人工智能

2018-11-07 05:38:07

深度學習神經(jīng)網(wǎng)絡算法

2020-08-06 10:11:13

神經(jīng)網(wǎng)絡機器學習算法

2023-02-28 08:00:00

深度學習神經(jīng)網(wǎng)絡人工智能

2021-05-22 23:08:08

深度學習函數(shù)算法

2017-03-07 13:55:30

自動駕駛神經(jīng)網(wǎng)絡深度學習

2017-05-23 18:54:18

深度學習人工智能

2021-07-07 10:57:08

神經(jīng)網(wǎng)絡AI算法

2023-09-03 14:17:56

深度學習人工智能

2024-08-22 08:21:10

算法神經(jīng)網(wǎng)絡參數(shù)

2022-12-19 08:40:42

2016-12-27 15:16:49

損失函數(shù)課程

2019-08-19 00:31:16

Pytorch神經(jīng)網(wǎng)絡深度學習
點贊
收藏

51CTO技術棧公眾號