深度學習網路模型訓練過程中的Loss問題合集

2021-10-22 12:54:11 字數 1251 閱讀 3907

把資料集隨機分為訓練集,驗證集和測試集,然後用訓練集訓練模型,用驗證集驗證模型,根據情況不斷調整模型,選擇出其中最好的模型,再用訓練集和驗證集資料訓練出乙個最終的模型,最後用測試集評估最終的模型

訓練集(training set):用於訓練模型。

驗證集(validation set):用於調整和選擇模型。

測試集(test set):用於評估最終的模型。

1.適當的正則化和降維

2.適當降低模型的規模

3.獲取更多的資料集

訓練集loss不下降:

1.模型結構和特徵工程存在問題

2.權重初始化方案有問題。

常用的初始化方案有全零初始化、隨機正態分佈初始化和隨機均勻分布初始化等。建議無腦xaiver normal初始化或者 he normal

3.正則化過度。

l1 l2和dropout是防止過擬合用的,當訓練集loss下不來時,就要考慮一下是不是正則化過度,導致模型欠擬合了。建議bn,他也有一定的防止過擬合的能力。

4.選擇合適的啟用函式、損失函式

卷積神經網路中,卷積層的輸出,一般使用relu作為啟用函式,因為可以有效避免梯度消失,並且線性函式在計算效能上面更加有優勢。而迴圈神經網路中的迴圈層一般為tanh,或者relu,全連線層也多用relu,只有在神經網路的輸出層,使用全連線層來分類的情況下,才會使用softmax這種啟用函式。

而損失函式,對於一些分類任務,通常使用交叉熵損失函式,回歸任務使用均方誤差,有自動對齊的任務使用ctc loss等。損失函式相當於模型擬合程度的乙個評價指標,這個指標的結果越小越好。乙個好的損失函式,可以在神經網路優化時,產生更好的模型引數。

5.選擇合適的優化器和學習速率

6.訓練時間不足

7.模型訓練遇到瓶頸

這裡的瓶頸一般包括:梯度消失、大量神經元失活、梯度**和瀰散、學習率過大或過小等。

8.batch size過大

batch size過小,會導致模型後期搖擺不定,遲遲難以收斂,而過大時,模型前期由於梯度的平均,導致收斂速度過慢。一般batch size 的大小常常選取為32,或者16,有些任務下比如nlp中,可以選取8作為一批資料的個數。

9.資料集未打亂

10.資料集有問題

當乙個資料集雜訊過多,或者資料標註有大量錯誤時,會使得神經網路難以從中學到有用的資訊,從而出現搖擺不定的情況。

11.未進行歸一化

12.特徵工程中對資料特徵的選取有問題

測試集loss不下降:

1.應用場景不一致

2.雜訊問題

的訓練過程 模型訓練過程中累計auc

在平時計算auc的時候,大都是使用 sklearn.metrics.roc auc score 來計算。一般操作是將每個batch 出來的結果 拼接起來,然後扔到該函式中計算。但是如果測試集量級過大 比如 10億量級 每個樣本的 結果拼接起來之後至少需要 3g記憶體。這個開銷顯然不是我們想要的。有什...

的訓練過程 高階 深度學習訓練過程視覺化

給機器學習演算法與python學習加星標,提公升ai技能 編輯丨極市平台 機器學習實驗室 datawhale 深度學習訓練過程一直處於黑匣子狀態,有很多同學問我具體怎麼解釋?其實很多還是無法可解釋,但是通過視覺化,具體可以知道深度學習在訓練過程到底學習了哪些特徵?到底對該目標的哪些特徵感興趣?這些我...

深度網路的訓練過程與方法

這一步是網路引數初始化得過程,區別於傳統神經網路初值隨機初始化,深度學習模型通過無監督學習輸入資料進行初始化,因此這個初值更接近全域性最優,從而能夠取得更好的效果。逐層構建單層神經元,每層採用wake sleep演算法進行調優,每次僅調整一層,逐層調整 這個過程看作是乙個feature learni...