<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          神經(jīng)網(wǎng)絡(luò) debug 太難了,這里有六個實用技巧

          共 1920字,需瀏覽 4分鐘

           ·

          2021-06-22 17:09

          點擊上方“程序員大白”,選擇“星標”公眾號

          重磅干貨,第一時間送達


          神經(jīng)網(wǎng)絡(luò)的 debug 過程著實不容易,這里是一些有所幫助的 tips。

          基于神經(jīng)網(wǎng)絡(luò)的項目瓶頸通常并非對網(wǎng)絡(luò)的實現(xiàn)。有時候,在編寫了所有代碼并嘗試了一大堆超參數(shù)配置之后,網(wǎng)絡(luò)就是無法正常工作。尤其是面對著數(shù)百萬的參數(shù), 任何一個小變動都有可能前功盡棄。

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


          檢查梯度問題

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

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

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

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

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


          檢查訓(xùn)練過程

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

          不要依賴定量輸出

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

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

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

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

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

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

          試著使用框架

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

          參考內(nèi)容:https://towardsdatascience.com/debugging-tips-for-neural-networks-f7dc699d6845


          國產(chǎn)小眾瀏覽器因屏蔽視頻廣告,被索賠100萬(后續(xù))

          年輕人“不講武德”:因看黃片上癮,把網(wǎng)站和786名女主播起訴了

          中國聯(lián)通官網(wǎng)被發(fā)現(xiàn)含木馬腳本,可向用戶推廣色情APP

          張一鳴:每個逆襲的年輕人,都具備的底層能力


          關(guān)


          ,,西,質(zhì),結(jié),關(guān)[]!


          瀏覽 29
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91性爱在线播放 | 欧美在线大屌视频 | 激情亚洲综合婷婷 | 围内精品久久久久久久久久‘变脸 91久久婷婷国产麻豆精品电影 | 免费看又色又爽又黄的成人用品 |