天天看點

卷積神經網絡——卷積層和池化層

卷積神經網絡的概念最早出自科學家提出的感受野,在19世紀60年代科學家通過對貓的視覺皮層細胞研究發現,每一個視覺神經元隻會處理一小塊區域的視覺圖像。這明顯差別于傳統的神經網絡,傳統的神經網絡是一種全連接配接模型,在處理大量資料時,由于這種全連接配接模型使得模型複雜度大大提升,而且易出現過拟合的現象。

1.卷積層

然而在卷積神經網絡中,可以利用空間結構關系減少需要學習的參數量,提高算法的訓練效率。而且,第一個卷積層會直接接受圖像像素級的輸入,每一個卷積操作隻會處理一小塊圖像,每經過一次卷積核所得到的新的圖像像素都是對原圖像最有效的特征提取。

這裡,我們所說的卷積核在卷積神經網絡中指的是過濾器。過濾器的輸入是一小塊區域的視覺圖像,輸出是機關節點矩陣并且深度不限(深度稱為過濾器的深度,指的是輸出機關節點矩陣的深度,需要人工指定)。在卷積層中,過濾器所處理的節點矩陣的長和寬都是由人工指定的,節點矩陣的尺寸也稱為濾波器的尺寸。通常情況下,節點矩陣都是三維矩陣(當圖像是黑白圖像時隻有一個顔色通道此時為二維矩陣;對于RGB圖像,有三個顔色通道,為三維矩陣)。常用的過濾器的尺寸有3×3或者5×5。

卷積層結構的前向傳播過程就是通過将一個過濾器從輸入圖像的左上角移動至右下角,并且計算每一個對應的機關矩陣得到的。

我們假設過濾器尺寸為2×2,圖像輸入節點深度為3,則經過過濾器得到第i個的機關節點矩陣的值為:

卷積神經網絡——卷積層和池化層

a為輸入節點矩陣中相應位置處的像素值(f為ReLU函數,通常在神經網絡中定義為f=max(0,w^Tx+b))。

具體計算過程如下:

卷積神經網絡——卷積層和池化層
卷積神經網絡——卷積層和池化層

實際上,過濾器是一個二維或者三維的矩陣模闆,用于對感受野中的每個通道做特征提取,過濾器的深度即為我們要提取的特征屬性的個數,每一個特征屬性對應一個feature map。原圖像的每一個通道對應過濾器權值矩陣的每個通道,對于輸出的機關節點矩陣又對應一個偏置項。通過輸入節點矩陣與過濾器對應位置處的權值相乘再求和再加上該輸出節點對應的偏置項參數,将結果作為激活函數的自變量,計算得到過濾器的輸出,即機關節點矩陣的值。當過濾器的尺寸大小不為1×1時,卷積層前向傳播得到的矩陣尺寸要小于目前層矩陣的尺寸。為了避免這種尺寸的變化,我們通過在目前層矩陣的邊界處加入全0填充。這樣使得卷積層前向傳播得到的矩陣大小和目前層矩陣大小保持一緻。

卷積神經網絡——卷積層和池化層
卷積神經網絡——卷積層和池化層

我們還可以通過設定過濾器移動的步長來調整結果矩陣的大小。當過濾器的尺寸為2×2,并且對輸入節點矩陣使用全零填充時,通過過濾器得到的結果矩陣的大小為(若有餘數,向上取整):

卷積神經網絡——卷積層和池化層

當過濾器尺寸不為2×2,并且對輸入節點矩陣使用全零或者不使用全零填充時,通過過濾器得到的結果矩陣的大小為:

卷積神經網絡——卷積層和池化層

2.池化層

池化層的作用是降采樣,壓縮卷積層圖像尺寸,保留最顯著的特征,一般常用最大池化法和平均池化法。

與卷積層的過濾器類似,池化層的過濾器也需要人工設定過濾器的尺寸、是否需要使用全零填充以及過濾器移動步長等設定,而且這些設定的意義也是一樣的。卷積層和池化層中過濾器移動的方式是相似的,唯一的差別就是卷積層使用的過濾器是橫跨整個輸入節點矩陣的深度,而池化層使用的過濾器隻影響一個深度上的節點。是以池化層的過濾器除了在長和寬兩個次元移動,還需要在深度這個次元上移動。下圖展示了一個最大池化層前向傳播計算過程:

卷積神經網絡——卷積層和池化層

繼續閱讀