深度學習之卷積神經網絡(Convolutional Neural Networks, CNN)(三)

卷積神經網絡典型CNN

  • LeNet:最先用於數字識別的CNN
  • AlexNet:2012年ILSVRC比賽冠軍,遠超第二名的CNN,比LeNet更深,用多層小卷積疊加來替換單個的大卷積
  • ZF Net:2013ILSVRC冠軍
  • GoogleNet:2014ILSVRC冠軍
  • VGGNet:2014ILSVRC比賽中算法模型,效果率低於GoogleNet
  • ResNet:2015ILSVRC冠軍,結構修正以適應更深層次的CNN訓練

卷積神經網絡典型CNN-LeNet

C1層是一個卷積層

  • 6個特徵圖,每一個特徵圖中的每一個神經元與輸入中5*5的鄰域相連,特徵圖大小爲28*28
  • 每一個卷積神經元的參數數目:5*5=25個weight參數和一個bias參數
  • 連接數目:(5*5+1)*6*(28*28)=122304個連接
  • 參數共享:每一個特徵圖內共享參數,所以參數總數:共(5*5*1)*6=156個參數

S2層是一個下采樣層

  • 6個14*14的特徵圖,每一個圖中的每一個單元與C1特徵圖中的一個2*2鄰域相鏈接,不重疊。所以,S2中每一個特徵圖的大小是C1中的特徵圖大小的1/4。
  • S2層每一個單元的4個輸入相加,乘以一個可訓練參數w,再加上一個可訓練偏置b,結果經過sigmoid函數計算
  • 鏈接數:(2*2+1)*1*14*14*6=5880個
  • 參數共享:每一個特徵圖內共享參數,所以有2*6=12個可訓練參數

C3層是一個卷積層

  • 16個卷積核,獲得16張特徵圖,特徵圖大小爲10*10
  • 每一個特徵圖中的每一個神經元與S2中某幾層的多個5*5的鄰域相連;
  • 例如:對於C3層第0張特徵圖,其每個節點與S2層的第0~2張特徵圖,總共3個5*5個節點相鏈接。

S4層是一個下采樣層

  • 由16個5*5大小的特徵圖構成,特徵圖中的每一個單元與C3中相應特徵圖的2*2鄰域相鏈接。
  • 鏈接數:(2*2+1)*5*5*16=2000個
  • 參數共享:特徵圖內共享參數,每一個特徵圖中的每一個神經元須要1個因子和一個偏置,所以有2*16個可訓練參數。

C5層是一個卷積層

  • 120個神經元,能夠看做120個特徵圖,每張特徵圖的大小爲1*1
  • 每一個單元與S4層的所有16個單元的5*5鄰域相連(S4和C5之間的全鏈接)
  • 鏈接數=可訓練參數:(5*5*16+1)*120=48120個

F6層是一個全鏈接層

  • 有84個單元(之因此選這個數字的緣由來自於輸出層的設計),與C5層全鏈接。
  • F6層計算輸入向量和權重向量之間的點積,再加上一個偏置。
  • 鏈接數=可訓練參數:(120+1)*84=10164
  • 84:stylized image:7*12

輸出層採用歐氏徑向基函數單元

  • 給定一個輸入模式,損失函數應能使得F6的配置與RBF參數向量(即模式的指望分類)足夠接近。
  • 每類一個單元,每一個單元鏈接84個輸入;每一個輸出RBF單元計算輸入向量和參數向量之間的歐式距離。
  • RBF輸出能夠被理解爲F6層配置空間的高斯分佈的對數似然【-log-likelihood】

卷積神經網絡典型AlexNet

(2012年ILSVRC比賽冠軍,遠超第二名的CNN,比LeNet更深,用多層小卷積疊加來替換單個的大卷積 )算法

AlexNet結構優化

  • 非線性激活函數:ReLU
  • 使用Max Pooling,而且提出池化核和步長,使池化核之間存在重疊,提高了特徵的豐富性。
  • 防止過擬合的方法:Dropout,Data augmentation(數據加強)
  • 大數據訓練:百萬級ImageNet圖像數據
  • GPU實現:在每一個GPU中放置一半核(或神經元),還有一個額外的技巧:GPU間的通信只在某些層進行。
  • LRN歸一化:對局部神經元的活動建立了競爭機制,使得其中響應比較大的值變得相對更大,並抑制其它反饋較小的神經元,加強了模型的泛化能力。本質上,LRN是仿造生物學上活躍的神經元對於相鄰神經元的抑制現象(側抑制)

在AlexNet引入了一種特殊的網絡層次,即:Local Response網絡

Normalization(LRN, 局部響應歸一化),主要是對ReLU激活函數的輸出進行局部歸一化操做,公式以下:架構

其中a表示第i個卷積核在(x,y)座標位置通過激活函數的輸出值,這個式子的含義就是輸出一個值和它先後的n個值作標準化。k、n、α、β是超參數,在AlexNet網絡中分別爲:二、五、10^-四、0.75,N爲卷積核總數。函數


卷積神經網絡典型CNN-ZF Net

  • 基於AlexNet進行微調
  • Top5錯誤率11.2%
  • 使用ReLU激活函數和交叉熵損失函數

卷積神經網絡典型CNN-GoogleNet

Top5錯誤率6.7%;使用9個inception模塊,改變CNN原串行結構,並行,共22層;使用平均池化替代FC層;參數量僅爲AlexNet的1/12;使用softmax獲取平均結果;網絡結構的更新,性能比AlexNet要好;2014年ILSVRC冠軍性能

GoogLeNet借鑑了NIN的特性,在原先的卷積過程當中附加了1*1的卷積核加上ReLU激活。大數據

這不只僅提高了網絡的深度,提升了representation power,並且文中還經過1*1的卷積來進行降維,減小了更新參數量 。優化

NIN模型

Network-in-Network主要思想是,用全鏈接的多層感知機去代替傳統的卷積過程,以獲取特徵更加全面的表達,同時,由於前面已經作了提高特徵表達的過程,傳統CNN最後的全鏈接層也被替換爲一個全局平均池化層,由於做者認爲此時的map已經具有分類足夠的可信度了,它能夠直接經過softmax來計算loss了設計

Inception結構

Inception架構的主要思想是找出如何讓已有的稠密組件接近與覆蓋卷積視覺網絡中的最佳局部稀疏結構。3d

爲了不patch校準問題,如今的濾波器大小限制在1x1,3x3和5x5,主要是爲了方便,不是必要的。orm

另外,在pooling層添加一個額外的並行pooling路徑用於提升效率。

架構的第二個主要思想:在計算要求增長不少的地方應用維度縮減和預測。即,在3x3和5x5的卷積前用一個1x1的卷積用於減小計算,還用於修正線性激活。以下圖所示,左邊是加入維度縮減以前的,右邊是加入維度縮減以後的。

卷積神經網絡典型CNN-GoogleNet


卷積神經網絡典型CNN-VGGNet

ILSVRC2015冠軍,比VGG深8倍,超深網絡,最高能夠達到152層;引入殘差結構,更改參數w的修改規則;top-5錯誤率3.6%;參數更新中使用到RNN的思想

ResNet結構

使用了一種鏈接方式叫作「shortcut connection」,顧名思義,shortcut就是「抄近道」的意思。

真正在使用的ResNet模塊並非這麼單一,文章中就提出了兩種方式

實線的的Connection部分(「第一個粉色矩形和第三個粉色矩形」)都是3x3x64的特徵圖,他們的channel個數一致,因此採用計算方式:

y=F(x)+x

虛線的的Connection部分(」第一個綠色矩形和第三個綠色矩形「)分別是3x3x64和3x3x128的特徵圖,他們的channel個數不一樣(64和128),因此採用計算方式:

y=F(x)+Wx

其中W是卷積操做,用來調整x的channel維度的

Shortcut Connection

ResNet結構


卷積神經網絡CNN性能演進歷程