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

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

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

調(diào)試神經(jīng)網(wǎng)絡(luò)的實(shí)用tips請(qǐng)查收

智能感知與物聯(lián)網(wǎng)技術(shù)研究所 ? 來源:機(jī)器之心 ? 作者:機(jī)器之心 ? 2021-06-15 14:12 ? 次閱讀

神經(jīng)網(wǎng)絡(luò)的 debug 過程著實(shí)不容易,這里是一些有所幫助的 tips?;谏窠?jīng)網(wǎng)絡(luò)的項(xiàng)目瓶頸通常并非對(duì)網(wǎng)絡(luò)的實(shí)現(xiàn)。有時(shí)候,在編寫了所有代碼并嘗試了一大堆超參數(shù)配置之后,網(wǎng)絡(luò)就是無法正常工作。尤其是面對(duì)著數(shù)百萬的參數(shù), 任何一個(gè)小變動(dòng)都有可能前功盡棄。

在面對(duì)各種各樣的問題后,有人總結(jié)了一些幫助調(diào)試神經(jīng)網(wǎng)絡(luò)的實(shí)用 tips,希望能夠減少大家調(diào)試神經(jīng)網(wǎng)絡(luò)的成本。

檢查梯度問題

有時(shí)梯度是引發(fā)問題的原因。下面是幾種與梯度相關(guān)的調(diào)試方法:

數(shù)值計(jì)算每個(gè)權(quán)重的梯度。這通常被稱為「梯度檢查」,有助于確保正確計(jì)算梯度,其中一種方法是使用有限差分。

比較每個(gè)權(quán)重的大小和梯度的大小。要確保大小的比率是合理的。如果梯度大小遠(yuǎn)小于權(quán)重大小,網(wǎng)絡(luò)將花費(fèi)很長(zhǎng)時(shí)間進(jìn)行訓(xùn)練。如果梯度大小與權(quán)重大小大致相同或更大,網(wǎng)絡(luò)將非常不穩(wěn)定,可能根本不會(huì)訓(xùn)練。

檢查梯度爆炸或消失。如果梯度變?yōu)?0 或 nan/infinity,則可以確定網(wǎng)絡(luò)沒有被正確訓(xùn)練。需要首先弄清楚為什么會(huì)發(fā)生爆炸 / 消失梯度,是否步數(shù)太大。一旦弄清楚梯度爆炸 / 消失的原因,就有各種解決方案來解決這個(gè)問題,例如添加殘差連接以更好地傳播梯度或簡(jiǎn)單地使用較小的網(wǎng)絡(luò)。

激活函數(shù)也會(huì)導(dǎo)致梯度爆炸 / 消失。如果 sigmoid 激活函數(shù)的輸入太大,梯度將非常接近 0。隨著時(shí)間的推移檢查激活函數(shù)的輸入,然后確保這些輸入不會(huì)導(dǎo)致梯度始終為 0 或很大。

檢查訓(xùn)練過程

經(jīng)常檢查網(wǎng)絡(luò)的訓(xùn)練進(jìn)度可以節(jié)省時(shí)間。以訓(xùn)練貪吃蛇游戲?yàn)槔?,不是?xùn)練網(wǎng)絡(luò)好幾天,然后再檢查網(wǎng)絡(luò)是否學(xué)到了什么,而是每十分鐘用當(dāng)前學(xué)到的權(quán)重運(yùn)行游戲。幾個(gè)小時(shí)后,如果我們注意到每次都在做同樣的事情并且獲得零獎(jiǎng)勵(lì),就知道可能有問題了,而這節(jié)省了幾天的訓(xùn)練時(shí)間。

不要依賴定量輸出

如果只查看定量輸出,我們可能會(huì)錯(cuò)過有用的調(diào)試信息。例如,在訓(xùn)練語音翻譯網(wǎng)絡(luò)時(shí),比起只檢查評(píng)估函數(shù)是否在減少,更重要的是閱讀翻譯后的語音以確保它有意義;當(dāng)訓(xùn)練一個(gè)用于圖像識(shí)別的網(wǎng)絡(luò)時(shí),一定要確保手動(dòng)檢查網(wǎng)絡(luò)提供的標(biāo)簽。

不應(yīng)該依賴定量輸出的原因有兩個(gè):首先,評(píng)估函數(shù)中可能存在錯(cuò)誤。如果只查看錯(cuò)誤評(píng)估函數(shù)輸出的數(shù)字,可能需要數(shù)周時(shí)間才能意識(shí)到出現(xiàn)問題。其次,在神經(jīng)網(wǎng)絡(luò)輸出中可能存在無法定量顯示的錯(cuò)誤模式。我們可能會(huì)意識(shí)到某個(gè)特定單詞總是被錯(cuò)誤翻譯,或者在左上象限的圖像識(shí)別網(wǎng)絡(luò)總是錯(cuò)誤的。這些觀察結(jié)果反過來可以幫助找到數(shù)據(jù)處理部分的代碼 bug,否則這些 bug 將被忽視。

嘗試小數(shù)據(jù)集

確定代碼是否存在 bug 或數(shù)據(jù)是否難以訓(xùn)練的另一種方法是首先擬合較小的數(shù)據(jù)集,比如將數(shù)據(jù)集中 100000 個(gè)訓(xùn)練示例修剪成只有 100 個(gè)甚至 1 個(gè)訓(xùn)練示例。如果在一個(gè)訓(xùn)練示例的情況下,網(wǎng)絡(luò)仍然有很高的測(cè)試錯(cuò)誤,不能夠非常好地?cái)M合數(shù)據(jù),那么幾乎可以肯定網(wǎng)絡(luò)代碼有問題。

嘗試更簡(jiǎn)單的網(wǎng)絡(luò)

如果全尺寸網(wǎng)絡(luò)在訓(xùn)練時(shí)遇到問題,可以嘗試使用層數(shù)較少的較小網(wǎng)絡(luò),這樣可以更快地訓(xùn)練。如果較小的網(wǎng)絡(luò)在全尺寸網(wǎng)絡(luò)失敗的情況下成功了,則表明全尺寸模型的網(wǎng)絡(luò)架構(gòu)過于復(fù)雜。如果簡(jiǎn)單網(wǎng)絡(luò)和全尺寸網(wǎng)絡(luò)都失敗,則代碼中可能存在 bug。

試著使用框架

如果沒有使用機(jī)器學(xué)習(xí)框架編寫神經(jīng)網(wǎng)絡(luò)的代碼,那么可以通過在機(jī)器學(xué)習(xí)框架中編寫相同的網(wǎng)絡(luò)架構(gòu)來檢查問題何在。然后將打印語句放入非框架版本和框架版本中逐層比較輸出,直到找到打印語句出現(xiàn)差異的位置,即錯(cuò)誤所在。如果在反向傳播期間發(fā)生錯(cuò)誤,則可以從最后一層開始逐層打印權(quán)重的漸變,直到找到差異。但是此方法僅適用于網(wǎng)絡(luò)的第一次迭代,因?yàn)橛捎诘谝淮蔚敵龅牟町?,第二次及以后的迭代將具有不同的起點(diǎn)。

責(zé)任編輯:lq6

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

原文標(biāo)題:神經(jīng)網(wǎng)絡(luò)debug太難了,這里有六個(gè)實(shí)用技巧

文章出處:【微信號(hào):tyutcsplab,微信公眾號(hào):智能感知與物聯(lián)網(wǎng)技術(shù)研究所】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    BP神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)的關(guān)系

    BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡(jiǎn)稱CNN)是兩種在人工智能和機(jī)器學(xué)習(xí)領(lǐng)域
    的頭像 發(fā)表于 07-10 15:24 ?575次閱讀

    BP神經(jīng)網(wǎng)絡(luò)和人工神經(jīng)網(wǎng)絡(luò)的區(qū)別

    BP神經(jīng)網(wǎng)絡(luò)和人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,簡(jiǎn)稱ANNs)之間的關(guān)系與區(qū)別,是神經(jīng)網(wǎng)絡(luò)領(lǐng)域中一個(gè)基礎(chǔ)且重要的話題。本文將從定義、結(jié)構(gòu)、算法、應(yīng)用及未來發(fā)展等多個(gè)方面,詳細(xì)闡述BP
    的頭像 發(fā)表于 07-10 15:20 ?379次閱讀

    rnn是遞歸神經(jīng)網(wǎng)絡(luò)還是循環(huán)神經(jīng)網(wǎng)絡(luò)

    RNN(Recurrent Neural Network)是循環(huán)神經(jīng)網(wǎng)絡(luò),而非遞歸神經(jīng)網(wǎng)絡(luò)。循環(huán)神經(jīng)網(wǎng)絡(luò)是一種具有時(shí)間序列特性的神經(jīng)網(wǎng)絡(luò),能夠處理序列數(shù)據(jù),具有記憶功能。以下是關(guān)于循環(huán)
    的頭像 發(fā)表于 07-05 09:52 ?382次閱讀

    遞歸神經(jīng)網(wǎng)絡(luò)與循環(huán)神經(jīng)網(wǎng)絡(luò)一樣嗎

    遞歸神經(jīng)網(wǎng)絡(luò)(Recursive Neural Network,RvNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)是兩種不同類型的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),它們?cè)谔幚硇蛄袛?shù)據(jù)
    的頭像 發(fā)表于 07-05 09:28 ?421次閱讀

    遞歸神經(jīng)網(wǎng)絡(luò)是循環(huán)神經(jīng)網(wǎng)絡(luò)

    遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,簡(jiǎn)稱RNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,簡(jiǎn)稱RNN)實(shí)際上是同一個(gè)概念,只是不同的翻譯方式
    的頭像 發(fā)表于 07-04 14:54 ?447次閱讀

    循環(huán)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)的區(qū)別

    循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是深度學(xué)習(xí)領(lǐng)域中兩種非常重要的神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-04 14:24 ?505次閱讀

    深度神經(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ò)(通常指?jìng)鹘y(tǒng)神經(jīng)網(wǎng)絡(luò)或前向神經(jīng)網(wǎng)絡(luò))的區(qū)別時(shí),我們需要從多個(gè)維度進(jìn)行深入分析。這些維度包括
    的頭像 發(fā)表于 07-04 13:20 ?329次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)與循環(huán)神經(jīng)網(wǎng)絡(luò)的區(qū)別

    在深度學(xué)習(xí)領(lǐng)域,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks, RNN)是兩種極其重要
    的頭像 發(fā)表于 07-03 16:12 ?968次閱讀

    反向傳播神經(jīng)網(wǎng)絡(luò)和bp神經(jīng)網(wǎng)絡(luò)的區(qū)別

    反向傳播神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network,簡(jiǎn)稱BP神經(jīng)網(wǎng)絡(luò))是一種多層前饋神經(jīng)網(wǎng)絡(luò),它通過反向傳播算法來調(diào)整網(wǎng)絡(luò)中的權(quán)重和偏置,以達(dá)到最小化誤差的
    的頭像 發(fā)表于 07-03 11:00 ?365次閱讀

    bp神經(jīng)網(wǎng)絡(luò)是深度神經(jīng)網(wǎng)絡(luò)

    BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network)是一種常見的前饋神經(jīng)網(wǎng)絡(luò),它使用反向傳播算法來訓(xùn)練網(wǎng)絡(luò)。雖然BP神經(jīng)網(wǎng)絡(luò)在某些方面與深度
    的頭像 發(fā)表于 07-03 10:14 ?365次閱讀

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

    BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡(jiǎn)稱CNN)是兩種不同類型的人工神經(jīng)網(wǎng)絡(luò),它們?cè)?/div>
    的頭像 發(fā)表于 07-03 10:12 ?518次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的原理是什么

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡(jiǎn)稱CNN)是一種深度學(xué)習(xí)模型,廣泛應(yīng)用于圖像識(shí)別、語音識(shí)別、自然語言處理等領(lǐng)域。本文將詳細(xì)介紹卷積神經(jīng)網(wǎng)絡(luò)的原理,包括其
    的頭像 發(fā)表于 07-02 14:44 ?350次閱讀

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

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,簡(jiǎn)稱CNN)和BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Networks,簡(jiǎn)稱BPNN)是兩種
    的頭像 發(fā)表于 07-02 14:24 ?1011次閱讀

    神經(jīng)網(wǎng)絡(luò)架構(gòu)有哪些

    神經(jīng)網(wǎng)絡(luò)架構(gòu)是機(jī)器學(xué)習(xí)領(lǐng)域中的核心組成部分,它們模仿了生物神經(jīng)網(wǎng)絡(luò)的運(yùn)作方式,通過復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)實(shí)現(xiàn)信息的處理、存儲(chǔ)和傳遞。隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,各種神經(jīng)網(wǎng)絡(luò)架構(gòu)被提出并廣泛應(yīng)用
    的頭像 發(fā)表于 07-01 14:16 ?339次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)點(diǎn)

    卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)點(diǎn)? 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一種基于深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)模型,在圖像識(shí)別、語音識(shí)別、自然語言處理等領(lǐng)域有著廣泛的應(yīng)用。相比于
    的頭像 發(fā)表于 12-07 15:37 ?3750次閱讀