深度學習已經成為解決許多具有挑戰性的現實世界問題的方法。對目標檢測,語音識別和語言翻譯來說,這是迄今為止表現最好的方法。許多人將深度神經網絡(DNNs)視為神奇的黑盒子,我們放進去一堆數據,出來的就是我們的解決方案!事實上,事情沒那么簡單。
在設計和應用DNN到一個特定的問題上可能會遇到很多挑戰。為了達到現實世界應用所需的性能標準,對數據準備,網絡設計,訓練和推斷等各個階段的正確設計和執行至關重要。
今天給大家講講DNN(深度神經網絡)在訓練過程中遇到的一些問題,然后我們應該怎么去注意它,并學會怎么去訓練它。
1、數據集的準備:
必須要保證大量、高質量且帶有準確標簽的數據,沒有該條件的數據,訓練學習很困難的(但是最近我看了以為作者寫的一篇文章,說明不一定需要大量數據集,也可以訓練的很好,有空和大家來分享其思想---很厲害的想法);
2、數據預處理:
這個不多說,就是0均值和1方差化,其實還有很多方法;
3、Minibatch:
這個有時候還要根據你的硬件設備而定,一般建議用128,8這組,但是128,1也很好,只是效率會非常慢,注意的是:千萬不要用過大的數值,否則很容易過擬合;
4、梯度歸一化:
其實就是計算出來梯度之后,要除以Minibatch的數量,這個可以通過閱讀源碼得知(我之前有寫過SGD);
5、學習率:
① 一般都會有默認的學習率,但是剛開始還是用一般的去學習,然后逐漸的減小它;
② 一個建議值是0.1,適用于很多NN的問題,一般傾向于小一點;但是如果對于的大數據,何凱明老師也說過,要把學習率調到很小,他說0.00001都不為過(如果記得不錯,應該是這么說的);
③ 一個對于調度學習率的建議:如果在驗證集上性能不再增加就讓學習率除以2或者5,然后繼續,學習率會一直變得很小,到最后就可以停止訓練了;
④ 很多人用的一個設計學習率的原則就是監測一個比率(每次更新梯度的norm除以當前weight的norm),如果這個比率在10e-3附近,且小于這個值,學習會很慢,如果大于這個值,那么學習很不穩定,由此會帶來學習失敗。
6、驗證集的使用:
使用驗證集,可以知道什么時候開始降低學習率和什么時候停止訓練;
7、weight初始化:
① 如果你不想繁瑣的話,直接用0.02*randn(num_params)來初始化,當然別的值也可以去嘗試;
② 如果上面那個建議不太好使,那么就依次初始化每一個weight矩陣用init_scale / sqrt(layer_width) * randn,init_scale可以被設置為0.1或者1;
③ 初始化參數對結果的影響至關重要,要引起重視;
④ 在深度網絡中,隨機初始化權重,使用SGD的話一般處理的都不好,這是因為初始化的權重太小了。這種情況下對于淺層網絡有效,但是當足夠深的時候就不行,因為weight更新的時候,是靠很多weight相乘的,越乘越小,類似梯度消失的意思。
8、RNN&&LSTM(這方面沒有深入了解,借用別人的意思):
如果訓練RNN或者LSTM,務必保證gradient的norm被約束在15或者5(前提還是要先歸一化gradient),這一點在RNN和LSTM中很重要;
9、梯度檢查:
檢查下梯度,如果是你自己計算的梯度;如果使用LSTM來解決長時依賴的問題,記得初始化bias的時候要大一點;
10、數據增廣:
盡可能想辦法多的擴增訓練數據,如果使用的是圖像數據,不妨對圖像做一點扭轉,剪切,分割等操作來擴充數據訓練集合;
11、dropout:(先空著,下次我要單獨詳細講解Dropout)
12、評價結果:
評價最終結果的時候,多做幾次,然后平均一下他們的結果。
補充:
1、選擇優化算法
傳統的隨機梯度下降算法雖然適用很廣,但并不高效,最近出現很多更靈活的優化算法,例如Adagrad、RMSProp等,可在迭代優化的過程中自適應的調節學習速率等超參數,效果更佳;
2、參數設置技巧
無論是多核CPU還是GPU加速,內存管理仍然以字節為基本單元做硬件優化,因此將參數設定為2的指數倍,如64,128,512,1024等,將有效提高矩陣分片、張量計算等操作的硬件處理效率;
3、正則優化
除了在神經網絡單元上添加傳統的L1/L2正則項外,Dropout更經常在深度神經網絡應用來避免模型的過擬合。初始默認的0.5的丟棄率是保守的選擇,如果模型不是很復雜,設置為0.2就可以;
4、其他方法
除了上述訓練調優的方法外,還有其他一些常用方法,包括:使用mini-batch learning方法、遷移訓練學習、打亂訓練集順序、對比訓練誤差和測試誤差調節迭代次數、日志可視化觀察等等。
審核編輯 :李倩
-
語音識別
+關注
關注
38文章
1742瀏覽量
112805 -
數據集
+關注
關注
4文章
1209瀏覽量
24780 -
深度學習
+關注
關注
73文章
5511瀏覽量
121392
原文標題:基礎入門:“煉丹師”——深度學習訓練技巧
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論