學習CNN系列一:原理篇

CNN的發展歷程:算法

  1962年,卷積神經網絡的研究起源於Hubel和Wiesel研究毛腦皮層的發現局部互連網絡能夠有效下降反饋神經網絡的複雜性。網絡

  1980年,CNN的第一個實現網絡:Fukushima爲解決模式識別問題基於神經元間的局部連通性和圖像的層次組織轉而提出的新識別機。架構

  1998年,第一個多層人工神經網絡——LeNet5,也是第一個正式的CNN模型(LeCun,用於手寫數字分類)。共7層:2個卷積層,2個池化層,3個全鏈接層,利用BP算法訓練參數。機器學習

  (以後十年停滯,一因BP算法訓練計算量極大,硬件計算能力不足。二因淺層機器學習算法(如SVM)開始發展。)函數

  2012年,AlexNet在ImageNet大賽上奪冠,掀起CNN學習熱潮。AlexNet總體架構與LeNet-5類似,可是更深。在卷積層使用ReLU函數做爲非線性激活函數,在全鏈接層使用Dropout機制來減小過擬合。學習

  2014年,GooleNet在ImageNet奪冠,達到22層。主要創新在於Inception(核心結構),是一種網中網的結構,即原來的節點也是一個網絡。深度學習

  2015年,ResNet將網絡作到152層,引入殘差,解決了網絡層比較深時沒法訓練的問題。io

  2016年,商湯作到了1207層的CNNM,是截止目前在ImageNet上最深的深度學習網絡。神經網絡

 

CNN與普通網絡的區別:硬件

  CNN能夠避免前期對圖像複雜的預處理,能夠直接輸入原始圖像,所以在模式分類領域獲得了普遍的應用。

  CNN包含了一個由卷積層(Convolution Layer)和池化層(Pooling Layer)構成的特徵提取器。在普通的神經網絡中,一個神經元通常與所有鄰接神經元鏈接,稱之爲全鏈接神經網絡。而CNN的卷積層,一個神經元只與部分鄰接神經元鏈接。在CNN的一個卷積層中,一般包含若干個特徵圖(feature map),每一個特徵圖由一些矩形排列的神經元組成,同一特徵圖的神經元共享權值,即卷積核(Covolutional Kernel)。卷積核通常以隨機小數矩陣的形式初始化,在網絡的訓練過程當中它進行學習並獲得合理的權值。共享權值帶來的直接好處是減小了網絡各層之間的鏈接,同時又下降了過擬合的風險。池化能夠看作是一個特殊的卷積過程。卷積核池化大大下降了模型的複雜度,減小了模型的參數。

  CNN主要用於識別位移、縮放及其餘形式扭曲不變的二維圖像。一方面,CNN的特徵檢測層經過訓練數據進行學習,這樣避免了顯式的特徵抽取,而是隱式的從訓練數據中學習。另外一方面,同一特徵圖上的神經元權值相同,網絡能夠並行學習,這是卷積網絡相比全鏈接層的優點。

 

CNN結構:

  CNN基本結構一般包含三層:卷積層+池化層+全鏈接層。爲防止過擬合,有的網絡添加了Dropout層。

相關文章
相關標籤/搜索