1. 程式人生 > >深度學習—卷積的理解

深度學習—卷積的理解

最優化 span 好的 權重 獨立 邊界 濾波器 基礎 包含

1、參數共享的道理

  如果在圖像某些地方探測到一個水平的邊界是很重要的,那麽在其他一些地方也會同樣是有用的,這是因為圖像結構具有平移不變性。所以在卷積層的輸出數據體的55x55個不同位置中,就沒有必要重新學習去探測一個水平邊界了。

  在反向傳播的時候,都要計算每個神經元對它的權重的梯度,但是需要把同一個深度切片上的所有神經元對權重的梯度累加,這樣就得到了對共享權重的梯度。這樣,每個切片只更新一個權重集。

2、歸一化層效果有限,可以不用

3、全連接層轉化為卷積層

  在兩種變換中,將全連接層轉化為卷積層在實際運用中更加有用。

  讓卷積網絡在一張更大的輸入圖片上滑動(譯者註:即把一張更大的圖片的不同區域都分別帶入到卷積網絡,得到每個區域的得分),得到多個輸出,這樣的轉化可以讓我們在單個向前傳播的過程中完成上述的操作。

面對384x384的圖像,讓(含全連接層)的初始卷積神經網絡以32像素的步長獨立對圖像中的224x224塊進行多次評價,其效果和使用把全連接層變換為卷積層後的卷積神經網絡進行一次前向傳播是一樣的。

  這一技巧在實踐中經常使用,一次來獲得更好的結果。比如,通常將一張圖像尺寸變得更大,然後使用變換後的卷積神經網絡來對空間上很多不同位置進行評價得到分類評分,然後在求這些分值的平均值。

4、使用多個小卷積核代替大卷積核

  假設所有的數據有 C 個通道,那麽單獨的7x7卷積層將會包含 C*(7*7*C)=49C*C 個參數,而3個3x3的卷積層的組合僅有3*(C*(3*3*C))=27C*C個參數。直觀說來,最好選擇帶有小濾波器的卷積層組合,而不是用一個帶有大的濾波器的卷積層。前者可以表達出輸入數據中更多個強力特征,使用的參數也更少

。唯一的不足是,在進行反向傳播時,中間的卷積層可能會導致占用更多的內存。

5、層的尺寸設置規律

  (1)輸入層(包含圖像的)應該能被2整除很多次。常用數字包括32(比如CIFAR-10),64,96(比如STL-10)或224(比如ImageNet卷積神經網絡),384和512。

  (2)卷積層應該使用小尺寸濾波器(比如3x3或最多5x5),使用步長S=1。還有一點非常重要,就是對輸入數據進行零填充,這樣卷積層就不會改變輸入數據在空間維度上的尺寸。如果必須使用更大的濾波器尺寸(比如7x7之類),通常只用在第一個面對原始圖像的卷積層上。

  (3)匯聚層負責對輸入數據的空間維度進行降采樣。最常用的設置是用用2x2感受野的最大值匯聚,步長為2。註意這一操作將會把輸入數據中75%的激活數據丟棄(因為對寬度和高度都進行了2的降采樣)。另一個不那麽常用的設置是使用3x3的感受野,步長為2。最大值匯聚的感受野尺寸很少有超過3的,因為匯聚操作過於激烈,易造成數據信息丟失,這通常會導致算法性能變差。

  減少尺寸設置的問題:上文中展示的兩種設置是很好的,因為所有的卷積層都能保持其輸入數據的空間尺寸,匯聚層只負責對數據體從空間維度進行降采樣。如果使用的步長大於1並且不對卷積層的輸入數據使用零填充,那麽就必須非常仔細地監督輸入數據體通過整個卷積神經網絡結構的過程,確認所有的步長和濾波器都尺寸互相吻合,卷積神經網絡的結構美妙對稱地聯系在一起。

6、計算上的考量

  • 來自中間數據體尺寸:卷積神經網絡中的每一層中都有激活數據體的原始數值,以及損失函數對它們的梯度(和激活數據體尺寸一致)。通常,大部分激活數據都是在網絡中靠前的層中(比如第一個卷積層)。在訓練時,這些數據需要放在內存中,因為反向傳播的時候還會用到。但是在測試時可以聰明點:讓網絡在測試運行時候每層都只存儲當前的激活數據,然後丟棄前面層的激活數據,這樣就能減少巨大的激活數據量。
  • 來自參數尺寸:即整個網絡的參數的數量,在反向傳播時它們的梯度值,以及使用momentum、Adagrad或RMSProp等方法進行最優化時的每一步計算緩存。因此,存儲參數向量的內存通常需要在參數向量的容量基礎上乘以3或者更多。
  • 卷積神經網絡實現還有各種零散的內存占用,比如成批的訓練數據,擴充的數據等等。

  一旦對於所有這些數值的數量有了一個大略估計(包含激活數據,梯度和各種雜項),數量應該轉化為以GB為計量單位。把這個值乘以4,得到原始的字節數(因為每個浮點數占用4個字節,如果是雙精度浮點數那就是占用8個字節),然後多次除以1024分別得到占用內存的KB,MB,最後是GB計量。如果你的網絡工作得不好,一個常用的方法是降低批尺寸(batch size),因為絕大多數的內存都是被激活數據消耗掉了。

轉自:https://zhuanlan.zhihu.com/p/22038289?refer=intelligentunit

深度學習—卷積的理解