卷積神經網絡(Convolutional Neural Networks,CNN)


1、原理

1.1、基本結構

卷積神經網絡(Convolutional Neural Networks,CNN)是深度學習中的一種網絡,它和其他神經網絡最大的區別在於其獨特的卷積層。通常情況下它是由多層網絡組合而成,每層又包含由特征圖組成的多個平面,而這些平面都是由多個獨立神經元組成。

 

 

通常情況下,因為包含卷積操作,C層被稱為特征提取層。上一層的局部感受野(即與濾波器進行卷積操作的像素范圍)連接着特征提取層每個神經元輸入,和濾波器進行卷積后的值作為該局部特征。提取到該局部特征后,它與其他局部特征間的相對位置關系也就確定了。因為只涉及對特征提取層局部運算,所以S層被稱為特征映射層,S層的每個計算層都包含了多個特征映射,一個平面即為一個特征映射。因此采用Sigmoid函數作為特征映射激活函數,使得特征映射具有位移不變性。

以上圖為例介紹常用的二維卷積,輸入圖像經過3個濾波器的卷積運算后,再和偏置量進行累加,得到3個特征映射層組成的C1層。C1層之后通常會緊接着池化操作,以最大池化來說明,C1中的3個特征映射圖內分別取N*N像素內的最大值作為最終值(即最大池化)形成3個池化后的特征映射圖S2。如果后續仍有卷積操作,那么再和濾波器進行卷積形成新的C3層,再經過池化操作生成池化層S4。后續如果沒有卷積操作的話,這個池化層內的所有值會經過攤平操作形成一個一維向量。這個向量再作為傳統神經網絡輸入層,通過權重激活函數的計算后最終輸出。

另外,卷積神經網絡對輸入樣本具有較高的畸變容忍能力。通常情況下,二維卷積神經網絡中的特征提取層(C層)都緊跟着一個用來求局部最大局部平均池化層(S層)這樣就進行了兩次特征操作,好處在於對樣本有較高的容錯率。

1.2、卷積層

介紹完基本結構和網絡的運行過程后,接着介紹每個層的功能,首先是卷積層。

卷積是卷積神經網絡的核心,用一個K*K大小的卷積核(Filter)對大小為I*I圖像(Input)進行卷積操作時,假設每次卷積操作的步長(Stride)為S如果卷積操作超出了圖像邊界,填充(Padding)像素數為P。那么經過此類卷積后輸出(Output)的特征圖大小計算公式為:

 

以上為卷積的基本概念。

對一幅圖像的一個完整的卷積計算過程為:卷積核以一定間隔滑動,並對所覆蓋的區域進行卷積運算得到值,直至遍歷完整幅圖像,如下圖所示:

 1.3、BN層

批量標准化(Batch Normalization,BN)層卷積層,以及下文將要提到的池化層同屬網絡的一層。通常情況下,為了更好地訓練深度學習神經網絡,防止像Sigmoid類似的非線性激活函數過早飽和,我們會對輸入的數據進行標准化、規范化,使其數據分布類似於正態分布。但在網絡的訓練過程中,因為每一層都必須學會適應每一個訓練步驟的新分布,導致隱含層間的分布是不斷變化的,因此會減慢訓練過程,這被稱為內部協變量轉移問題。這也是深層網絡通常更耗時的一個原因。

BN層就是規范化網絡各層權重分布、解決內部協變轉移問題的一種方法,強迫每一層的輸入在每一個訓練步驟中有大致相同的分布。使用BN層帶來的效果是減少超參數,如參數初始化方式、學習率初始值、權重衰減系數、正則方式、Dropout率等的調優時間。因為超參數的設置嚴重影響訓練結果,不使用BN的網絡通常在超參數的調優上回浪費很多時間。另外,使用BN會快速收斂,並且會提高網絡泛化能力。BN算法的大致步驟如下:

  1. 計算各層輸入均值方差
  2. 使用先前計算的批次統計數據圖層輸入進行歸一化
  3. 縮放移動以獲得圖層的輸出

1.4、池化層

通過卷積運算獲得特征圖(Features Map)之后,后續網絡如何利用這些特征圖是需要解釋的,本節的重點則是特征圖后的下一層——池化層

理論上可以用卷積層提取到的所有特征圖去訓練分類器,但是這樣做會明顯在網絡中形成巨大的計算量。另外如果使用了所有的特征圖,會使網絡對輸入數據的擬合效果非常好,而缺乏對未知數據的擬合能力,也就是常說的過擬合(Over-Fitting)現象。

針對計算量大過擬合的問題,可以對不同位置的特征先進行聚類,例如一塊區域內的平均值,這樣可以在得到較低維度的特征時不丟失圖像的位置信息。這種得到較低維度特征以及改善過擬合現象的聚類操作就叫做池化(Pooling)

使用最多的是最大池化,但是除了最大值池化(Max Pooling)外,還有平均值池化(Average Pooling)。前者取出目標區域內的最大值,后者則是計算目標區域內的平均值。下圖給出了Max池化的運算過程,Average池化以此類推:

 

 池化有4個重要特性:

  1. 不同於卷積,池化沒有需要學習的參數
  2. 池化后圖像的大小壓縮,但通道數不變
  3. 降低數據特征,擴大了卷積核感受野
  4. 對於微小的位置變化具有魯棒性,在輸入數據發生微小偏差時,池化仍會返回相同的結果。這一點如下圖所示,輸入數據在寬度方向上只偏離1個元素時,輸出仍未為相同的結果(根據數據不同,有時結果也不相同)。

 

 1.5、激活函數

激活函數是非線性神經網絡的關鍵之一。如果不使用激活函數,那么每層節點的輸入和上層節點的輸出都將會是線性關系。這種網絡結構就是原始感知機(Perceptron),其網絡的擬合逼近能力十分有限。因此,神經網絡特別是深度神經網絡只有具有非線性能力才會具有強大的擬合表達能力。而要使網絡具有非線性能力,只需要在網絡層之間使用非線性函數就可以實現。這就是激活函數的作用和能力。

理論上完美的激活函數應該具有以下特征:

  1. 非線性。網絡上下層間只有線性變換無法使網絡具有無限擬合逼近的能力。
  2. 連續可微。這是使用梯度下降法的前提。
  3. 原點近似線性。這樣當權值初始化為接近0的隨機值時,網絡可以學習的較快,不用可以調節網絡的初始值。
  4. 范圍最好不飽和。當有飽和的區間段時,如果網絡權重優化進入到該區間內,梯度近似為0,網絡的學習就會停止。
  5. 單調性。具有單調性的激活哈數會使單層網絡的誤差凸函數,能夠使用其他算法優化。

雖然當前激活函數比較多,但是目前還沒有可以同時滿足以上這些性質的激活函數。本文從實際角度出發,在輸出層分類問題我們需要考慮兩個問題:

  1. 每個輸出信號值在0~1之間;
  2. 所有輸出信號的1

1.5.1、輸出層的激活函數

基於這兩個要求,本文的模型輸出分類中,輸出層的激活函數用Softmax函數:

 

 

 其中輸出層中的第k個輸入信號,分母表示輸出層共有n輸出信號(神經元)

 

 

,計算所有輸出層中的輸入信號指數和。 則是第k個神經元的輸出

 

 

1.5.2、卷積層的激活函數

本文在卷積層使用的激活函數為修正線性單元(Rectified Linear Unit,ReLU),其函數解析式為:

 

 

 ReLU函數圖像如下:

 

 這個函數其實就是一個取最大值函數,注意到該函數並不是全區間可導,但是我們可以取sub-gradient。ReLU雖然簡單,但卻是近幾年的重要成果,具有以下優點:

  1. 解決了梯度消失的問題(在正區間);
  2. 計算速度快,只需要判斷輸入是否大於0
  3.  收斂速度遠快於SigmoidTanh

1.6、全連接層與輸出層

池化層得到特征映射圖之后,需要使用傳統網絡結構進行分類輸出。在傳統網絡結構中,上一層的所有節點下一層的所有節點全部連接起來,形成交叉計算權重的網絡稱為全連接層(Fully Connected Layers,FC)。在整個卷積神經網絡中全連接的作用在於分類。前文所提到的卷積層、BN層、池化層、激活函數等操作都是將輸入數據提取特征映射隱層特征空間,而全連接層則利用交叉計算分布式特征表示能力將隱層特征空間映射到樣本標記空間

輸出層是網絡中的最后一層。根據具體問題可以在分類問題中輸出類別或者在回歸問題中輸出某個數值。通常,在分類問題的輸出層之前會有Softmax激活函數將概率轉化為類別。

2、卷積神經網絡的主要特點

由於同一特征映射面上的神經元權值相同,所以網絡可以並行學習,這也是卷積網絡相較於全連接神經網絡的一大優勢。

2.1、權值共享

也可以理解為平移不變性,卷積神經網絡在圖像的某一區域學到某個模式之后,就可以在圖像的任何地方識別這個模式。

如果使用某一個特征過濾器(檢測器)提取手寫“3”的特征,因為內容可能出現在圖片任何一個有N*N形成的區域,所以每個特征檢測器都可以在圖片的不同N*N的像素區域中使用同樣的參數,都有可能提取到“3”的特征。而對於全連接神經網絡,則必須重新學習“3”出現在新的位置的特征。因此權值共享使得卷積神經網絡可以高效利用不同位置出現的同種特征來減少網絡參數,只需要很少的訓練樣本就能學到具有泛化能力的數據表示。

2.2、分層提取

卷積神經網絡可以學到模式的空間層次結構(Spatial Hierarchies of Patterns)

  • 第一個卷積層可以只學習圖像較小的局部特征(比如棱角、邊緣);
  • 第二個卷積層將學習由第一層卷積后形成的特征圖組成的更大的特征
  • 第三個卷積層再學習第二層卷積后形成的特征圖組成的更大的特征;
  • ...

層數越高,學到的特征就越全局化。因為視覺世界從根本上具有空間層次結構,所以說卷積神經網絡可以有效地學習復雜、抽象的視覺概念。

2.3、局部感知

通常而言,人類是從局部全局漸近認識外部的世界。在網絡學習中,神經元之間不需要對全局圖像進行感知,只需要對局部圖像進行感知,然后在更高層網絡中將局部的特征進行綜合便可以得到全局特征。因為圖像具有空間相關性——距離較近的局部像素關系在空間位置中同樣較為緊密,距離越遠的像素之間相關性越弱。事實上,視覺皮層的神經元就是局部接受信息的,網絡部分連通的思想便是受生物學中的視覺系統結構啟發的。

在全連接神經網絡中,相鄰層的神經元全部連接在一起,由於其輸入數據是一維結構,因此圖像需要先轉換為一維向量,在這個過程中,圖像會完全丟失“形狀”,即像素間的空間信息,從理論上說,神經網絡幾乎可以解決全部深度學習問題,但是在處理復雜問題時,往往難以達到理想的效果。

該類網絡不僅參數量巨大,而且學習速度很慢,即使是一個簡單的問題,一般也需要幾百次甚至上千次的學習才可以收斂,而且容易產生過擬合問題,泛化能力較弱。而卷積層則可以保持形狀不變,當輸入圖像時,卷積層會以3維數據的形式接收輸入數據,並且同樣以3維數據的形式輸出至下一層。因此在CNN中,可以正確理解圖像具有形狀的數據,而且由於局部連接,大大降低了參數量,節省了內存。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM