作者:Onepagecode
來源:DeepHub IMBA
神經(jīng)網(wǎng)絡(luò)在訓(xùn)練時(shí)的優(yōu)化首先是對(duì)模型的當(dāng)前狀態(tài)進(jìn)行誤差估計(jì),然后為了減少下一次評(píng)估的誤差,需要使用一個(gè)能夠表示錯(cuò)誤函數(shù)對(duì)權(quán)重進(jìn)行更新,這個(gè)函數(shù)被稱為損失函數(shù)。
損失函數(shù)的選擇與神經(jīng)網(wǎng)絡(luò)模型從示例中學(xué)習(xí)的特定預(yù)測(cè)建模問題(例如分類或回歸)有關(guān)。在本文中我們將介紹常用的一些損失函數(shù),包括:
回歸模型的均方誤差損失
二元分類模型的交叉熵和hinge 損失
回歸模型的損失函數(shù)
回歸預(yù)測(cè)模型主要是用來預(yù)測(cè)連續(xù)的數(shù)值。所以我們將使用 scikit-learn的 make_regression() 函數(shù)來生成一些模擬數(shù)據(jù),并使用這些數(shù)據(jù)構(gòu)建回歸模型。我們將生成 20 個(gè)輸入特征:其中 10 個(gè)特征將是有意義的,但 10 個(gè)與問題無(wú)關(guān)。并且隨機(jī)生成 1,000 個(gè)示例。并且指定隨機(jī)種子,所以無(wú)論何時(shí)運(yùn)行代碼都會(huì)生成相同的 1,000 個(gè)示例。將實(shí)值輸入和輸出變量縮放到一個(gè)合理的范圍通常可以提高神經(jīng)網(wǎng)絡(luò)的性能。所以我們要對(duì)對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理。StandardScaler也可以在scikit-learn庫(kù)中找到,為了簡(jiǎn)化問題我們將在將所有數(shù)據(jù)分割為訓(xùn)練集和測(cè)試集之前對(duì)其進(jìn)行縮放。然后平均分割訓(xùn)練和驗(yàn)證集為了介紹不同的損失函數(shù),我們將開發(fā)一個(gè)小型多層感知器(MLP)模型。根據(jù)問題定義,有20個(gè)特征作為輸入,經(jīng)過我們的模型。需要要預(yù)測(cè)的一個(gè)實(shí)值,所以輸出層將有一個(gè)節(jié)點(diǎn)。我們使用SGD進(jìn)行優(yōu)化,并且學(xué)習(xí)率為0.01,動(dòng)量為0.9,兩者都是合理的默認(rèn)值。訓(xùn)練將進(jìn)行100個(gè)輪,測(cè)試集將在每個(gè)階段結(jié)束時(shí)進(jìn)行評(píng)估,并且繪制學(xué)習(xí)曲線。模型完成后就可以進(jìn)行損失函數(shù)的介紹:MSE回歸問題最常使用的是均方誤差損失(MSE)。當(dāng)目標(biāo)變量的分布為高斯分布時(shí),它是最大似然推理下的首選損失函數(shù)。所以只有當(dāng)你有一個(gè)更好的理由時(shí),才應(yīng)該改變?yōu)槠渌麚p失函數(shù)。如果在 Keras 中編譯模型時(shí)將“mse”或“mean_squared_error”指定為損失函數(shù),則使用均方誤差損失函數(shù)。下面的代碼是上述回歸問題的完整示例。在運(yùn)行示例的第一步中,打印了模型的訓(xùn)練和測(cè)試數(shù)據(jù)集的均方誤差,因?yàn)楸A袅?位小數(shù),所以顯示為0.000從下圖中可以看出,模型收斂速度相當(dāng)快,訓(xùn)練和測(cè)試性能保持不變。根據(jù)模型的性能和收斂特性,均方誤差是回歸問題的一個(gè)很好的選擇。MSLE在具有廣泛值的回歸問題中,可能不希望在預(yù)測(cè)大值時(shí)像均方誤差那樣對(duì)模型進(jìn)行懲罰。所以可以通過首先計(jì)算每個(gè)預(yù)測(cè)值的自然對(duì)數(shù)來計(jì)算均方誤差。這種損失稱為 MSLE,或均方對(duì)數(shù)誤差。當(dāng)預(yù)測(cè)值出現(xiàn)較大差異時(shí),它具有放松懲罰效果的效果。當(dāng)模型直接預(yù)測(cè)未縮放的數(shù)量時(shí),它可能是更合適的損失度量。keras中使用“mean_squared_logarithmic_error”作為損失函數(shù)在下面的示例是使用MSLE損失函數(shù)的完整代碼。該模型在訓(xùn)練和測(cè)試數(shù)據(jù)集上的MSE都略差。這是由于目標(biāo)變量的分布是一個(gè)標(biāo)準(zhǔn)的高斯分布,說明我們的這個(gè)損失函數(shù)可能不是很適合這個(gè)問題。下圖顯示各訓(xùn)練輪次的對(duì)比MSE收斂得很好,但MSE可能過擬合了,因?yàn)樗鼜?0輪開始下降變得變換并且開始上升。MAE根據(jù)回歸問題,目標(biāo)變量的分布可能主要是高斯分布,但可能包含異常值,例如 遠(yuǎn)離平均值的大值或小值。在這種情況下,平均絕對(duì)誤差或 MAE 損失是一個(gè)合適的損失函數(shù),因?yàn)樗鼘?duì)異常值更穩(wěn)健。考慮到實(shí)際值與預(yù)測(cè)值的絕對(duì)差值,計(jì)算為平均值。使用“mean_absolute_error”損失函數(shù)這是使用MAE的完整代碼結(jié)果如下下圖可以看到,MAE確實(shí)收斂了但它有一個(gè)顛簸的過程。MAE在這種情況下也不是很適合,因?yàn)槟繕?biāo)變量是一個(gè)沒有大離群值的高斯函數(shù)。
二元分類的損失函數(shù)
二元分類問題是預(yù)測(cè)建模問題中兩個(gè)標(biāo)簽中的一個(gè)。這個(gè)問題被定義為預(yù)測(cè)第一個(gè)或第二個(gè)類的值為0或1,一般情況下通常被實(shí)現(xiàn)為預(yù)測(cè)屬于類值1的的概率。我們也是使用sklearn生成數(shù)據(jù)這里使用圓問題,它有一個(gè)二維平面,有兩個(gè)同心圓,其中外圓上的點(diǎn)屬于類0,內(nèi)圓上的點(diǎn)屬于類1。為了使學(xué)習(xí)更具挑戰(zhàn)性,我們還在樣本中加入了統(tǒng)計(jì)噪聲。樣本量為1000,并加入10%的統(tǒng)計(jì)噪聲。數(shù)據(jù)集的散點(diǎn)圖可以幫助我們理解正在建模的問題。下面列出的是一個(gè)完整的示例。散點(diǎn)圖如下,其中輸入變量確定點(diǎn)的位置,顏色為類值。0是藍(lán)色的,1是橙色的。這里還是一半用于訓(xùn)練,一半用于測(cè)試,我們還是定義一個(gè)簡(jiǎn)單的MLP模型,使用SGD優(yōu)化,學(xué)習(xí)率為0.01,動(dòng)量為0.99。模型訓(xùn)練200輪進(jìn)行擬合,并根據(jù)損失和準(zhǔn)確性評(píng)估模型的性能。BCEBCE是用于解決的二元分類問題默認(rèn)損失函數(shù)。在最大似然推理框架下,它是首選損失函數(shù)。對(duì)于第1類的預(yù)測(cè),交叉熵計(jì)算一個(gè)分?jǐn)?shù),該分?jǐn)?shù)總結(jié)了實(shí)際和預(yù)測(cè)概率分布之間的平均差異。在編譯Keras模型時(shí),可以指定binary_crossentropy作為損失函數(shù)。為了預(yù)測(cè)類1的概率,輸出層必須包含一個(gè)節(jié)點(diǎn)和一個(gè)' sigmoid '激活。下面是完整的代碼:該模型對(duì)問題的學(xué)習(xí)相對(duì)較好,在測(cè)試數(shù)據(jù)集上的準(zhǔn)確率為83%,準(zhǔn)確率為85%。分?jǐn)?shù)之間存在一定程度的重疊,表明模型既不是過擬合也不是欠擬合。下圖中所示,訓(xùn)練效果很好。由于概率分布之間的誤差是連續(xù)的,損失圖是平滑的,而精度線圖顯示出凹凸不平,因?yàn)橛?xùn)練和測(cè)試集中的例子只能被預(yù)測(cè)為正確或不正確,提供的顆粒信息較少。Hinge支持向量機(jī) (SVM) 模型使用Hinge 損失函數(shù)作為交叉熵的替代來解決二元分類問題。目標(biāo)值在是集合 [-1, 1] ,旨在與二進(jìn)制分類一起使用。如果實(shí)際類別值和預(yù)測(cè)類別值的符號(hào)不同,則Hinge會(huì)得到更大的誤差。在二元分類問題上它有時(shí)比交叉熵更好。作為第一步,我們必須將目標(biāo)變量的值修改為集合 {-1, 1}。keras中它被稱為' hinge '。在網(wǎng)絡(luò)的輸出層中,必須使用tanh激活函數(shù)的單個(gè)節(jié)點(diǎn)以輸出介于 -1 和 1 之間的單個(gè)值。下面是完整代碼:比交叉熵略差的性能,在訓(xùn)練和測(cè)試集上的準(zhǔn)確性不到80%。下圖可以看出,模型已經(jīng)收斂,分類精度圖表明也已經(jīng)收斂。可以看到這個(gè)問題還是BCE比較好,這里可能的原因就是因?yàn)槲覀冇幸恍┰肼朁c(diǎn)導(dǎo)致的。
-
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5503瀏覽量
121194
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論