1. 程式人生 > >Deep Learning入門:引數意義及對一些trick理解的總結

Deep Learning入門:引數意義及對一些trick理解的總結

以下大部分都是在CIFAR10資料集使用tensorflow時獲得的經驗。

一、batch normalization

batch normalization是以一個batch為整體進行歸一化,一般方法是(x-均值)/方差。

由於該方法能將圖片上的值的範圍變換致(-c,c)(c視batch而定),不但縮小到了不同的範圍,而且使值在負數上也有分佈。

縮小範圍的好處在於減少光照的影響。此處一種側面的證明是我對資料集的預處理方法進行單一變數測試時,在對batch進行歸一化後,使用random_brightness函式隨機增加圖片的亮度,訓練得出的準確率基本等於只做歸一化,而隨機左右反轉+歸一化的組合卻能明顯提高準確率。對於這種現象我的理解是:亮度可以理解圖片的值的分佈偏向(因此增加亮度只要對圖片的所有值加一個數就可以了),假設亮度對準確率造成了影響,那麼可以認為只要對圖片的範圍進行平移距離c,就可以縮小該影響。而歸一化所做的就是縮小值與值之間的差距,資料上反映為把c的值變小,那麼c對最終準確率的影響也就變小了。

但是,歸一化的負面影響也是由於歸一化將值的範圍縮小了。值的縮小不僅僅將那些干擾因素的影響縮小,也將那些有利的特徵縮小了,比如光照有時也會成為資料的關鍵特徵。這樣的話,資料的特徵將會更加難以學習得出。

同時,有效的歸一化也使得不同batch的資料分佈出現了明顯的差距,這樣其實也在某種程度上增加了資料集的數量。

歸一化的最關鍵優點其實在於它使資料在負數上也有分佈,這樣的話,relu函式才會有更明顯的效果。

二、卷積核

5×5的卷積核可以表示為兩層3×3的卷積核。

64×64+128×128+256×256三核和32×32+64×64+128×128三核的組合最終訓練結果相同,但後者引數少,選擇後者。

三、過擬合

當出現過擬合的時候,我的導師跟我說是訓練集準確率先基本不變一段時間後,開始上升,而測試集準確率下降。而根據我自己的經驗,過擬合也變現為訓練集準確率與測試集準確率的差距,即兩個準確率在最終都能基本收斂,但是一般而言訓練集比測試集高。一種變相的證明方法是當我使用dropout時,當調低keep property時,訓練集準確率與測試集準確率之間的差距確實縮小了,實際表現為測試集準確率不變的情況下訓練集,訓練集準確率不會上升到很高的數值。