深度學習調參體驗(二)

深度學習調參體驗(二)

  1. 激活函數選擇:

常用的激活函數有relu、leaky-relu、sigmoid、tanh等。對於輸出層,多分類任務選用softmax輸出,二分類任務選用sigmoid輸出,迴歸任務選用線性輸出。而對於中間隱層,則優先選擇relu激活函數(relu激活函數可以有效的解決sigmoid和tanh出現的梯度彌散問題,多次實驗表明它會比其他激活函數以更快的速度收斂)。另外,構建序列神經網絡(RNN)時要優先選用tanh激活函數。

2、學習率設定:

一般學習率從0.1或0.01開始嘗試。學習率設置太大會導致訓練十分不穩定,甚至出現Nan,設置太小會導致損失下降太慢。學習率一般要隨着訓練進行衰減。衰減係數設0.1,0.3,0.5均可,衰減時機,可以是驗證集準確率不再上升時,或固定訓練多少個週期以後自動進行衰減。

3、防止過擬合:

一般常用的防止過擬合方法有使用L1正則項、L2正則項、dropout、提前終止、數據集擴充等。如果模型在訓練集上表現比較好但在測試集上表現欠佳可以選擇增大L1或L2正則的懲罰力度(L2正則經驗上首選1.0,超過10很少見),或增大dropout的隨機失活概率(經驗首選0.5);或者當隨着訓練的持續在測試集上不增反降時,使用提前終止訓練的方法。當然最有效的還是增大訓練集的規模,實在難以獲得新數據也可以使用數據集增強的方法,比如CV任務可以對數據集進行裁剪、翻轉、平移等方法進行數據集增強,這種方法往往都會提高最後模型的測試精度。

4、優化器選擇:

如果數據是稀疏的,就用自適應方法,即 Adagrad, Adadelta, RMSprop, Adam。整體來講,Adam 是最好的選擇。SGD 雖然能達到極小值,但是比其它算法用的時間長,而且可能會被困在鞍點。如果需要更快的收斂,或者是訓練更深更復雜的神經網絡,需要用一種自適應的算法。

5、殘差塊與BN層:

如果你希望訓練一個更深更復雜的網絡,那麼殘差塊絕對是一個重要的組件,它可以讓你的網絡訓練的更深。

BN層具有加速訓練速度,有效防止梯度消失與梯度爆炸,具有防止過擬合的效果,所以構建網絡時最好要加上這個組件。

6.自動調參方法:

(1)Grid Search:網格搜索,在所有候選的參數選擇中,通過循環遍歷,嘗試每一種可能性,表現最好的參數就是最終的結果。其原理就像是在數組裏找最大值。缺點是太費時間了,特別像神經網絡,一般嘗試不了太多的參數組合。

(2)Random Search:經驗上,Random
Search比Gird Search更有效。實際操作的時候,一般也是先用Gird Search的方法,得到所有候選參數,然後每次從中隨機選擇進行訓練。另外Random
Search往往會和由粗到細的調參策略結合使用,即在效果比較好的參數附近進行更加精細的搜索。

(3)Bayesian Optimization:貝葉斯優化,考慮到了不同參數對應的
實驗結果值,因此更節省時間,貝葉斯調參比Grid Search迭代次數少, 速度快;而且其針對非凸問題依然穩健。

7.參數隨機初始化與數據預處理:

參數初始化很重要,它決定了模型的訓練速度與是否可以躲開局部極小。relu激活函數初始化推薦使用He normal,tanh初始化推薦使用Glorot normal,其中Glorot normal也稱作Xavier normal初始化;數據預處理方法一般也就採用數據歸一化即可。

深度學習debug的流程策略

針對上面的問題,小哥總結出調試深度學習模型的第一要義——悲觀主義。

既然消除模型中的錯誤很難,我們不如先從簡單模型入手,然後逐漸增加模型的複雜度。

他把這個過程分爲5個步驟:

  1. 從最簡單模型入手;

  2. 成功搭建模型,重現結果;

  3. 分解偏差各項,逐步擬合數據;

  4. 用由粗到細隨機搜索優化超參數;

  5. 如果欠擬合,就增大模型;如果過擬合,就添加數據或調整。

  6. 學習率:

· 執行學習率範圍測試以確定“大”的學習率。

· 一輪測試確定最大學習速率,將最小學習速率設置爲最大學習速率的十分之一。

  1. 動量:

· 用短期動量值0.99、0.97、0.95和0.9進行測試,以獲得動量的最佳值;

· 如果使用週期學習率計劃,最好從該最大動量值開始循環設置動量,並隨着學習率的增加而減小到0.8或0.85;

  1. 批量大小:

· 根據硬件條件使用儘可能大的批量大小,然後比較不同批量大小的性能;

· 小批量添加正規化的效果大,而大批量添加的正則化效果小,因此在適當平衡正規化效果的同時利用好它;

· 使用更大的批量通常會更好,這樣就可以使用更大的學習率;

  1. 權重衰減:

· 網格搜索以確定適當的幅度,但通常不需要超過一個有效數字精度;

· 更復雜的數據集需要較少的正則化,因此設置爲較小的權重衰減值,例如10-4、10-5、10^-6、0;

· 淺層結構需要更多的正則化,因此設置更大的權重衰減值,例如10-2、10-3、10^-4。

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