天天看點

Eugenio Culurciello的神經網絡結構解析(Part 1)

本文來源于Eugenio Culurciello's blog

作者: Eugenio Culurciello

Linkedin:

https://www.linkedin.com/in/eugenioculurciello

翻譯: 郭昕

原文标題:Neural Network Architectures

深度神經網絡與深度學習是現今最為有效和流行的算法,而他們的成功很大程度上依賴于對神經網絡結構的優良設計。在這篇文章中,我将在深度學習的大背景下,對神經網絡近十幾年來的的演進曆史做一個簡要的總結概述。

對于更進一步的分析以及神經網絡的比較,感興趣的讀者,可以閱讀我們實驗室最近發表的論文(

https://arxiv.org/abs/1605.07678) ,一個簡單的總結可以見下圖:
Eugenio Culurciello的神經網絡結構解析(Part 1)

上圖表示的是Top-1準确率和一輪前向網絡計算所需要的操作的數量的關聯,本圖中列舉了多個近來非常流行的神經網絡結構。

LeNet5

LeNet5最初發表于1994年Yann LeCun的文章中,是最早被提出的卷積神經網絡結構,這項工作大大推進了深度學習的發展,而這項開創性的工作是基于大量成功的理論發展疊代之上的,而最早的理論可以追溯到1988年!

Eugenio Culurciello的神經網絡結構解析(Part 1)

LeNet5的結構是非常基礎的,其中一個特别重要的觀察在于,圖像的特征是分布于整張圖檔之上的,使用帶有可更新參數的卷積算子,是一種對在圖檔的不同位置提取相似特征非常有效的方式,同時卷積算子的使用,也大大減少了所需更新的參數的數量。在當時既沒有GPU,CPU的計算效率也遠低于目前時代的水準,能夠節省參數數量是一個重要的優勢。相反,如果将圖檔的每一個像素作為獨立輸入進一個大型神經網絡,将很難達到類似的效果。LeNet5對此的解釋是,圖檔是一種高度空間相關的資料,而将圖檔像素作為獨立輸入神經網絡,會打破這種空間上相關的資料特性。

LeNet5的結構可以簡單概括為:

  1. 卷積神經網絡使用了如下3層序列作為一個基本結構: 二維卷積,pooling層,非線性算子 -> 而這個結構奠定了此後深度學習在圖像應用中的一個關鍵特點
  2. 使用卷積來提取空間特征
  3. Pooling層使用的計算方式是取圖像映射的空間均值
  4. 非線性算子使用的是tanh或者sigmoid
  5. 使用的MLP(Multi-layerPerceptron)作為最後一層的分類器
  6. 層與層之間使用稀疏的矩陣連結,大大降低了計算複雜度

總的來說,LeNet5是今後很多經典神經網絡結構的鼻祖,對整個領域的發展起到了至關重要的作用

斷層

在1998年到2010年間,神經網絡的發展進入了一個孵化期,大多數人都沒有認識到神經網絡所能帶來的潛在可能性,隻有少數研究者在整個領域取得了一些進展。随着手機照相和數位錄影機變得越來越便宜,圖像資料逐漸積累了起來,同時計算資源也得到了長足發展,CPU們變得越來越快,GPU也邁入了通用計算的時代。資料的積累和計算能力的提升為神經網絡的下一波井噴打好了堅實的基礎。

Dan Ciresan Net

在2010年,DanCiresan以及Jurgen Schmidhuber釋出了第一個基于GPU實作的神經網絡,這個網絡結構将前向和後向傳導同時在一個Nvidia GTX 280上實作,而此時的網絡結構達到了9層

AlexNet

在2012年,AlexKrizhevsky釋出了AlexNet,這是一個基于LeNet5,但是更深,并且更廣的一個模型,他以絕對優勢赢得了當年非常困難的ImageNet競賽

Eugenio Culurciello的神經網絡結構解析(Part 1)

AlexNet将LeNet5中的主要思想封裝入了一個更大的神經網絡,使得這個神經網絡得以學習到更為複雜的物體結構以及層次,這項工作的主要貢獻在于:

  1. 使用了ReLU(整流線性單元)作為非線性算子
  2. 使用了Dropout的技術,在訓練中随機得忽略一些神經元的參數更新,有效得規避了模型的過拟合
  3. 使用的MaxPooling的技術,進而避免了average pooling導緻的均值效應
  4. 使用了GPUNvidia GTX 580來加速訓練

在當時,GPU相比CPU來說可以提供更多的計算核心,可以達到大約10倍的訓練加速,使得使用更大的資料集以及更多像素的圖檔成為可能

AlexNet的成功掀起了一場在計算機視覺界的革命,使得卷積神經網絡真正能夠為深度學習中的任務提供助力,也使得”大型神經網絡是可以用于解決實際問題”成為了現實

Overfeat

2013年,紐約大學Yann LeCun組釋出了Overfeat模型,這是一個AlexNet的變種模型。在這個模型中,首次提出了CNN不僅可以用于解決分類問題,同時也可以用于訓練學習一個邊界框(bounding box),這一想法催生了後續基于此的研究論文,例如在圖像物體檢測領域。我個人認為,對CNN來說,去學習如何分割物體,比學習一個人為框定的邊界框來說更有意義。

VGG

牛津大學的研究組提出的VGG模型,首次采用了一個比之前模型小得多的卷積濾波器(大小為3x3),同時将這些操作合并成為一個卷積序列。

這看起來似乎有悖于LeNet設計初衷,在LeNet中,較大的卷積操作被用于擷取圖像中的相似特征。不像AlexNet那樣使用9x9或者11x11這樣大的卷積濾波器,在神經網絡的第一層上,VGG開始使用小得多的濾波器,并且開始接近于LeNet原本的設計中想要極力避免的1x1大小的濾波器。但是VGG模型的一個觀察在于,多個3x3卷積操作的級聯(中間并沒有pooling以及非線性操作),其實可以等價于一個更大的接受區域的效果,比如像5x5或者7x7那樣大小的卷積濾波器。這一結構設計也被廣泛使用于更近代的一些神經網絡模型中,比如Google的Inception以及微軟的ResNet

Eugenio Culurciello的神經網絡結構解析(Part 1)

VGG模型使用了多個3x3的卷積層來表征複雜的特征,可以看到在VGG-E 的第3,4,5子產品中:256x256 以及 512x512 個 3x3的卷積濾波器被連續使用了多次以提取複雜的特征以及這些特征的組合。這一結構設計等效于有512x512個大型的3層分類器,而且他們都是卷積操作,顯然這将帶來大量的可調參數以及更大的學習能力。但是訓練這樣規模參數的神經網絡是非常困難,是以也不得不将其分裂成多個更小的神經網絡,并最後将這些結果組合起來。造成這個問題的主要原因是我們缺少有效的方式去正則化模型,或者說缺乏有效的手段來大大限制由大規模可訓練參數所帶來的極大的優化搜尋空間

VGG很多層中都使用了較大的特征大小,這使得模型在運作時會非常耗時,例如在Inception模型中所做的那樣,減少特征的數量可以有效地減少計算耗時

Network-in-network

NiN使用了一個簡單但是有效的方式來使用1x1大小的卷積濾波器,這一模型在卷積層提供了更為豐富的組合特征的能力

NiN結構,在每個卷積層之後都增加了一個空間MLP層,在這些特征輸入下一個卷基層之前,更好地組合各個特征。再次,我們可以認為1x1的卷積濾波器的設計師有悖于最初LeNet的設計初衷的,但是在理論上我們可以知道1x1的卷積濾波器更有利于組合不同的卷積特征,但是這一功能是無法通過簡單地堆積更多卷基層來實作。這個結構不同于直接将每一個像素值作為原始輸入。在這裡,1x1的卷積濾波器是被用于在空間上組合那些經過卷積之後的映射特征的,這樣我們就可以使用非常少的訓練參數,而這些參數在特征的每一個像素點上都可以被共享

Eugenio Culurciello的神經網絡結構解析(Part 1)

MLP的作用在于可以通過一些複雜的組合來組合每一個卷積特征,最大化單獨卷積特征的作用,這一想法也被後續用于Inception或者ResNet等模型中。

NiN另一個有效的實踐是在最後一層分類層之前使用了平均pooling,這個想法的初衷是在于将輸入圖檔多個區域的神經網絡回報在分類層之前進行平均,以獲得更好的分類效果。這個結構設計也應用于後續的很多模型中

注:在後續章節中,我們會繼續完成GoogLeNet,Inception,ResNet以及更進一步的最新模型的進展,敬請期待!

相關連結

Dan Ciresan Net:

https://arxiv.org/abs/1003.0358

AlexNet:

https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

Overfeat模型:

https://arxiv.org/abs/1312.6229

VGG:

https://arxiv.org/abs/1409.1556

NiN:

https://arxiv.org/abs/1312.4400

繼續閱讀