深度模型調參知識總結

2021-08-21 04:05:52 字數 2594 閱讀 2578

深度模型調參知識總結

先保證資料質量再去調參

什麼是高質量的資料?

高質量資料集應該包括以下特徵:

怎樣獲取高質量的資料?

二、調參原則

首先分析自己模型的弱點,而不是隨意地改進,我們需要根據視覺化模型誤差(表現極差的場景)以及效能引數來確定模型問題。隨意做改進反而適得其反,會成比例的增加訓練成本,而回報極小。

給模型一點時間,要根據任務難度留給模型一定的學習時間,不能說前面一段時間沒起色就放棄了。有些情況下就是前面一段時間看不出起色,然後開始穩定學習。

準確率雖然是評測指標,但是訓練過程中還是要注意loss的。你會發現有些情況下,準確率是突變的,原來一直是0,可能保持上千迭代,然後突然變1。而loss是不會有這麼詭異的情況發生的,畢竟優化目標是loss。

調參

(1)調哪些引數

學習率,網路層數,每層的結點數,batch_size,剪枝率,動量因子,訓練的輪數,學習率衰減率,優化器,正則化係數等等。

(2)怎樣去調這些引數?

畫圖是乙個很好的習慣,一般是訓練資料遍歷一輪以後,就輸出一下訓練集和驗證集準確率。同時畫到一張圖上。通過觀察loss和評價指標的變化來調參。

學習率一般是從較小的值開始嘗試,常見的學習率為(0.00010.002 0.0005 0.001 0.002 0.005 0.01 0.020.05)。學習率一般傾向於小一點,但是如果對於的大資料,一般需要要把學習率調到很小,0.00001都不為過。如果在驗證集上效能不再增加就讓學習率除以2或者5,然後繼續,學習率會一直變得很小,到最後就可以停止訓練了;學習率太大:loss的值會很大,或者為nan。太小: 很長時間loss的值不會有變化。

低的learning_rate曲線會趨近於線性(藍線),過高的learning_rate曲線會趨近於指數(綠線),高的學習率會使得曲線迅速下降,但是可能會在乙個不好的結果下收斂。過高的學習率甚至會使得結果往差的方向發展(黃線)損失函式突然上公升(可能由梯度突然上公升引起)。比較合理的學習率應該體現出入(紅色線)所示的形狀。

曲線的震幅反映了batch_size選擇的合理程度,一般batch_size大的話曲線會變得更加平滑,也就是說訓練的引數和實際的引數擬合度更高。當曲線振幅較大,我們可以在記憶體和視訊記憶體允許的範圍內,適當增加batch_size來平滑準確率曲線。我們用的隨機梯度下降是建立在batch基礎上的,合適的batchsize對你模型的優化是比較重要的,這個引數倒不需要微調,在乙個大致數量即可,batchsize太大,一般不會對結果有太大的影響,而batchsize太小的話,結果有可能很差。由於無論是多核cpu還是gpu加速,記憶體管理仍然以位元組為基本單元做硬體優化,因此將引數設定為2的指數倍,如16,24,32,64,128等,將有效提高矩陣分片、張量計算等操作的硬體處理效率。

藍色的曲線顯示出驗證準確率和訓練準確率差別較大,說明可能出現過擬合現象,這種情況可以通過增加正則化項的懲罰係數,或者增加訓練樣本大小。

過擬合:表現形式:訓練集準確率較高,測試集準確率比較低

解決辦法:增加資料、資料增強、引數範數懲罰l1、l2、提前終止、增加dropout值、batchnormalization

綠色曲線顯示出驗證準確率和訓練準確率差別較小,說明可能訓練模型過小,可以適當增加網路的引數。

欠擬合:表現形式:訓練集,測試集準確率都很低

解決辦法:增加網路層數,增加節點數,減少dropout值,減少l2正則值等等

epoch,應該要和模型表現搭配,如果你的模型已經過擬合了,你就沒必要繼續跑了;相反,如果epoch太小,epoch跑完了,模型的loss還在下降,模型還在優化,那麼這個epoch就太小了,應該增加。

一般取0.3,0.5,0.7。一般如果設定為0.7loss降了的話,不用再設定0.5的實驗。如果不知道怎麼設比例的話,就直接設定為0.5。如果模型不是很複雜,設定為0.3就可以。

調參策略

實踐中,一般先進行初步範圍搜尋,然後根據好結果出現的地方,再縮小範圍進行更精細的搜尋。建議先參考相關**,以**中給出的引數作為初始引數。至少**中的引數,是個不差的結果。如果找不到參考,那麼只能自己嘗試了。可以先從比較重要,對實驗結果影響比較大的引數開始,同時固定其他引數,得到乙個差不多的結果以後,在這個結果的基礎上,再調其他引數。例如學習率一般就比正則值,dropout值重要的話,學習率設定的不合適,不僅結果可能變差,模型甚至會無法收斂。如果實在找不到一組引數,可以讓模型收斂。那麼就需要檢查,是不是其他地方出了問題,例如模型實現,資料。

調參只是為了尋找合適的引數,而不是產出最終模型。一般在小資料集上合適的引數,在大資料集上效果也不會太差。因此可以嘗試對資料進行精簡,以提高速度,在有限的時間內可以嘗試更多引數。對訓練資料進行取樣。例如原來100w條資料,先取樣成1w,進行實驗看看。減少訓練類別。例如手寫數字識別任務,原來是10個類別,那麼我們可以先在2個類別上訓練,看看結果如何。

得到所有候選引數,然後每次從中隨機選擇進行訓練。分階段從粗(較大超引數範圍訓練較少週期)到細(較小超引數範圍訓練較長週期)進行搜尋。

其他方法

批正則化技術,dropout技術,權重衰減

深度學習總結 七 調參經驗

觀察loss勝於觀察準確率,loss設計要合理,對比訓練集和驗證集的loss relu可以很好的防止梯度瀰散問題,當然最後一層的啟用函式千萬慎用relu,如果是分類的用softmax batchnorm可以大大加快訓練速度和模型效能 dropout防止過擬合,可直接設定為0.5,即一半一半,測試的時...

模型調參部分

模型調參 經過前面的缺失值 異常值得處理以及特徵工程的構建,選擇了模型進行訓練以後,就可以開始進行尋訓練模型。雖然說特徵工程才是真正決定乙個模型最終的 能力,但是乙個優秀的調參也是很重要的一部,可以在一定程度上提高 能力,避免一定程度的過擬合。本次主要使用xgb進行模型訓練,使用sklearn中的g...

調參 深度學習模型24種優化策略

2.深度學習模型優化策略 2.2 更好的泛化技術 2.3 更好的 技術 2.4 網格搜尋超引數 深度學習神經網路學習對映功能。開發模型需要歷史資料作為訓練資料。該資料由觀察值或樣本組成,輸入元素描述了條件,輸出元素捕獲了樣本特徵。通常將輸出為數量的問題描述為回歸 建模問題 而將輸出作為標籤的問題通常...