0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

訓(xùn)練深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的常用5個損失函數(shù)

穎脈Imgtec ? 2022-10-19 11:17 ? 次閱讀

作者:Onepagecode

來源:DeepHub IMBA


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

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

回歸模型的均方誤差損失

二元分類模型的交叉熵和hinge 損失


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

回歸預(yù)測模型主要是用來預(yù)測連續(xù)的數(shù)值。所以我們將使用 scikit-learn的 make_regression() 函數(shù)來生成一些模擬數(shù)據(jù),并使用這些數(shù)據(jù)構(gòu)建回歸模型。我們將生成 20 個輸入特征:其中 10 個特征將是有意義的,但 10 個與問題無關(guān)。并且隨機生成 1,000 個示例。并且指定隨機種子,所以無論何時運行代碼都會生成相同的 1,000 個示例。5df19158-4f29-11ed-b116-dac502259ad0.png將實值輸入和輸出變量縮放到一個合理的范圍通??梢蕴岣呱窠?jīng)網(wǎng)絡(luò)的性能。所以我們要對對數(shù)據(jù)進行標準化處理。StandardScaler也可以在scikit-learn庫中找到,為了簡化問題我們將在將所有數(shù)據(jù)分割為訓(xùn)練集和測試集之前對其進行縮放。5e12361a-4f29-11ed-b116-dac502259ad0.png然后平均分割訓(xùn)練和驗證集5e3ed18e-4f29-11ed-b116-dac502259ad0.png為了介紹不同的損失函數(shù),我們將開發(fā)一個小型多層感知器(MLP)模型。根據(jù)問題定義,有20個特征作為輸入,經(jīng)過我們的模型。需要要預(yù)測的一個實值,所以輸出層將有一個節(jié)點。5e6693a4-4f29-11ed-b116-dac502259ad0.png我們使用SGD進行優(yōu)化,并且學(xué)習(xí)率為0.01,動量為0.9,兩者都是合理的默認值。訓(xùn)練將進行100個輪,測試集將在每個階段結(jié)束時進行評估,并且繪制學(xué)習(xí)曲線。5e70881e-4f29-11ed-b116-dac502259ad0.png模型完成后就可以進行損失函數(shù)的介紹:MSE回歸問題最常使用的是均方誤差損失(MSE)。當(dāng)目標變量的分布為高斯分布時,它是最大似然推理下的首選損失函數(shù)。所以只有當(dāng)你有一個更好的理由時,才應(yīng)該改變?yōu)槠渌麚p失函數(shù)。如果在 Keras 中編譯模型時將“mse”或“mean_squared_error”指定為損失函數(shù),則使用均方誤差損失函數(shù)。5e9fa84c-4f29-11ed-b116-dac502259ad0.png下面的代碼是上述回歸問題的完整示例。5eb33b32-4f29-11ed-b116-dac502259ad0.png在運行示例的第一步中,打印了模型的訓(xùn)練和測試數(shù)據(jù)集的均方誤差,因為保留了3位小數(shù),所以顯示為0.0005edce3e2-4f29-11ed-b116-dac502259ad0.png從下圖中可以看出,模型收斂速度相當(dāng)快,訓(xùn)練和測試性能保持不變。根據(jù)模型的性能和收斂特性,均方誤差是回歸問題的一個很好的選擇。5ef0f26a-4f29-11ed-b116-dac502259ad0.pngMSLE在具有廣泛值的回歸問題中,可能不希望在預(yù)測大值時像均方誤差那樣對模型進行懲罰。所以可以通過首先計算每個預(yù)測值的自然對數(shù)來計算均方誤差。這種損失稱為 MSLE,或均方對數(shù)誤差。當(dāng)預(yù)測值出現(xiàn)較大差異時,它具有放松懲罰效果的效果。當(dāng)模型直接預(yù)測未縮放的數(shù)量時,它可能是更合適的損失度量。keras中使用“mean_squared_logarithmic_error”作為損失函數(shù)5f07dc64-4f29-11ed-b116-dac502259ad0.png在下面的示例是使用MSLE損失函數(shù)的完整代碼。5f1d3136-4f29-11ed-b116-dac502259ad0.png該模型在訓(xùn)練和測試數(shù)據(jù)集上的MSE都略差。這是由于目標變量的分布是一個標準的高斯分布,說明我們的這個損失函數(shù)可能不是很適合這個問題。5f5c738c-4f29-11ed-b116-dac502259ad0.png下圖顯示各訓(xùn)練輪次的對比MSE收斂得很好,但MSE可能過擬合了,因為它從20輪開始下降變得變換并且開始上升。5f656212-4f29-11ed-b116-dac502259ad0.pngMAE根據(jù)回歸問題,目標變量的分布可能主要是高斯分布,但可能包含異常值,例如 遠離平均值的大值或小值。在這種情況下,平均絕對誤差或 MAE 損失是一個合適的損失函數(shù),因為它對異常值更穩(wěn)健??紤]到實際值與預(yù)測值的絕對差值,計算為平均值。使用“mean_absolute_error”損失函數(shù)5f830dee-4f29-11ed-b116-dac502259ad0.png這是使用MAE的完整代碼5f95f08a-4f29-11ed-b116-dac502259ad0.png結(jié)果如下5fa379b2-4f29-11ed-b116-dac502259ad0.png下圖可以看到,MAE確實收斂了但它有一個顛簸的過程。MAE在這種情況下也不是很適合,因為目標變量是一個沒有大離群值的高斯函數(shù)。

5fba86ca-4f29-11ed-b116-dac502259ad0.png


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

二元分類問題是預(yù)測建模問題中兩個標簽中的一個。這個問題被定義為預(yù)測第一個或第二個類的值為0或1,一般情況下通常被實現(xiàn)為預(yù)測屬于類值1的的概率。我們也是使用sklearn生成數(shù)據(jù)這里使用圓問題,它有一個二維平面,有兩個同心圓,其中外圓上的點屬于類0,內(nèi)圓上的點屬于類1。為了使學(xué)習(xí)更具挑戰(zhàn)性,我們還在樣本中加入了統(tǒng)計噪聲。樣本量為1000,并加入10%的統(tǒng)計噪聲。5fc7dba4-4f29-11ed-b116-dac502259ad0.png數(shù)據(jù)集的散點圖可以幫助我們理解正在建模的問題。下面列出的是一個完整的示例。5fe50ba2-4f29-11ed-b116-dac502259ad0.png散點圖如下,其中輸入變量確定點的位置,顏色為類值。0是藍色的,1是橙色的。601accd8-4f29-11ed-b116-dac502259ad0.png這里還是一半用于訓(xùn)練,一半用于測試,5e3ed18e-4f29-11ed-b116-dac502259ad0.png我們還是定義一個簡單的MLP模型,604993f6-4f29-11ed-b116-dac502259ad0.png使用SGD優(yōu)化,學(xué)習(xí)率為0.01,動量為0.99。605664c8-4f29-11ed-b116-dac502259ad0.png模型訓(xùn)練200輪進行擬合,并根據(jù)損失和準確性評估模型的性能。60658fc0-4f29-11ed-b116-dac502259ad0.pngBCEBCE是用于解決的二元分類問題默認損失函數(shù)。在最大似然推理框架下,它是首選損失函數(shù)。對于第1類的預(yù)測,交叉熵計算一個分數(shù),該分數(shù)總結(jié)了實際和預(yù)測概率分布之間的平均差異。在編譯Keras模型時,可以指定binary_crossentropy作為損失函數(shù)。606ff712-4f29-11ed-b116-dac502259ad0.png為了預(yù)測類1的概率,輸出層必須包含一個節(jié)點和一個' sigmoid '激活。6098ee42-4f29-11ed-b116-dac502259ad0.png下面是完整的代碼:60ab2efe-4f29-11ed-b116-dac502259ad0.png該模型對問題的學(xué)習(xí)相對較好,在測試數(shù)據(jù)集上的準確率為83%,準確率為85%。分數(shù)之間存在一定程度的重疊,表明模型既不是過擬合也不是欠擬合。下圖中所示,訓(xùn)練效果很好。由于概率分布之間的誤差是連續(xù)的,損失圖是平滑的,而精度線圖顯示出凹凸不平,因為訓(xùn)練和測試集中的例子只能被預(yù)測為正確或不正確,提供的顆粒信息較少。60bf23be-4f29-11ed-b116-dac502259ad0.pngHinge支持向量機 (SVM) 模型使用Hinge 損失函數(shù)作為交叉熵的替代來解決二元分類問題。目標值在是集合 [-1, 1] ,旨在與二進制分類一起使用。如果實際類別值和預(yù)測類別值的符號不同,則Hinge會得到更大的誤差。在二元分類問題上它有時比交叉熵更好。作為第一步,我們必須將目標變量的值修改為集合 {-1, 1}。60d4bb8e-4f29-11ed-b116-dac502259ad0.pngkeras中它被稱為' hinge '。60dd3d0e-4f29-11ed-b116-dac502259ad0.png在網(wǎng)絡(luò)的輸出層中,必須使用tanh激活函數(shù)的單個節(jié)點以輸出介于 -1 和 1 之間的單個值。60e71054-4f29-11ed-b116-dac502259ad0.png下面是完整代碼:60f7dde4-4f29-11ed-b116-dac502259ad0.png比交叉熵略差的性能,在訓(xùn)練和測試集上的準確性不到80%。6169b6ee-4f29-11ed-b116-dac502259ad0.png下圖可以看出,模型已經(jīng)收斂,分類精度圖表明也已經(jīng)收斂。61758118-4f29-11ed-b116-dac502259ad0.png可以看到這個問題還是BCE比較好,這里可能的原因就是因為我們有一些噪聲點導(dǎo)致的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關(guān)推薦

    神經(jīng)網(wǎng)絡(luò)優(yōu)化器有哪些

    神經(jīng)網(wǎng)絡(luò)優(yōu)化器是深度學(xué)習(xí)中用于調(diào)整網(wǎng)絡(luò)參數(shù)以最小化損失函數(shù)的重要工具。這些優(yōu)化器通過不同的策略來
    的頭像 發(fā)表于 07-11 16:33 ?316次閱讀

    怎么對神經(jīng)網(wǎng)絡(luò)重新訓(xùn)練

    重新訓(xùn)練神經(jīng)網(wǎng)絡(luò)是一復(fù)雜的過程,涉及到多個步驟和考慮因素。 引言 神經(jīng)網(wǎng)絡(luò)是一種強大的機器學(xué)習(xí)模型,廣泛應(yīng)用于圖像識別、自然語言處理、語音
    的頭像 發(fā)表于 07-11 10:25 ?303次閱讀

    人工神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練的基本原理

    人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,簡稱ANNs)是一種受生物神經(jīng)網(wǎng)絡(luò)啟發(fā)而構(gòu)建的數(shù)學(xué)模型,用于模擬人腦處理信息的方式。它在機器學(xué)習(xí)深度
    的頭像 發(fā)表于 07-05 09:16 ?328次閱讀

    深度神經(jīng)網(wǎng)絡(luò)與基本神經(jīng)網(wǎng)絡(luò)的區(qū)別

    在探討深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks, DNNs)與基本神經(jīng)網(wǎng)絡(luò)(通常指傳統(tǒng)神經(jīng)網(wǎng)絡(luò)或前向神經(jīng)網(wǎng)絡(luò))的區(qū)別時,我們需
    的頭像 發(fā)表于 07-04 13:20 ?329次閱讀

    bp神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)區(qū)別是什么

    結(jié)構(gòu)、原理、應(yīng)用場景等方面都存在一定的差異。以下是對這兩種神經(jīng)網(wǎng)絡(luò)的比較: 基本結(jié)構(gòu) BP神經(jīng)網(wǎng)絡(luò)是一種多層前饋神經(jīng)網(wǎng)絡(luò),由輸入層、隱藏層和輸出層組成。每個神經(jīng)元之間通過權(quán)重連接,并通
    的頭像 發(fā)表于 07-03 10:12 ?518次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)激活函數(shù)的作用

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNNs)是深度學(xué)習(xí)中一種重要的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),廣泛應(yīng)用于圖像識別、語音識別、自然語言處理等領(lǐng)域。在卷積
    的頭像 發(fā)表于 07-03 09:18 ?320次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的是什么

    、訓(xùn)練過程以及應(yīng)用場景。 1. 卷積神經(jīng)網(wǎng)絡(luò)的基本概念 1.1 卷積神經(jīng)網(wǎng)絡(luò)的定義 卷積神經(jīng)網(wǎng)絡(luò)是一種前饋深度
    的頭像 發(fā)表于 07-03 09:15 ?220次閱讀

    深度學(xué)習(xí)與卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用

    隨著人工智能技術(shù)的飛速發(fā)展,深度學(xué)習(xí)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)作為其中的重要分支,已經(jīng)在多個領(lǐng)域取得了顯著的應(yīng)用成果。從圖像識別、語音識別
    的頭像 發(fā)表于 07-02 18:19 ?559次閱讀

    深度神經(jīng)網(wǎng)絡(luò)模型有哪些

    模型: 多層感知器(Multilayer Perceptron,MLP): 多層感知器是最基本的深度神經(jīng)網(wǎng)絡(luò)模型,由多個全連接層組成。每個隱藏層的神經(jīng)元數(shù)量可以不同,通常使用激活函數(shù)
    的頭像 發(fā)表于 07-02 10:00 ?535次閱讀

    如何訓(xùn)練和優(yōu)化神經(jīng)網(wǎng)絡(luò)

    神經(jīng)網(wǎng)絡(luò)是人工智能領(lǐng)域的重要分支,廣泛應(yīng)用于圖像識別、自然語言處理、語音識別等多個領(lǐng)域。然而,要使神經(jīng)網(wǎng)絡(luò)在實際應(yīng)用中取得良好效果,必須進行有效的訓(xùn)練和優(yōu)化。本文將從神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-01 14:14 ?268次閱讀

    神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)有哪些

    神經(jīng)網(wǎng)絡(luò)中,激活函數(shù)是一至關(guān)重要的組成部分,它決定了神經(jīng)元對于輸入信號的反應(yīng)方式,為神經(jīng)網(wǎng)絡(luò)引入了非線性因素,使得
    的頭像 發(fā)表于 07-01 11:52 ?384次閱讀

    利用深度循環(huán)神經(jīng)網(wǎng)絡(luò)對心電圖降噪

    ;為等效的前饋網(wǎng)絡(luò)。損失函數(shù)計算 為序列中所有時間步長的平均成本。在本文 中,我們使用深度循環(huán)去噪神經(jīng)網(wǎng)絡(luò),它是 DRNN 和去噪自動編碼器
    發(fā)表于 05-15 14:42

    利用神經(jīng)網(wǎng)絡(luò)對腦電圖(EEG)降噪

    數(shù)據(jù)與干凈的EEG數(shù)據(jù)構(gòu)成訓(xùn)練數(shù)據(jù),并且分成訓(xùn)練、驗證和測試數(shù)據(jù)集。 繪制有噪聲EEG數(shù)據(jù)與干凈的EEG數(shù)據(jù) 顯然,傳統(tǒng)的任何算法很難將EEG數(shù)據(jù)從噪聲中濾出來。 定義神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),之所以選擇長短期記憶
    發(fā)表于 04-30 20:40

    詳解深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用

    在如今的網(wǎng)絡(luò)時代,錯綜復(fù)雜的大數(shù)據(jù)和網(wǎng)絡(luò)環(huán)境,讓傳統(tǒng)信息處理理論、人工智能與人工神經(jīng)網(wǎng)絡(luò)都面臨巨大的挑戰(zhàn)。近些年,深度學(xué)習(xí)逐漸走進人們的視線
    的頭像 發(fā)表于 01-11 10:51 ?1600次閱讀
    詳解<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>、<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>與卷積<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的應(yīng)用

    Kaggle知識點:訓(xùn)練神經(jīng)網(wǎng)絡(luò)的7技巧

    訓(xùn)練神經(jīng)網(wǎng)絡(luò)的挑戰(zhàn)在訓(xùn)練數(shù)據(jù)集的新示例之間取得平衡。七具體的技巧,可幫助您更快地訓(xùn)練出更好的神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 12-30 08:27 ?544次閱讀
    Kaggle知識點:<b class='flag-5'>訓(xùn)練</b><b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的7<b class='flag-5'>個</b>技巧