下面來介紹幾種簡單的訓練技巧:
1.首先說一下filter(感受野)的概念:感受野的大小即特征圖中的某一單元是從原始輸入圖像中多大的一塊區域中提取的特征;
如上圖,第一次卷積后得到的特征圖中,每一個小單元的感受野大小為3*3,而第二次卷積后特征圖中的每一個小單元對應的感受野大小為5*5,以此類推,如果
用三層3*3的filter,那么最后一層特征圖中每一個小單元的感受野大小即為7*7。
同時我們可以推論:卷積層數越多,越后面的特征圖中的每個單元的感受野大小就越大,特征提取的效果就越好。
這時我們有一個問題,能不能用一層7*7的filter來代替三層3*3的filter?
由上可知,7*7的filter需要的參數個數為49C*C,而3層3*3的filter需要的參數個數為27C*C;一方面需要的參數個數更少,計算復雜度降低了,另一方面三層3*3的filter即有了三層的激活函數,
使得分類器的非線性更好,因此我們選擇3層3*3的filter;
為了得到上面的兩個效果,我們還可以使用今年大放異彩的深度參差網絡,如下:
(1*1*C)*C/2+3*3*C/2*C/2+1*1*C/2*C=3.25C*C;
(3*3*C)*C=9C*C;
更少的參數和更好的非線性,而且層數增加,參數個數最多停滯,但不會增加!
總結一下,就是:(1)堆疊小的filters;
(2)比如融合3*3的filter和1*1的filter來組成深度參差網絡;
(3)將N*N的filter拆分成1*N和N*1的filter;
2.訓練技巧之數據預處理:即使輸入數據可以成倍增長,尤其對於深度學習這類需要大量訓練數據的算法,數據預處理很重要!
預處理的方法大致有:(1)水平翻轉;
(2)隨機裁剪/大小變換:要對不同的scale做不同的crops;
(3)平移,角度變換,拉伸,修剪等等。。。。
比如下圖是水平翻轉的效果:
這里注意一點:對於一張原始輸入圖像,這些操作都要操作一遍,而且參數是隨機的;
3.訓練技巧之Transfer Learning(即fine tune):就是說我們已經做了數據增強,但需要的數據量還是不夠,這時候我們就需要別人訓練好的網絡,借鑒別人的參數,在此基礎上訓練自己
的網絡;
如上圖:如果可提供的訓練樣本是小的數據集,則只改FC層,若是中數據集,則改FC層和最后一點conv層和pooling層。