深度學習調參技巧

2021-08-28 06:57:02 字數 1177 閱讀 5047

1:準備資料:務必保證有大量、高質量並且帶有乾淨標籤的資料,沒有如此的資料,學習是不可能的

2:預處理:這個不多說,就是0均值和1方差化

3:minibatch:建議值128,1最好,但是效率不高,但是千萬不要用過大的數值,否則很容易過擬合

4:梯度歸一化:其實就是計算出來梯度之後,要除以minibatch的數量。這個不多解釋

5:下面主要集中說下學習率

5.1:總的來說是用乙個一般的學習率開始,然後逐漸的減小它

5.2:乙個建議值是0.1,適用於很多nn的問題,一般傾向於小一點。

5.3:乙個對於排程學習率的建議:如果在驗證集上效能不再增加就讓學習率除以2或者5,然後繼續,學習率會一直變得很小,到最後就可以停止訓練了。

5.4:很多人用的乙個設計學習率的原則就是監測乙個比率(每次更新梯度的norm除以當前weight的norm),如果這個比率在10-3附近,如果小於這個值,學習會很慢,如果大於這個值,那麼學習很不穩定,由此會帶來失敗。

6:使用驗證集,可以知道什麼時候開始降低學習率,和什麼時候停止訓練。

7:關於對weight初始化的選擇的一些建議:

7.1:如果你很懶,直接用0.02*randn(num_params)來初始化,當然別的值你也可以去嘗試

7.2:如果上面那個不太好使,那麼久依次初始化每乙個weight矩陣用init_scale / sqrt(layer_width) * randn,init_scale可以被設定為0.1或者1

7.3:初始化引數對結果的影響至關重要,要引起重視。

7.4:在深度網路中,隨機初始化權重,使用sgd的話一般處理的都不好,這是因為初始化的權重太小了。這種情況下對於淺層網路有效,但是當足夠深的時候就不行了,因為weight更新的時候,是靠很多weight相乘的,越乘越小,有點類似梯度消失的意思(這句話是我加的)

8:如果訓練rnn或者lstm,務必保證gradient的norm被約束在15或者5(前提還是要先歸一化gradient),這一點在rnn和lstm中很重要。

9:檢查下梯度,如果是你自己計算的梯度。

10:如果使用lstm來解決長時依賴的問題,記得初始化bias的時候要大一點

12:盡可能想辦法多的擴增訓練資料,如果使用的是影象資料,不妨對影象做一點扭轉啊之類的,來擴充資料訓練集合。

13:使用dropout

14:評價最終結果的時候,多做幾次,然後平均一下他們的結果。

深度學習調參技巧

模型引數的一般設定 epoch迭代幾十到幾百次。mini batch size從幾十到幾百,為了更好的利用硬體加速,通常取8的倍數,例如128,256。learning rate取0.1 資料集越大,模型越複雜,應取值越小 weight decay取0.005,momentum取0.9。dropou...

調參煉丹 深度學習訓練的小技巧,調參經驗。

經常會被問到你用深度學習訓練模型時怎麼樣改善你的結果呢?然後每次都懵逼了,一是自己懂的不多,二是實驗的不多,三是記性不行忘記了。所以寫這篇部落格,記錄下別人以及自己的一些經驗。ilya sutskever hinton的學生 講述了有關深度學習的見解及實用建議 獲取資料 確保要有高質量的輸入 輸出資...

深度學習調參策略(二)

超引數 hyper parameter 是困擾神經網路訓練的問題之一,因為這些引數不可通過常規方法學習獲得。神經網路經典五大超引數 學習率 leraning rate 權值初始化 weight initialization 網路層數 layers 單層神經元數 units 正則懲罰項 regular...