卷積神經網絡的層次結構

卷積神經網絡的層級結構

  • 數據輸入層(Input Layer)
  • 卷積層(Convolutional Layer)
  • 激活層(Relu Layer)
  • 池化層(Pooling Layer)
  • 全連接層(FC Layer)

一、數據輸入層

        數據輸入層主要是對原始數據進行初步處理,使卷積神經網絡能有更好的效果。處理方法有:

  • 灰度化:
            圖片一般是通過一個三維矩陣存儲的,矩陣的大小爲(width,height,3),width是圖像的寬度,height是圖像的高度,3表示紅(Red)、綠(Green)、藍(Blue)三顏色通道。我們可以認爲任何圖片是通過不同程度的紅色、綠色、藍色疊加形成。那什麼是灰度化呢?由於RGB不能反映圖像的形狀特徵,只是從光學的原理上進行顏色的調配,而我們一般是需要提取圖像的形狀特徵,所以可以將三通道的圖片變成一通道,這個過程就是灰度化。

  • 常用的灰度化方法:
    1、分量法:將圖像R、G、B三分量中的一種分量作爲灰度圖像的灰度值。
    2、最大值大:將圖像R、G、B三分量中最大的分量作爲灰度圖像的灰度值
    3、加權平均法:將圖像R、G、B三分量以不同的權重進行加權平均。人眼對綠色敏感最高,對藍色敏感最低,故採用心理學灰度公式:Gray = 0.114B + 0.587G + 0.299R

  • 歸一化:
            在神經網絡中經常會使用sigmoid函數當做激活函數,sigmoid函數的函數值在[0, 1]之間,當輸入{20,30,40,50,60}等遠大於1的數據時,經過sigmoid函數的值將會非常的接近甚至是相等,這樣就會無法起到應有的訓練效果,將數據歸一化就可以較好的解決這個問題。而且歸一化可以使神經網絡更快的收斂。

  • 常用的歸一化方法:
    1、min-max標準化:
    也稱爲離差標準化,是對原始數據的線性變換,使結果值映射到[0 - 1]之間。轉換函數如下:
    在這裏插入圖片描述
    其中max爲樣本數據的最大值,min爲樣本數據的最小值。這種方法有個缺陷就是當有新數據加入時,可能導致max和min的變化,需要重新定義。

    2、Z-score標準化方法
             這種方法給予原始數據的均值(mean)和標準差(standard deviation)進行數據的標準化。經過處理的數據符合標準正態分佈,即均值爲0,標準差爲1,轉化函數爲:
    在這裏插入圖片描述
    其中μ爲所有樣本數據的均值,σ爲所有樣本數據的標準差。

二、卷積層

        卷積層是卷積神經網絡的核心,理解了卷積層也就理解了卷積神經網絡。卷積是數學上的一種計算,而在神經網絡中可以理解爲一種可以提取圖像特徵的運算。在卷積層中有一些概念我們需要知道。

  • 1、卷積核
            我們可以把卷積核理解成一個過濾器,原圖像經過卷積核的過濾後就可以得到這個圖像的特徵圖譜。使用不同的卷積核就可以得到圖像的不同特徵,比如現在有一個識別時尚服飾圖片並找出款式類似的項目,在這個項目裏,主要是關心衣服的外形,而衣服的顏色、品牌之類的細節反而不重要了,所以需要使用卷積核過濾掉衣服的顏色等一些細節,只保留像外形特徵這種有用的特徵。這個可以通過索貝爾邊緣檢測濾波器來實現,結果如下:
    在這裏插入圖片描述
圖1

圖片來源網絡[4]

        改濾波器將服飾的顏色等細節特徵過濾掉,只保留了外形等有用特徵。如果是找出顏色相同的服飾的話,那麼就要使用另一個過濾器將外形等不重要的特徵過濾掉,只保留顏色特徵。

  • 2、卷積核的深度
            卷積核的深度就是卷積核的個數。每個卷積核之夢提取輸入圖像的部分特徵,這在多數情況下,特徵提取是不充分的,所以通過增加捲積核的個數,提取多個圖像特徵。

  • 3、卷積運算
            卷積核理解成權重矩陣的話,那麼卷積運算就相當於加權求和的過程。
    在這裏插入圖片描述

圖2

在這裏插入圖片描述

圖3

        輸出矩陣(黃色矩陣)中第一個元素就是紅色矩陣與藍色矩陣對應位置相乘並求和,即0 * 1 + 1 * 0 + 1 * -1 + 1 * 1 + 1 * 0 + 1 * -1 + 0 * 1 + 0 * 0 + 1 * -1 = -2 。下面的動圖可以很好的幫助我們理解卷積運算的過程。
在這裏插入圖片描述

圖4

該圖來自網絡([5])。

  • 4、步幅
            步幅(步長)就是卷積核滑動的長度,如上圖,卷積核每次移動長度爲1,即步幅爲1。

  • 5、填充
            觀察圖4發現,5x5的矩陣經過卷積運算後變成3x3的矩陣了,爲避免經過多次卷積後矩陣變得太小,可以再矩陣周圍填充上一圈零來保證卷積後的矩陣跟原矩陣大小一樣。如下圖,用輸入數據中用綠色填充的部分就是補零填充,再進卷積運算即可得到與原數據一樣的大小的輸出。
    在這裏插入圖片描述

圖5

三、激活層

        上面所述的運算其實是一種線性的運算,而自然中很多的關係都是非線性的,因此,需要給上面的計算結果通過一個激活函數加一個非線性的關係。激活函數是參考了生物上神經元的機制,在生物意義上的神經元中,只有前面的樹突傳遞的信號大於神經元的閾值時,下一個神經元纔會被激活。與之類似,激活函數RELU當輸入小於0時,輸出爲零,即失效;大於零輸出則爲本身。下面列出以下常見的激活函數:

  • RELU函數
    在這裏插入圖片描述
  • Sigmoid函數
    在這裏插入圖片描述
  • Tanh函數
    在這裏插入圖片描述

四、池化層

        池化層是對輸入的數據進行壓縮,提取主要特徵的過程。一般池化分爲最大池化和一般池化。以最大池化爲例,池化的運算跟卷積有些相似,一般以一個2 * 2的矩陣對輸入的數據進行掃描,取2 * 2區域的最大值。平均池化與最大池化類似,即2 * 2區域的取平均值。值得注意的是,池化層的輸入數據一般是卷積層的輸出(經過激活函數後)。
在這裏插入圖片描述

圖6

五、全連接層

        全連接層實際上就是傳統的神經網絡(DNN),每一神經元與輸出層的神經元通過權值相連,激活函數一般爲softmax函數。當全連接層輸入的數據是二維或三維矩陣矩陣時,應該拉伸成一維的列表運算。
在這裏插入圖片描述

圖7

參考:
[1]圖像灰度化的常用三種方式及其實現https://blog.csdn.net/qq_38401936/article/details/80459963
[2]圖像歸一化https://blog.csdn.net/u010555688/article/details/25551255
[3]數據歸一化和兩種常用的歸一化方法https://www.iteye.com/blog/m635674608-2295848
[4]卷積神經網絡(CNN)中的卷積核 概念 原理https://blog.csdn.net/lmb09122508/article/details/84949837
[5]深度學習基礎概念筆記 (3)http://www.iot-online.com/jishuwenku/2017/0816/74532_3.html
[6]卷積神經網絡(一):常見的激活函數以及其意義https://blog.csdn.net/fire_light_/article/details/79542602

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章