神經網絡模型不收斂原因、解決辦法


理論上,只要訓練樣本足夠多,神經網絡可以擬合原始數據分佈。

0.可能原因彙總

  • 沒有對數據進行歸一化
  • 忘記檢查輸入和輸出
  • 沒有對數據進行預處理
  • 沒有對數據正則化
  • 使用過大的樣本
  • 使用不正確的學習率
  • 在輸出層使用錯誤的激活函數
  • 網絡中包含壞梯度
  • 初始化權重錯誤
  • 過深的網絡
  • 隱藏單元數量錯誤

1.檢查

1.1.確保:數據乾淨、標註正確

如:檢查lable是否有錯,有的時候圖像類別的label設置成1,2,3正確設置應該爲0,1,2。

1.2.樣本的信息量太大

  • 數據越多越好。
  • 數據庫太小一般不會帶來不收斂的問題。樣本少只可能帶來過擬合的問題。訓練誤差收斂、驗證誤差不收斂,就是過擬合了。進行anti-overfit的方法:Dropout,增加minibatch數量,減少Fully-connect層的節點數,SGD,momentum,finetune等。
  • 樣本的信息量太大,導致網絡不足以擬合整個樣本空間,會導致不收斂。使用太大的訓練樣本可能會對網絡在訓練過程中的準確性造成負面影響,這是由於大樣本會破壞梯度下降的隨機性
  • 文章說,改變圖片大小可以解決收斂問題。

1.3.確保:歸一化、標準化

歸一化:把數值壓縮到0~1,比如減去最小值,再除以最大值與最小值之差。
標準化:壓縮到一個分佈, 比如每列減去該列的均值,然後每列除以該列的標準差,獲得標準正態分佈。

不同評價指標往往具有不同的量綱和量綱單位,這樣的情況會影響到數據分析的結果,爲了消除指標之間的量綱影響,需要進行數據標準化處理,以解決數據指標之間的可比性。原始數據經過數據標準化處理後,各指標處於同一數量級,適合進行綜合對比評價。

1.4.確保:數據Shuffle

數據不打亂,網絡極有可能擬合前面幾個batch的樣本分佈。

1.5.數據預處理

這個有點沒懂。https://zhuanlan.zhihu.com/p/36369878

1.6.確保:y與loss是搭配的

注意:具體的API定義。
如:分類模型的交叉熵cross entropy。在pytorch中,target是類別,不需要one-hot,模型輸出是logit,不需要softmax。在keras和TensorFlow中,需要softmax。

1.7.確保輸出層的激活函數正確

在最後一層使用激活函數時,無法產生所需全部範圍的值。假使使用Relu這類限制範圍的函數,神經網絡便只會訓練得到正值。

2.模型優化

2.1.learning rate設大了

常用:0.1~0.0001
不同模型、不同任務,最優的學習率lr都不一樣。

 學習率可從0.1逐步減小。
 有的時候候學習率太低走不出局部最小值,把衝量momentum提高也是一種方法,同時適當提高mini-batch值,使其波動不大。
 學習率設置小一點,在跑飛(下圖Epoch=2300時)的情況下,有可能拉回來。

跑飛:網絡都要收斂了,突然loss增大且不降下去了。

在這裏插入圖片描述

用ReLU作爲激活函數的同時,
(1)分類層使用了softmax
(2)損失函數爲帶有exp的函數
有上述兩種情況之一時,當某一次訓練傳到最後一層的時候,某一節點激活過度(比如100),那麼exp(100)=Infexp(100)=Inf,發生溢出。此時,BP後所有的weight會變成NAN。而且,此後,weight就會一直保持NAN,於是loss就跑飛了。
大神試驗

2.2.batchsize

震盪比較大時,可以增大batchsize。

2.3.網絡設定不合理

  1. 數據量少時降低模型複雜度,如減少層數、減少kernel number。
  2. 複雜的分類任務,卻只用了很淺的網絡,可能會導致訓練難以收斂。因此,可以加深當前網絡。

2.4.數據正則化

 正則化通常以dropout層添加噪聲、或網絡隨機過程的某種形式進行。
 基本方法是在網絡層之間添加dropout,設置從中到高的訓練概率。例如0.75或0.9。如果你仍然認爲不太可能出現過擬合,可以將此參數設置爲較高的值例如0.99。

2.5.ReLU激活函數導致壞梯度

嘗試切換到leaky ReLU或ELU。

2.6.正確初始化權重

參考

https://www.jianshu.com/p/7dda0094164c
https://blog.csdn.net/rosefun96/article/details/78873226
https://blog.csdn.net/qq_32571391/article/details/86647001
https://blog.csdn.net/comway_Li/article/details/81878400
https://zhuanlan.zhihu.com/p/36369878

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章