DeepLearning Trick

轉載自:
深度學習(deep learning)優化調參細節(trick)

深度學習中的技巧:
初始化參數儘量小一些,這樣 softmax 的迴歸輸出更加接近均勻分佈,使得剛開始網絡並不確信數據屬於哪一類;另一方面從數值優化上看我們希望我們的參數具有一致的方差(一致的數量級),這樣我們的梯度下降法下降也會更快。同時爲了使每一層的激勵值保持一定的方差,我們在初始化參數(不包括偏置項)的方差可以與輸入神經元的平方根成反比
學習率(learning rate)的設置應該隨着迭代次數的增加而減小,個人比較喜歡每迭代完一次epoch也就是整個數據過一遍,然後對學習率進行變化,這樣能夠保證每個樣本得到了公平的對待
滑動平均模型,在訓練的過程中不斷的對參數求滑動平均這樣能夠更有效的保持穩定性,使其對當前參數更新不敏感。例如加動量項的隨機梯度下降法就是在學習率上應用滑動平均模型。
在驗證集上微小的提升未必可信,一個常用的準則是增加了30個以上的正確樣本,能夠比較確信算法有了一定的提升
這裏寫圖片描述
如上圖所示,不要太相信模型開始的學習速度,這與最終的結果基本沒有什麼關係。一個低的學習速率往往能得到較好的模型。
在深度學習中,常用的防止過擬合的方法除了正則化,dropout和pooling之外,還有提前停止訓練的方法——就是看到我們在驗證集的上的正確率開始下降就停止訓練。
當激活函數是RELU時,我們在初始化偏置項時,爲了避免過多的死亡節點(激活值爲0)一般可以初始化爲一個較小的正值。
基於隨機梯度下降的改進優化算法有很多種,在不熟悉調參的情況,建議使用Adam方法
訓練過程不僅要觀察訓練集和測試集的loss是否下降、正確率是否提高,對於參數以及激活值的分佈情況也要及時觀察,要有一定的波動。
如果我們設計的網絡不work,在訓練集的正確率也很低的話,我們可以減小樣本數量同時去掉正則化項,然後進行調參,如果正確率還是不高的話,就說明我們設計的網絡結果可能有問題。
fine-tuning的時候,可以把新加層的學習率調高,重用層的學習率可以設置的相對較低。
卷積神經網絡(CNN)中的獨有技巧:

CNN中將一個大尺寸的卷積核可以分解爲多層的小尺寸卷積核或者分成多層的一維卷積。這樣能夠減少參數增加非線性
CNN中的網絡設計應該是逐漸減小圖像尺寸,同時增加通道數,讓空間信息轉化爲高階抽象的特徵信息。
CNN中可以利用Inception方法來提取不同抽象程度的高階特徵,用ResNet的思想來加深網絡的層數。
CNN處理圖像時,常常會對原圖進行旋轉、裁剪、亮度、色度、飽和度等變化以增大數據集增加魯棒性。

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