深度學習之常見tricks

鏈接:https://chenrudan.github.io/blog/2015/08/04/dl5tricks.html

本文主要給出了在實現網絡或者調節代碼過程使用的以及平時看一些文章記錄下來的一些小技巧,主要針對卷積網絡和圖像處理。就個人感受,有些技巧還是非常有效的,而且通常可以通過看開源庫的一些文檔或者源代碼來發掘這些內容,最後能夠稱爲自己所用。

構造validation set

一般數據集可能不會給出驗證集,所以自己會從給的訓練集中按照一定比例(9:1)分離出驗證集。

增加訓練數據

爲了更好的訓練網絡,有時候需要增加原始數據集,一般有以下方法[1]:

  • 沿着x軸將圖片左右翻轉
  • 隨機的剪切、縮放、旋轉
  • 用pca來改變RGB的強度值,產生分別對應的特徵值和特徵向量,然後用均值爲0方差爲0.1的隨機數與特徵值和特徵向量相乘得到新的數據[2]

預處理

常見的是減均值、除方差,還有變化到-1~1,主要針對不同尺度的特徵,例如房價預測的例子中,每個房子的房屋大小和臥室數量就不在一個數量級上,這種情況就需要對每一維特徵進行尺度變換normalize,還有的方法是使用pca白化。但是就圖像處理領域,通常就減去一個均值就可以直接拿來計算。

權重初始化

不要全部初始化爲0,這樣會導致大部分的deltaw都一樣,一般用高斯分佈或者uniform分佈。但是這樣的分佈會導致輸出的方差隨着輸入單元個數而變大,因此需要除以fan in(輸入個數的平方根)。

卷積tricks

  • 圖片輸入是2的冪次方,例如32、64、96、224等。
  • 卷積核大小是3*3或者5*5。
  • 輸入圖片上下左右需要用0補充,即padding,且假如卷積核大小是5那麼padding就是2(圖片左右上下都補充2),卷積核大小是3padding大小就是1。

pooling層tricks

poolin層也能防止過擬合,使用overlapped pooling,即用來池化的數據有重疊,但是pooling的大小不要超過3。

max pooling比avg pooling效果會好一些。

避免overfitting

  • drop out能夠避免過擬[1],一般在加在全連接層後面[3],但是會導致收斂速度變慢。
  • 正則化也能避免過擬合,L2正則l2正則懲罰了峯值權重,l1正則會導致稀疏權重,趨近於0,l1會趨向選擇有用的輸入。又或者可以給給權重矢量的模加上上邊界(3 or 4),更新時對delta w進行歸一化。

調參

使用pretrain好的網絡參數作爲初始值。然後fine-tuning,此處可以保持前面層數的參數不變,只調節後面的參數。但是finetuning要考慮的是圖片大小和跟原數據集的相關程度,如果相關性很高,那麼只用取最後一層的輸出,不相關數據多就要finetuning比較多的層。

初始值設置爲0.1,然後訓練到一定的階段除以2,除以5,依次減小。

加入momentum項[2],可以讓網絡更快的收斂。

  • 節點數增加,learning rate要降低
  • 層數增加,後面的層數learning rate要降低

激勵函數

Sigmoid作爲激勵函數有飽和和梯度消失的現象,在接近輸出值0和1的地方梯度接近於0(可通過sigmoid的分佈曲線觀察出)。因而可採用Rectified Linear Units(ReLUs)作爲激勵函數,這樣會訓練的快一些,但是relu比較脆弱,如果某次某個點梯度下降的非常多,權重被改變的特別多,那麼這個點的激勵可能永遠都是0了,還有帶參的prelu、產生隨機值的rrelu等改進版本。但是leaky版本(0換成0.01)的效果並不是很穩定。

通過做圖來觀察網絡訓練的情況

可以畫出隨着不同參數訓練集測試集的改變情況,觀察它們的走勢圖來分析到底什麼時候的參數比較合適。

  • 不同學習率與loss的曲線圖,橫座標是epoch,縱座標是loss或者正確率
  • 不同的batchsize與loss的曲線圖,座標同上

數據集不均衡

這種情況如果數據集跟imagenet的比較相近,可以直接用finetuning的方法,假如不相近,首先考慮重新構造數據集的每一類個數,再次可以減少數據量比較大的類(減採樣),並且複製數據量比較小的類(增採樣)。

以上是在實現卷積神經網絡中使用過的和平時看文章中提及到的一些技巧,大多數現在的開源軟件都是已經實現好了,直接調用使用即可。

參考:[1] http://cs231n.stanford.edu/

[2]http://lamda.nju.edu.cn/weixs/project/CNNTricks/CNNTricks.html

[3] http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf

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