CNN訓練中的技巧
【原文:http://www.cnblogs.com/jianyingzhou/p/4346287.html】
轉自:
http://weibo.com/p/1001603816330729006673
說明:這個翻譯應該是來自原文:http://yyue.blogspot.hk/2015/01/a-brief-overview-of-deep-learning.html
翻譯網上的哈,我覺得有很大一部分從沒看到過,所以就翻譯了下,如有不對的地方,歡迎指正:
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:評價最終結果的時候,多做幾次,然後平均一下他們的結果。
相關文章
- 「GAN優化」GAN訓練的小技巧優化
- pytorch訓練簡單的CNN(visdom進行視覺化)PyTorchCNN視覺化
- Keras 練習2 - CNNKerasCNN
- 通過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?模型
- 透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?模型
- 訓練生成對抗網路的一些技巧和陷阱
- 目標檢測入門系列手冊三:Fast R-CNN 訓練教程ASTCNN
- 目標檢測入門系列手冊四:Faster R-CNN 訓練教程ASTCNN
- Pytorch版Faster R-CNN 原始碼分析+方法流程詳解——訓練篇PyTorchASTCNN原始碼
- 自訓練 + 預訓練 = 更好的自然語言理解模型模型
- 機器學習的訓練集機器學習
- 瀏覽器中的機器學習:使用預訓練模型瀏覽器機器學習模型
- YOLOv3 中的多尺度融合與訓練YOLO
- 生成對抗網路綜述:從架構到訓練技巧架構
- keras中VGG19預訓練模型的使用Keras模型
- 關於訓練神經網路的諸多技巧Tricks(完全總結版)神經網路
- 【vjudge訓練記錄】11月個人訓練賽1
- 如何解決 Iterative 半監督訓練 在 ASR 訓練中難以落地的問題丨RTC Dev Meetupdev
- 深度學習與CV教程(6) | 神經網路訓練技巧 (上)深度學習神經網路
- acm訓練題ACM
- 【sql】訓練五SQL
- 【sql】訓練四SQL
- 【sql】訓練三SQL
- 【sql】訓練二SQL
- 【sql】訓練一SQL
- IOS Swift 訓練iOSSwift
- 4.17訓練賽
- 取出預訓練模型中間層的輸出(pytorch)模型PyTorch
- 從玩遊戲中可以得到的訓練與學習(轉)遊戲
- 不使用殘差連線,ICML新研究靠初始化訓練上萬層標準CNNCNN
- 深度神經網路的分散式訓練概述:常用方法和技巧全面總結神經網路分散式
- 訓練的評估函式函式
- EdgeBoard中CNN架構的剖析CNN架構
- Unity中利用遺傳演算法訓練MLPUnity演算法
- 愈發熟練的 CSS 技巧CSS
- CosmoGAN:訓練GAN,讓AI尋找宇宙中的暗物質AI
- 自然語言處理中的語言模型預訓練方法自然語言處理模型
- Deep learning:五十一(CNN的反向求導及練習)CNN求導