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

對深度學習卷積操作的理解

本文介紹對了對卷積核、濾波器、通道等概念的理解。

二維卷積

二維卷積就是卷積核(指的是一個小的權值矩陣)在二維輸入資料上滑動遍歷整張圖片,對當前輸入的部分元素進行矩陣乘法,將一個二維矩陣轉換為另一個二維矩陣,然後將結果輸出,輸出特徵實際上是在輸入資料相同位置上的加權和。下圖是一個標準的卷積:
這裡寫圖片描述
從上面的描述可知,卷積核的尺寸直接決定了生成新的特徵是匯合了多少個輸入特徵,在上圖中,我們輸入的特徵為5*5, 輸出資料為(5-3+1)*(5-3+1)=3*3. 如果我們使用標準的全連線層,就會產生一個25*9=225 個引數的權值矩陣,每個輸出都是所有輸入資料的加權求和。使用卷積操作我們只用9個引數來實現這個變換,每個輸出特性不用檢視每個輸入特徵,而只是檢視大致相同位置的輸入特徵。

常用的卷積技術

  1. Padding
    在下面的動畫中可以看到卷積核在滑動過程中邊緣基本上會被裁剪掉,因為邊緣上的畫素永遠不在卷積核的中心,但是我們通常需要讓輸出尺寸等於輸入尺寸,所以邊緣被裁減掉會使輸入尺寸丟失。為了解決這個問題,padding使用一些假畫素(通常是0)來填充邊緣,同事延伸到邊緣外的假畫素,從而產生與輸入相同大小的輸出。
    這裡寫圖片描述
  2. Striding
    在運行卷積層時我們通常希望輸出尺寸比輸入尺寸更低,在增加通道數量的同時將空間尺寸減小。其中一種方法是使用池化層,例如使用2*2的網格的平均值、最大值、最小值將空間維度減小。還有一種方式是striding,基本思想是改變卷積核移動的歩長跳過一些畫素。Stride是1表示的是一個標準卷積模式,stride是2表示卷積核移動的歩長是2,跳過相鄰畫素,影象縮小為原來的1/2,stride是3表示卷積核移動的歩長是3,跳過兩個相鄰畫素,影象縮小為原來的1/3。下面圖片描述的是一個歩長為2的卷積操作。
    這裡寫圖片描述

多通道版本

上面影象中描述的都是單通道的影象,在實際應用中大多數輸入影象都是3通道的,通道數只會增加網路深度,通常會將影象的通道視作一個整體,強調其整體的一面而不關注各自的差異。
這裡寫圖片描述
濾波器和卷積核的區別:僅在1通道的情況下,濾波器和卷積核是等價的,但是在一般情況下,這兩個概念是不同的。每個濾波器是卷積核的集合,圖層的每個輸入通道都有一個唯一的卷積核,卷積層中的每個濾波器都只輸出一個通道,他們是這樣實現的:濾波器的每個卷積核在各自的輸入通道上滑動,產生各自的計算結果,一些核心可能比其他核心具有更大的權重,以便某些核心更強調某些輸入通道。例如,濾波器的紅色通道卷積核可能比其他通道的卷積核有更大的權重,因此紅色通道特徵的反應要強於其他通道。
這裡寫圖片描述


做完卷積操作後濾波器的卷積核各自產生一個對應的通道輸出,然後每個通道處理的結果彙總在一起形成一個通道,最後整個濾波器產生一個總的輸出通道。
這裡寫圖片描述
在實際應用過程中通常需要對每個輸出濾波器增加偏置以便產生最終的輸出通道。
這裡寫圖片描述
其他數量濾波器的生成都和單濾波器相同:每個濾波器使用不同的卷積核集合和具有上述過程的標量偏差項來處理輸入資料,最終產生一個輸出通道。然後將它們連線在一起以產生總輸出,其中輸出通道的數量是過濾器的數量。在輸出資料送入另一個卷積層之前,通常還要應用非線性啟用函式。重複上述操作即可完成網路的搭建。