成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

你的神經(jīng)網(wǎng)絡(luò)不work? 這37個原因總有一款適合你!

開發(fā) 開發(fā)工具
其實,影響神經(jīng)網(wǎng)絡(luò)訓(xùn)練正常運(yùn)轉(zhuǎn)的影響因素很多! 在經(jīng)歷了多次調(diào)試后,我總結(jié)出了一些通用的經(jīng)驗,特此整理成文,希望能夠給和我有一樣困惑的朋友們一點啟發(fā)。

 

[[200308]]

 

 

作者 | Slav Ivanov (企業(yè)家/黑客)

 

 

編譯 | 朱璇、霍靜、笪潔瓊、崔云柯

 

彼時,我手頭的神經(jīng)網(wǎng)絡(luò)訓(xùn)練已持續(xù)了12個小時,各項指標(biāo)顯示運(yùn)轉(zhuǎn)良好。沒有一點點防備,就在剛才,突然提示:全部預(yù)測為零,一點有用的信息都沒有!

“到底哪里出問題了?” ——我自言自語,很是郁悶。“該如何檢查神經(jīng)網(wǎng)絡(luò)模型輸出的信息是否有用(例如,預(yù)測所有輸出的平均值,還是看看準(zhǔn)確度是不是很糟糕)”?

 

其實,影響神經(jīng)網(wǎng)絡(luò)訓(xùn)練正常運(yùn)轉(zhuǎn)的影響因素很多! 在經(jīng)歷了多次調(diào)試后,我總結(jié)出了一些通用的經(jīng)驗,特此整理成文,希望能夠給和我有一樣困惑的朋友們一點啟發(fā):

一、如何使用本指南?

其實,可能導(dǎo)致錯誤的影響因素有很多, 不過總有一些“出鏡率”比較高。如果出現(xiàn)問題,我通常從下面的列表開始:

1. 從一種可用于此類型數(shù)據(jù)的已知簡單模型開始試驗(比如用于圖像識別的VGG模型)。 如果可能,使用標(biāo)準(zhǔn)損失。

2. 關(guān)閉所有“鈴聲和口哨”(譯者注:即使用最基礎(chǔ)的模型),比如不再使用正則化和數(shù)據(jù)擴(kuò)增。

3. 調(diào)模型時,請仔細(xì)檢查預(yù)處理,確保使用和我們訓(xùn)練原始模型一樣的預(yù)處理。

4. 驗證輸入數(shù)據(jù)是否正確。

5. 從一個非常小的數(shù)據(jù)集(2-20個樣本)開始,先讓模型過度擬合,再逐漸增加更多的數(shù)據(jù)。

6. 逐漸添加之前被省略的部分:數(shù)據(jù)擴(kuò)增/正則化,自定義損失函數(shù),嘗試更復(fù)雜的模型。

如果上述內(nèi)容還不能解決問題,那接下來,請繼續(xù)閱讀,我們之后會還有一份大型影響因素清單,建議逐一驗證。

二、數(shù)據(jù)集問題

數(shù)據(jù)集問題

1. 檢查輸入數(shù)據(jù)

檢查一下你輸入訓(xùn)練模型的數(shù)據(jù)是否正確。之前,曾經(jīng)好多次我都搞混了圖像的寬度和高度,還有的時候,我手誤輸入一堆多余的零,還有,曾經(jīng)發(fā)生過多次重復(fù)輸入同一批次數(shù)據(jù)的情況……

總之,記得仔細(xì)檢查一開始幾個批次輸入和輸出情況,盡可能保證看起來正常。

2. 隨機(jī)輸入驗證

嘗試往訓(xùn)練項目中輸入一些隨機(jī)數(shù)據(jù),然后看看模型報錯,和之前的報錯情況是否一致。 如果一致,那肯定是在模型的某個階段出了問題,將數(shù)據(jù)轉(zhuǎn)換成了垃圾。 之后,逐層調(diào)試,找到出錯的地方就好。

3. 檢查數(shù)據(jù)加載器

有時候,數(shù)據(jù)本身可能沒問題,出問題的可能是將數(shù)據(jù)輸入到網(wǎng)絡(luò)的代碼。 因此,在任何操作之前,請打印***層的輸入檢查檢查。

4. 確保輸入連接到輸出

檢查幾個輸入樣品是否有正確的標(biāo)簽。 同時還要確保輸入樣本與輸出標(biāo)簽的重新排序方式相同。

5. 輸入與輸出之間的隨機(jī)比例問題

如果模型中,輸入輸出之間的非隨機(jī)部分,相比隨機(jī)部分比例過小,那么我們可以確定,輸入和輸出無關(guān)的可能性比較大。 因為這往往取決于數(shù)據(jù)的性質(zhì),目前,針對這個情況,我還沒找到更簡便的方式來檢測,畢竟這與數(shù)據(jù)本身的特質(zhì)息息相關(guān)。

6. 數(shù)據(jù)集中是否有太多噪音?

之前有一次,我打算從食品站點上整理一組圖像數(shù)據(jù)集,放到我的神經(jīng)網(wǎng)絡(luò)模型,結(jié)果就碰到了這個問題。里面很多數(shù)據(jù)都顯示損壞標(biāo)簽,才影響到模型結(jié)果。建議手動檢查一些輸入樣本,看看它們顯示的標(biāo)簽。

對于多少噪音才是神經(jīng)網(wǎng)絡(luò)訓(xùn)練的臨界點目前仍有爭議,比如,這篇文章(https://arxiv.org/pdf/1412.6596.pdf) 顯示,在一定條件下,在使用了50%損壞標(biāo)簽的MNIST數(shù)據(jù)集中,準(zhǔn)確率仍可以達(dá)到50%以上。

7. 對數(shù)據(jù)集重新排序

如果數(shù)據(jù)集沒有重新排序,并且有特定的順序(按照標(biāo)簽排序),這可能會對學(xué)習(xí)產(chǎn)生負(fù)面影響。 記得給數(shù)據(jù)集隨機(jī)重新排序,也別忘了將輸入和標(biāo)簽用同樣的方式重新排序。

8. 減少標(biāo)簽不平衡

圖像種類B和圖像種類A是1:1000嗎? 如果這樣,我們可能需要平衡損失功能或嘗試其他標(biāo)簽不平衡數(shù)據(jù)的應(yīng)對方法

(http://machinelearningmastery.com/tactics-to-combat-imbalanced-classes-in-your-machine-learning-dataset/)。

9. 你的訓(xùn)練數(shù)據(jù)夠多嗎?

從頭開始訓(xùn)練一個神經(jīng)網(wǎng)絡(luò),是需要大量數(shù)據(jù)的。 在圖像分類方面, 有人建議每個類別需要約1000張圖片或更多。

(https://stats.stackexchange.com/a/226693/30773)。

10. 確保批次數(shù)據(jù)不為單一標(biāo)簽

這可能發(fā)生在有序數(shù)據(jù)集中(即前一萬個樣本擁有同一個標(biāo)簽)。 通過將數(shù)據(jù)集重新排序可輕松修復(fù)這個問題。

11. 減少每個批次的容量

這篇文章(https://arxiv.org/abs/1609.04836)指出,擁有非常大的批次可以降低模型的泛化能力。

添加 1.使用標(biāo)準(zhǔn)數(shù)據(jù)集(例如mnist,cifar10)

感謝@ hengcherkeng提出這一點:

當(dāng)測試新的網(wǎng)絡(luò)架構(gòu)或編寫新的代碼片段時,首先使用標(biāo)準(zhǔn)數(shù)據(jù)集,而不是自己的數(shù)據(jù)。 這樣,我們就可以參考前人的數(shù)據(jù)集總結(jié),這樣做的好處是,不存在標(biāo)簽噪音、訓(xùn)練/測試分配差異、數(shù)據(jù)集難度過大等問題。

三、數(shù)據(jù)歸一化/增強(qiáng)

[[200309]]

12. 特征標(biāo)準(zhǔn)化

你有沒有標(biāo)準(zhǔn)化你的輸入數(shù)據(jù),它們是否具有零均值和單位標(biāo)準(zhǔn)差?

13. 你是否做了太多的數(shù)據(jù)擴(kuò)增?

數(shù)據(jù)擴(kuò)增具有正則化效果。 太多的數(shù)據(jù)擴(kuò)增,再加上其他形式的正則化(比如weight L2, dropout等等),都可能導(dǎo)致網(wǎng)絡(luò)擬合不足。

14. 檢查預(yù)訓(xùn)練模型的預(yù)處理

如果您使用預(yù)先訓(xùn)練好的模型,請確保您正在使用與該模型訓(xùn)練時相同的規(guī)范化和預(yù)處理。 例如,圖像像素是在[0,1]、[-1,1]還是[0,255]的范圍內(nèi)?

15. 檢查訓(xùn)練集/驗證集/測試集的預(yù)處理

CS231n指出了一個常見的陷阱

(http://cs231n.github.io/neural-networks-2/#datapre) :

“......任何預(yù)處理統(tǒng)計值(如數(shù)據(jù)均值)只能在訓(xùn)練數(shù)據(jù)上計算,然后應(yīng)用于驗證/測試數(shù)據(jù)。 例如,計算平均值并從整個數(shù)據(jù)集中的每個圖像中減去它,然后將數(shù)據(jù)分割成訓(xùn)練集/驗證集/測試集將是一個錯誤。 “

另外,請檢查每個樣品或批次中是否使用了不同的預(yù)處理。

四、執(zhí)行問題

執(zhí)行問題

16. 嘗試簡化問題

簡化問題能夠幫助你發(fā)現(xiàn)異常。如果目前你的模型輸出了對象的分類和坐標(biāo),那就嘗試只輸出對象的分類。

17. “隨機(jī)”尋找正常范圍的損失

源自卓越的cs231n課程:用少量的參數(shù)來初始化,不加正則化。比如,如果我們有十個類,“隨機(jī)”意思是10%的時候我們會得到正確結(jié)果,softmax損失是負(fù)對數(shù)概率:-ln(0.1) = 2.302。

然后,再試著增加正則化的強(qiáng)度,從而增加損失。

18. 檢查你的損失函數(shù)

如果你自己實現(xiàn)了損失函數(shù),那檢查bugs,再加上單位測試。之前,我的損失函數(shù)稍微有些偏差,降低了網(wǎng)絡(luò)的性能。

19. 驗證損失的輸入

如果你正在使用“已有框架”提供的損失函數(shù),那你一定要按照指定方法輸入指定數(shù)據(jù)。 在PyTorch里,我會弄混NLLLoss和CrossEntropyLoss,前者需要softmax輸入,但后者不需要。

20. 調(diào)整損失的權(quán)重

如果你的損失是由幾個小的損失函數(shù)組成的,確保他們的相關(guān)權(quán)重是合適的。這也許包括了測試幾種不同的權(quán)重組合。

21. 監(jiān)測其他度量標(biāo)準(zhǔn)

有時候損失并不是***的測量標(biāo)準(zhǔn)來衡量你的網(wǎng)絡(luò)是否訓(xùn)練良好。如果可以,可以使用其他的,比如準(zhǔn)確率。

22. 測試每一個自定制網(wǎng)絡(luò)層

你自己完成了網(wǎng)絡(luò)里的層嗎?檢查,再檢查,確保這些層運(yùn)行正確。

23. 檢查“凍結(jié)”的網(wǎng)絡(luò)層或者變量

檢查你是不是無意間限制了可更新層與變量的更新。

24. 增加網(wǎng)絡(luò)大小

也許你網(wǎng)絡(luò)的指數(shù)級力度不足以描述目標(biāo)函數(shù)。嘗試增加更多的層,或者全鏈接的隱藏單元數(shù)。

25. 檢查隱藏維錯誤

如果你的輸入是(k, H, W) = (64, 64, 64),那很容易錯過關(guān)于錯誤維度的錯誤。使用奇怪的數(shù)字設(shè)置輸入維度(比如,對不同的維度使用不同的素數(shù)),來檢查它們是怎么在網(wǎng)絡(luò)傳播。

26. 進(jìn)行梯度檢查

如果你自己手動實現(xiàn)了梯度下降法,檢查梯度,以確保你的后向傳播運(yùn)行良好。

五、訓(xùn)練問題

[[200310]]

27. 解決一個小的數(shù)據(jù)集

過擬合一個很小的數(shù)據(jù)子集,確保它可行。比如,用1到2個例子進(jìn)行訓(xùn)練,看看是否你的網(wǎng)絡(luò)能分類正確。然后再每個類添加更多的例子。

28. 檢查權(quán)重的初始化

如果不確定,就使用Xavier或者He來初始化。初始化可能會把你引向一個有問題的最小局部,所以,你可以嘗試不同的初始化,看是否有幫助。

29. 改變超參數(shù)

也許你使用的超參數(shù)集有問題。如果可以,可以嘗試

http://scikit-learn.org/stable/modules/grid_search.html。

30. 減少正則化

過度的正則化會讓網(wǎng)絡(luò)擬合不足。嘗試減少過度的正則化,諸如,dropout,batch norm,權(quán)重/偏差 L2正則化,等等。在“實用深度學(xué)習(xí)程序員必讀”這門課中,Jeremy Howard建議先排查擬合不足。這意味著你先使訓(xùn)練集過擬合,而且只有過擬合。

31. 給你的訓(xùn)練網(wǎng)絡(luò)多一點的時間

有時候并不是網(wǎng)絡(luò)出現(xiàn)了問題,也有可能你太心急了。請在作出有價值的預(yù)測之前,給你的網(wǎng)絡(luò)再多一些的訓(xùn)練時間。如果這個過程中,如果你觀察到損失在穩(wěn)定減少,那放輕松,給它再多一些的訓(xùn)練時間吧。

32. 訓(xùn)練模式與測試模式的轉(zhuǎn)換

某些框架的網(wǎng)絡(luò)層,類似batch norm,dropout,它們的效果在訓(xùn)練和測試模式是不一樣的。請選擇合適的模式,以確保你的網(wǎng)絡(luò)預(yù)測更好。

33. 可視化訓(xùn)練的過程

  • 監(jiān)控每層的激活函數(shù),權(quán)重和更新情況。確保它們的值是對得上的。比如,參數(shù)(權(quán)重和偏差)的更新值應(yīng)該是1-e3。
  • 考慮諸如Tensorboard和Crayon的可視化庫。你還可以打印出來,檢查權(quán)重/偏差/激活函數(shù)值。
  • 注意查找網(wǎng)絡(luò)層的激活函數(shù)值,均值遠(yuǎn)遠(yuǎn)大于0的那些。嘗試Batch Norm或者ELUs。
  • Deeplearning4j (https://deeplearning4j.org/visualization#usingui)描述了,理想狀態(tài)的權(quán)重和偏差柱狀圖:“拿權(quán)重來說,柱狀圖應(yīng)該呈現(xiàn)近似高斯分布的特征。而偏差,在柱狀圖中應(yīng)該從0開始,***也近似高斯分布(LSTM是個例外)。注意觀察那些趨于正負(fù)無窮大的參數(shù),以及那些變的特別大的偏差值。有時候會發(fā)生在分類的輸出層,如果類的分布很不平衡的話。”
  • 檢查一下層更新,它們也應(yīng)該是高斯分布。

34. 嘗試不同的優(yōu)化器

優(yōu)化器的選擇上,要注意,不要選對你的訓(xùn)練可能造成很大影響的那些。好的優(yōu)化器可以讓你在最短的時間達(dá)到***的效果。許多描述算法的論文都有說明相關(guān)的優(yōu)化器,如果沒找到,我一般使用Adam或者帶勢的SGD。

可以查看這篇很好的文章(http://ruder.io/optimizing-gradient-descent/),作者是Sebastian Ruder,里面你會知道很多關(guān)于梯度下降優(yōu)化器。

35. 逐一檢查那些爆炸性增長/消失不見的梯度

檢查層的更新,如果出現(xiàn)很大的值,那可能預(yù)示著爆炸性增長的梯度值。梯度剪切會有幫助。檢查層的激活函數(shù)值。Deeplearning4j一文中

(https://deeplearning4j.org/visualization#usingui),給出了不錯的建議:“激活函數(shù)值好的標(biāo)準(zhǔn)偏差范圍大致在0.5 到2.0,如果超出這個范圍過多,則可能會出現(xiàn)激活函數(shù)值消失不見、或爆炸性增長的情況。“

36. 增加/減少學(xué)習(xí)率

學(xué)習(xí)率過低,可能會導(dǎo)致你的模型收斂的很慢。而學(xué)習(xí)率過高,也會有一些不良影響————起初損失快速減少,但是***卻不易找到良好解決辦法。建議改變你的學(xué)習(xí)率,可以嘗試乘以0.1或10。

37. 解決非數(shù)值數(shù)

如果訓(xùn)練RNNs,出現(xiàn)非數(shù)值數(shù)可能是個需要關(guān)注的問題。建議你嘗試下列方式改進(jìn)這個情況:

  • 減少學(xué)習(xí)率,尤其是在開始的100個回合里有非數(shù)值數(shù)時候。
  • 非數(shù)值數(shù)來自于除以0,或者0與負(fù)數(shù)的自然對數(shù)。
  • Russell Steward也給出了很多參考片方法,來應(yīng)對非數(shù)值數(shù)(http://russellsstewart.com/notes/0.html)。
  • 嘗試逐層評估你的網(wǎng)絡(luò),找出產(chǎn)生非數(shù)值數(shù)的確切位置。

原文:https://blog.slavv.com/37-reasons-why-your-neural-network-is-not-working-4020854bd607

【本文是51CTO專欄機(jī)構(gòu)大數(shù)據(jù)文摘的原創(chuàng)譯文,微信公眾號“大數(shù)據(jù)文摘( id: BigDataDigest)”】

     大數(shù)據(jù)文摘二維碼

 

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2020-07-06 10:29:21

Linux系統(tǒng)數(shù)據(jù)

2021-02-03 05:18:26

開源Ceph存儲

2018-08-01 09:00:00

測試工具負(fù)載測試性能測試

2021-08-31 07:54:23

數(shù)據(jù)庫選型

2012-10-08 09:59:29

惠普打印

2021-07-13 07:03:18

Linux遠(yuǎn)程工具

2018-11-14 08:14:59

工具云遷移云計算

2020-07-30 08:34:04

物聯(lián)網(wǎng)開發(fā)工具

2012-01-10 15:44:33

相冊應(yīng)用軟件體驗

2016-03-28 10:32:26

Linux桌面發(fā)行版

2018-12-10 10:30:40

阿里Linux命令

2018-09-09 23:07:17

物聯(lián)網(wǎng)可視化編程工具

2017-08-01 07:34:04

神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)梯度

2025-04-14 03:45:00

AI編程助手

2021-05-11 11:20:54

VRAR虛擬現(xiàn)實技術(shù)

2024-10-10 17:43:25

Jam擴(kuò)展程序瀏覽器

2020-07-13 11:20:21

Python開發(fā)工具

2019-05-30 08:43:45

JavaScript富文本編輯器編輯器

2021-01-27 09:41:41

Web安全攻擊黑客

2017-06-30 16:24:40

大數(shù)據(jù)神經(jīng)網(wǎng)絡(luò)NNabla
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩三级免费网站 | 不卡的av在线 | 黄视频网址 | 一级做a爰片性色毛片16 | 欧美日韩国产在线 | 欧美一区中文字幕 | 欧美日韩在线一区 | 午夜爱爱毛片xxxx视频免费看 | 一区二区三区四区在线 | 久久99精品久久久97夜夜嗨 | 免费黄网站在线观看 | 久久久久久久综合 | www视频在线观看 | 久久99精品国产自在现线小黄鸭 | 精久久久 | 日韩中文字幕一区 | 午夜影院在线观看免费 | 国产一级视频在线 | 亚洲精品一区二区三区中文字幕 | 鲁大师一区影视 | 国产精品69久久久久水密桃 | 亚洲成人一区 | 黄色大全免费看 | 欧洲视频一区 | 日韩欧美三级在线 | 久久婷婷国产麻豆91 | 欧美激情一区二区三区 | 日韩影院在线观看 | 亚洲欧美成人影院 | 秋霞电影院午夜伦 | 日本一区二区三区精品视频 | 亚洲欧美日本在线 | 国产成人久久精品一区二区三区 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 一区二区三区四区不卡视频 | 国产乡下妇女做爰 | 91在线精品秘密一区二区 | 麻豆天堂| 欧美久久影院 | 日韩久草 | 粉嫩国产精品一区二区在线观看 |