色婷婷AV无码久久精品,久久天天躁狠狠躁夜夜97,羞羞麻豆国产精品1区2区3区,啪影院免费线观看视频,思思久久er99精品亚洲

常州機器視覺培訓

常州上位機軟件開發(fā)

常州工業(yè)機器人編程設計培訓

常州PLC培訓

常州PLC

常州PLC編程培訓

常州電工培訓

常州和訊plc培訓中心歡迎您!
當前位置:網站首頁 > 新聞中心 新聞中心
神經網絡訓練失敗的原因總結-常州機器視覺培訓,常州上位機培訓
日期:2024-3-1 16:37:57人氣:  標簽:常州機器視覺培訓 常州上位機培訓

在面對模型不收斂的時候,首先要保證訓練的次數夠多。在訓練過程中,loss并不是一直在下降,準確率一直在提升的,會有一些震蕩存在。只要總體趨勢是在收斂就行。若訓練次數夠多(一般上千次,上萬次,或者幾十個epoch)沒收斂,再考慮采取措施解決。


一、數據與標簽方面

1. 沒有對數據進行預處理。數據分類標注是否準確?數據是否干凈?

2. 沒有對數據進行歸一化。由于不同評價指標往往具有不同的量綱和量綱單位,這樣的情況會影響到數據分析的結果,為了消除指標之間的量綱影響,需要進行數據標準化處理,以解決數據指標之間的可比性。原始數據經過數據標準化處理后,各指標處于同一數量級,適合進行綜合對比評價。此外,大部分神經網絡流程都假設輸入輸出是在0附近的分布,從權值初始化到激活函數、從訓練到訓練網絡的優(yōu)化算法。將數據減去均值并除去方差。

3. 樣本的信息量太大導致網絡不足以fit住整個樣本空間。樣本少只可能帶來過擬合的問題,你看下你的training set上的loss收斂了嗎?如果只是validate set上不收斂那就說明overfitting了,這時候就要考慮各種anti-overfit的trick了,比如dropout,SGD,增大minibatch的數量,減少fc層的節(jié)點數量,momentum,finetune等。

4. 標簽的設置是否正確。


二、模型方面

1. 網絡設定不合理。

如果做很復雜的分類任務,卻只用了很淺的網絡,可能會導致訓練難以收斂。應當選擇合適的網絡,或者嘗試加深當前網絡?傮w來說,網絡不是越深越好,開始可以搭建一個3~8層的網絡,當這個網絡實現的不錯時,你可以考慮實驗更深的網絡來提升精確度。從小網絡開始訓練意味著更快,并且可以設置不同參數觀察對網絡的影響而不是簡單的堆疊更多層。


2. Learning rate不合適。

如果太大,會造成不收斂,如果太小,會造成收斂速度非常慢。

在自己訓練新網絡時,可以從0.1開始嘗試,如果loss不下降的意思,那就降低,除以10,用0.01嘗試,一般來說0.01會收斂,不行的話就用0.001. 學習率設置過大,很容易震蕩。不過剛剛開始不建議把學習率設置過小,尤其是在訓練的開始階段。在開始階段我們不能把學習率設置的太低否則loss不會收斂。

我的做法是逐漸嘗試,從0.1,0.08,0.06,0.05 ......逐漸減小直到正常為止。有的時候候學習率太低走不出低估,把沖量提高也是一種方法,適當提高mini-batch值,使其波動不大。

learning rate設大了會帶來跑飛(loss突然一直很大)的問題。這個是新手最常見的情況——為啥網絡跑著跑著看著要收斂了結果突然飛了呢?可能性最大的原因是你用了relu作為激活函數的同時使用了softmax或者帶有exp的函數做分類層的loss函數。

當某一次訓練傳到最后一層的時候,某一節(jié)點激活過度(比如100),那么exp(100)=Inf,發(fā)生溢出,bp后所有的weight會變成NAN,然后從此之后weight就會一直保持NAN,于是loss就飛起來辣。如果lr設的過大會出現跑飛再也回不來的情況。這時候你停一下隨便挑一個層的weights看一看,很有可能都是NAN了。對于這種情況建議用二分法嘗試。0.1~0.0001.不同模型不同任務最優(yōu)的lr都不一樣。


3. 隱層神經元數量錯誤。

在一些情況下使用過多或過少的神經元數量都會使得網絡很難訓練。太少的神經元數量沒有能力來表達任務,而太多的神經元數量會導致訓練緩慢,并且網絡很難清除一些噪聲。

隱層神經元數量可以從256 到1024中間開始設置,然后可以看看研究人員使用的數字,可以用作參考。如果他們使用的數字與這個大不相同,那么可以想象一下這其中的原理。在決定使用隱層的單元數量之前,最為關鍵的是考慮你需要通過這個網絡表達信息的實際值的最少數量,然后再慢慢增加這個數字。

如果你做回歸任務可以考慮使用的神經元數量為輸入或輸出變量的2到3倍。實際上,與其它因素相比,隱藏單元的數量通常對于神經網絡的性能影響相當小。并且在很多情況下,增大所需要隱藏單元的數量僅僅是減慢了訓練速度。


4. 錯誤初始化網絡參數。

如果沒有正確初始化網絡權重,那么網絡將不能訓練。

通常使用的比較多的初始化權重的方法有‘he’,’lecun’,’xavier’在實際應用中這些方法有非常好的性能而網絡偏差通常初始化為0,你可以選擇一個最適合你任務的初始化方式。


5. 沒有正則化。

正則化典型的就是dropout、加噪聲等。即使數據量很大或者你覺得網絡不可能出現過擬合,但是對網絡進行正則化還是很有必要的。

dropout 通常從設定參數為0.75或0.9開始,根據你認為網絡出現過擬合的可能性來調整這個參數。另外,如果你確定這個網絡不會出現過擬合,那么可以將參數設定為0.99。正則化不僅僅可以防止過擬合,并且在這個隨機過程中,能夠加快訓練速度以及幫助處理數據中的異常值并防止網絡的極端權重配置。對數據擴增也能夠實現正則化的效果,最好的避免過擬合的方法就是有大量的訓練數據。


6. Batch Size 過大。

Batch size 設置的過大會降低網絡的準確度,因為它降低了梯度下降的隨機性。另外,在相同情況下batch size 越大那么要達到相同的精確度通常需要訓練更多的epoch。

我們可以嘗試一些較小的batch size 如 16 ,8 甚至是1。使用較小的batch size 那么一個epoch就可以進行更多次的權值更新。這里有兩個好處,第一,可以跳出局部最小點。其二可以表現出更好的泛化性能。


7. 學習率設的不對。

許多深度學習的框架默認開啟了gradient clipping ,這個可以處理gradient explosion問題,這個是非常有用的,但是在默認情況下它也很難找到最佳學習率。如果你正確的清理了數據,刪除了異常值,以及設定了正確的學習率,那么可以不需要使用gradient clipping,偶爾你也會遇到gradient explosion問題,那么你可以開啟gradient clipping。但是,出現這種問題一般情況下表明數據有其它問題,而gradient clipping只是一個臨時的解決方案。


8. 最后一層的激活函數用的不對。

在最后一層使用錯誤的激活函數會導致網絡最終不能輸出你期望的范圍值,最常見的錯誤就是最后一層使用Relu函數,其輸出無負值。

如果是做回歸任務,大多數情況下不需要使用激活函數,除非你知道你所期望的值作為輸出。想象一下你的數據值實際代表了什么,以及再歸一化之后它們的范圍是多少,最有可能的情況是輸出沒有邊界的正數和負數。在這種情況下,最后一層不應該使用激活函數。如果你的輸出值只能在某個范圍內有意義,如0~1范圍內的概率組成。那么最后一層可以使用sigmoid函數。


9. 網絡存在壞梯度。

如果你訓練了幾個epoch誤差沒有改變,那可能是你使用了Relu,可以嘗試將激活函數換成leaky Relu。因為Relu激活函數對正值的梯度為1,負值的梯度為0。因此會出現某些網絡權值的成本函數的斜率為0,在這種情況下我們說網絡是“dead”,因為網絡已經不能更新。


如何通過train loss與test loss分析網絡當下的狀況?


1. train loss 不斷下降,test loss不斷下降,說明網絡仍在學習;


2. train loss 不斷下降,test loss趨于不變,說明網絡過擬合;


3. train loss 趨于不變,test loss不斷下降,說明數據集100%有問題;


4. train loss 趨于不變,test loss趨于不變,說明學習遇到瓶頸,需要減小學習率或批量數目;


5. train loss 不斷上升,test loss不斷上升,說明網絡結構設計不當,訓練超參數設置不當,數據集經過清洗等問題。


本文網址:
下一篇:沒有資料

相關信息:
版權所有 CopyRight 2006-2017 江蘇和訊自動化設備有限公司 常州自動化培訓中心 電話:0519-85602926 地址:常州市新北區(qū)府琛商務廣場2號樓1409室
蘇ICP備14016686號-2 技術支持:常州山水網絡
本站關鍵詞:常州PLC培訓 常州PLC編程培訓 常州PLC編程 常州PLC培訓班 網站地圖 網站標簽
在線與我們取得聯系
色婷婷AV无码久久精品,久久天天躁狠狠躁夜夜97,羞羞麻豆国产精品1区2区3区,啪影院免费线观看视频,思思久久er99精品亚洲