當前位置:
首頁 > 新聞 > CNN 那麼多的網路有什麼區別嗎?看這裡了解 CNN 的發展歷程

CNN 那麼多的網路有什麼區別嗎?看這裡了解 CNN 的發展歷程

雷鋒網按:本文原載於知乎CNN 那麼多的網路有什麼區別嗎?如何對 CNN 網路進行修改?ZOMI的回答。獲得作者授權轉載。

為了解釋這個問題,我覺得很有必要去了解一下 CNN 架構模型的發展,從 CNN 模型架構的發展去看待不同的網路之間的區別,去學習 CNN 模型的定義。

-------------------

深度學習演算法最近變得越來越流行和越來越有用的演算法,然而深度學習或者深度神經網路的成功得益於層出不窮的神經網路模型架構。這篇文章當中作者回顧了從 1998 年開始,近 18 年來深度神經網路的架構發展情況。

圖中的坐標軸我們可以看出橫坐標是操作的複雜度,縱坐標是精度。模型設計一開始的時候模型權重越多模型越大,其精度越高,後來出現了 resNet、GoogleNet、Inception 等網路架構之後,在取得相同或者更高精度之下,其權重參數不斷下降。值得注意的是,並不是意味著橫坐標越往右,它的運算時間越大。在這裡並沒有對時間進行統計,而是對模型參數和網路的精度進行了縱橫對比。

其中有幾個網路作者覺得是必學非常值得學習和經典的:AlexNet、LeNet、GoogLeNet、VGG-16、NiN。

如果你想了解更多關於深度神經網路的架構及其對應的應用,不妨看一下這篇綜述An Analysis of Deep Neural Network Models for Practical Applications。

LeNet5

1998 年。LeCun 樂春大神發布了LeNet網路架構,從而揭開了深度學習的神秘面紗。從 1998 年開始,深度學習這一領域就開始不斷地被人們所熟知,也是因為這個網路架構,不斷地推動著深度學習這一領域。當然啦,為什麼不叫 LeNet 而叫 LeNet5 呢,因為 Yann LeCun 經過了很多次反覆的試驗之後的結果,同時也因為有 5 個卷基層因此以 lenet5 命名!

lenet5 架構是一個開創性的工作,因為圖像的特徵是分布在整個圖像當中的,並且學習參數利用卷積在相同參數的多個位置中提取相似特性的一種有效方法。回歸到 1998 年當時沒有 GPU 來幫助訓練,甚至 CPU 速度都非常慢。因此,對比使用每個像素作為一個單獨的輸入的多層神經網路,Lenet5 能夠節省參數和計算是一個關鍵的優勢。lenet5 論文中提到,全卷積不應該被放在第一層,因為圖像中有著高度的空間相關性,並利用圖像各個像素作為單獨的輸入特徵不會利用這些相關性。因此有了 CNN 的三個特性了:1. 局部感知、2. 下採樣、3. 權值共享。

LeNet5 小結:

卷積神經網路使用 3 層架構:卷積、下採樣、非線性激活函數

使用卷積提取圖像空間特徵

下採樣使用了圖像平均稀疏性

激活函數採用了 tanh 或者 sigmoid 函數

多層神經網路(MLP)作為最後的分類器

層之間使用稀疏連接矩陣,以避免大的計算成本

總的來說 LeNet5 架構把人們帶入深度學習領域,值得致敬。從 2010 年開始近幾年的神經網路架構大多數都是基於 LeNet 的三大特性。

GAP

從 1998 年 2010 年這 10 年當中,神經網路的發展卻變得非常緩慢,就連人工智慧領域的大牛吳恩達教授在 2003 年的公開課花了 2 節課的時間講解 SVM 的推導,而對於神經網路只用了不到 20 分鐘帶過。在 2012 年 coresea 新的人工智慧公開課上面反而 SVM 用了不到一節課的時間講解,神經網路卻用了 2 節課的時間進行演算法介紹,可見科學家們對神經網路越來越重視。並且隨著 CPU 和 GPU 的速度不斷提升之下,帶來了性能上的飛躍、也帶來存儲上的飛躍,讓深度神經網路變得更加可算,於是從 2010 年開啟了深度學習的大門。

Dan Ciresan Net

2010 年 Dan Claudiu Ciresan 和 Jurgen Schmidhuber 發表了一個 GPU 神經網路。論文裡面證明了使用 NVIDIA GTX 280 GPU 之後能夠處理高達 9 層的神經網路。

從此之後,Nvidia 公司的股價開始不斷攀升,深度學習也越來越為人們所熟知。

AlexNet

2012 年,Alex Krizhevsky 發表了 AlexNet,相對比 LeNet 它的網路層次更加深,從 LeNet 的 5 層到 AlexNet 的 7 層,更重要的是 AlexNet 還贏得了 2012 年的 ImageNet 競賽的第一。AlexNet 不僅比 LeNet 的神經網路層數更多更深,並且可以學習更複雜的圖像高維特徵。

AlexNet 小結:

使用 ReLU 函數作為激活函數,降低了 Sigmoid 類函數的計算量

利用 dropout 技術在訓練期間選擇性地剪掉某些神經元,避免模型過度擬合

引入 max-pooling 技術

利用雙 GPU NVIDIA GTX 580 顯著減少訓練時間

隨著 GPU 提供越來越強悍的性能,同時允許超過 10x 倍數的訓練增長時間,於是可以處理越來越大的圖片和越來越龐大的數據集。暴風雨來臨了,AlexNet 的成功開始了一場小革命,卷積神經網路 CNN 現在是深度學習的主力,於是有人稱 「網路越複雜處理的任務越厲害」。

Network-in-network

2013 年年尾,Min Lin 提出了在卷積後面再跟一個 1x1 的卷積核對圖像進行卷積,這就是Network-in-network的核心思想了。NiN 在每次卷積完之後使用,目的是為了在進入下一層的時候合併更多的特徵參數。同樣 NiN 層也是違背 LeNet 的設計原則(淺層網路使用大的卷積核),但卻有效地合併卷積特徵,減少網路參數、同樣的內存可以存儲更大的網路。

根據 Min Lin 的 NiN 論文,他們說這個 「網路的網路」(NIN)能夠提高 CNN 的局部感知區域。例如沒有 NiN 的當前卷積是這樣的:3x3 256 [conv] -> [maxpooling],當增加了 NiN 之後的卷積是這樣的:3x3 256 [conv] -> 1x1 256 [conv] -> [maxpooling]。

MLP 多層感知的厲害之處就在於它把卷積特徵結合起來成為一個更複雜的組合,這個思想將會在後面 ResNet 和 Inception 中用到。

VGG

2014 年是個綻放年,出了兩篇重要的論文:VGG、GoogLeNet。

來自牛津大學的VGG網路是第一個在每個卷積層使用更小的 3×3 卷積核對圖像進行卷積,並把這些小的卷積核排列起來作為一個卷積序列。通俗點來講就是對原始圖像進行 3×3 卷積,然後再進行 3×3 卷積,連續使用小的卷積核對圖像進行多次卷積。

或許很多人看到這裡也很困惑為什麼使用那麼小的卷積核對圖像進行卷積,並且還是使用連續的小卷積核?VGG 一開始提出的時候剛好與 LeNet 的設計原則相違背,因為 LeNet 相信大的卷積核能夠捕獲圖像當中相似的特徵(權值共享)。AlexNet 在淺層網路開始的時候也是使用 9×9、11×11 卷積核,並且盡量在淺層網路的時候避免使用 1×1 的卷積核。但是 VGG 的神奇之處就是在於使用多個 3×3 卷積核可以模仿較大卷積核那樣對圖像進行局部感知。後來多個小的卷積核串聯這一思想被 GoogleNet 和 ResNet 等吸收。

從下圖我們可以看出來,VGG 使用多個 3x3 卷積來對高維特徵進行提取。因為如果使用較大的卷積核,參數就會大量地增加、運算時間也會成倍的提升。例如 3x3 的卷積核只有 9 個權值參數,使用 7*7 的卷積核權值參數就會增加到 49 個。因為缺乏一個模型去對大量的參數進行歸一化、約減,或者說是限制大規模的參數出現,因此訓練核數更大的卷積網路就變得非常困難了。

VGG 相信如果使用大的卷積核將會造成很大的時間浪費,減少的卷積核能夠減少參數,節省運算開銷。雖然訓練的時間變長了,但是總體來說預測的時間和參數都是減少的了。

GoogLeNet

2014 年,在 google 工作的 Christian Szegedy 為了找到一個深度神經網路結構能夠有效地減少計算資源,於是有了這個GoogleNet了(也叫做 Inception V1)。

從 2014 年尾到現在,深度學習模型在圖像內容分類方面和視頻分類方面有了極大的應用。在這之前,很多一開始對深度學習和神經網路都保持懷疑態度的人,現在都湧入深度學習的這個領域,理由很簡單,因為深度學習不再是海市蜃樓,而是變得越來越接地氣。就連 google 等互聯網巨頭都已經在深度學習領域布局,成立了各種各樣的額人工智慧實驗室。

Christian 在思考如何才能夠減少深度神經網路的計算量,同時獲得比較好的性能的框架。即使不能兩全其美,退而求其次能夠保持在相同的計算成本下,能夠有更好的性能提升這樣的框架也行。於是後面 Christian 和他的 team 在 google 想出了這個模型:

其乍一看基本上是 1×1,3×3 和 5×5 卷積核的並行合併。但是,最重要的是使用了 1×1 卷積核(NiN)來減少後續並行操作的特徵數量。這個思想現在叫做 「bottleneck layer」。

Bottleneck layer

受 NiN 的啟發,googleNet 的 Bottleneck layer 減少了特徵的數量,從而減少了每一層的操作複雜度,因此可以加快推理時間。在將數據傳遞到下一層卷積之前,特徵的數量減少了 4 左右。因此這種設計架構因為大量節省計算成本而名聲大噪。

讓我們詳細研究一下這個 Bottleneck layer。假設輸入時 256 個 feature map 進來,256 個 feature map 輸出,假設 Inception 層只執行 3x3 的卷積,那麼這就需要這行 (256x256) x (3x3) 次卷積左右(大約 589,000 次計算操作)。再假設這次 589,000 次計算操作在 google 的伺服器上面用了 0.5ms 的時間,計算開銷還是很大的。現在 Bottleneck layer 的思想是先來減少特徵的數量,我們首先執行 256 -> 64 1×1 卷積,然後在所有 Bottleneck layer 的分支上對 64 大小的 feature map 進行卷積,最後再 64 -> 256 1x1 卷積。 操作量是:

256×64 × 1×1 = 16,000s

64×64 × 3×3 = 36,000s

64×256 × 1×1 = 16,000s

總共約 70,000,而我們以前有近 600,000。幾乎減少 10 倍的操作!

雖然我們做的操作較少,但我們並沒有失去這一層特徵。實際上,Bottleneck layer 已經在 ImageNet 數據集上表現非常出色,並且也將在稍後的架構例如 ResNet 中使用到。

成功的原因是輸入特徵是相關的,因此可以通過適當地與 1x1 卷積組合來去除冗餘。然後,在卷積具有較少數目的特徵之後,它們可以再次擴展並作用於下一層輸入。

Inception V3

Christian 的團隊確實很厲害,2015 年 2 月他們又發表了新的文章關於在 googleNet 中加入一個Batch-normalized層。Batch-normalized 層歸一化計算圖層輸出處所有特徵圖的平均值和標準差,並使用這些值對其響應進行歸一化。這對應於 「白化」 數據非常有效,並且使得所有神經層具有相同範圍並且具有零均值的響應。這有助於訓練,因為下一層不必學習輸入數據中的偏移,並且可以專註於如何最好地組合特徵。

2015 年 12 月,他們發布了一個新版本的 GoogLeNet(Inception V3) 模塊和相應的架構,並且更好地解釋了原來的 GoogLeNet 架構,GoogLeNet 原始思想:

通過構建平衡深度和寬度的網路,最大化網路的信息流。在進入 pooling 層之前增加 feature maps

當網路層數深度增加時,特徵的數量或層的寬度也相對應地增加

在每一層使用寬度增加以增加下一層之前的特徵的組合

只使用 3x3 卷積

因此最後的模型就變成這樣了:

網路架構最後還是跟 GoogleNet 一樣使用 pooling 層 + softmax 層作為最後的分類器。

ResNet

2015 年 12 月 ResNet發表了,時間上大概與 Inception v3 網路一起發表的。其中 ResNet 的一個重要的思想是:輸出的是兩個連續的卷積層,並且輸入時繞到下一層去。這句話不太好理解可以看下圖。

但在這裡,他們繞過兩層,並且大規模地在網路中應用這中模型。在 2 層之後繞過是一個關鍵,因為繞過單層的話實踐上表明並沒有太多的幫助,然而繞過 2 層可以看做是在網路中的一個小分類器!看上去好像沒什麼感覺,但這是很致命的一種架構,因為通過這種架構最後實現了神經網路超過 1000 層。傻了吧,之前我們使用 LeNet 只是 5 層,AlexNet 也最多不過 7 層。

該層首先使用 1x1 卷積然後輸出原來特徵數的 1/4,然後使用 3×3 的卷積核,然後再次使用 1x1 的卷積核但是這次輸出的特徵數為原來輸入的大小。如果原來輸入的是 256 個特徵,輸出的也是 256 個特徵,但是這樣就像 Bottleneck Layer 那樣說的大量地減少了計算量,但是卻保留了豐富的高維特徵信息。

ResNet 一開始的時候是使用一個 7x7 大小的卷積核,然後跟一個 pooling 層。當然啦,最後的分類器跟 GoogleNet 一樣是一個 pooling 層加上一個 softmax 作為分類器。下圖左邊是 VGG19 擁有 190 萬個參數,右圖是 34 層的 ResNet 只需要 36 萬個參數:

ResNet 網路特徵

ResNet 可以被看作並行和串列多個模塊的結合

ResNet 上部分的輸入和輸出一樣,所以看上去有點像 RNN,因此可以看做是一個更好的生物神經網路的模型

SqueezeNet

2016 年 11 月才發表的文章,一看論文的標題可以被鎮住:SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and>。文章直接說 SqueezeNet 有著跟 AlexNet 一樣的精度,但是參數卻比 Alex 少了接近 50 倍並且參數只需要佔用很小的內存空間。這裡的設計就沒有 SegNet 或者 GoogleNet 那樣的設計架構驚艷了,但 SqueezeNet 卻是能夠保證同樣的精度下使用更少的參數。

Xception

Xception模型使用與 ResNet 和 Inception V4 一樣簡單且優雅的架構,並且改進了 Inception 模型。

從 Xception 模型我們可以看出來 Xception 模型的架構具有 36 個卷積層,與 ResNet-34 非常相似。但是模型的代碼與 ResNet 一樣簡單,並且比 Inception V4 更容易理解。

從here或者here可以找到 Xception 的實現代碼。

總結

我們再來回顧開篇的對比圖。從圖中我們可以看出來,AlexNet 一類的模型沒有考慮太多權重參數的問題,因此圓圈比較大。一開始 AlexNet 只是希望用深度網路能夠找到更多圖像當中的高維特徵,後來發現當網路越深的時候需要的參數越多,硬體總是跟不上軟體的發展,這個時候如果加深網路的話 GPU 的顯存塞不下更多的參數,因此硬體限制了深度網路的發展。為了能夠提高網路的深度和精度,於是大神們不斷地研究,嘗試使用小的卷積核代替大的卷積核能夠帶來精度上的提升,並且大面積地減少參數,於是網路的深度不再受硬體而制約。

可是另外一方面,隨著網路的深度越深,運算的時間就越慢,這也是個很蛋疼的事情,不能兩全其美。作者相信在未來 2-3 年我們能夠親眼目睹比現有網路更深、精度更高、運算時間更少的網路出現。因為硬體也在快速地發展,特斯拉使用的 NVIDIA Driver PX 2 的運算速率已經比現在 Titan X 要快 7 倍。

後話

其實作者覺得神經網路的架構體系對於了解 「深度學習」 和對於了解深度學習的發展是非常重要的,因此強烈推薦大家去深入研讀一下上面提到的網路架構對應的文章。

總是有一些人會問為什麼我們需要那麼多時間去了解這些深度網路的架構體系呢,而不是去研究數據然後了解數據背後的意義和如何對數據進行預處理呢?對於如何研究數據可以搜一下另外一篇文章《人工智慧的特徵工程問題》。對,數據很重要,同時模型也很重要。簡單的舉一個例子,如果你對某種圖像數據很了解,但是不懂 CNN 如何對這些圖像進行提取高維特徵,那麼最後可能還是會使用 HOG 或者傳統的 SIFT 特徵檢測演算法。

還要注意的是,在這裡我們主要談論計算機視覺的深度學習架構。類似的神經網路架構在其他領域還在不斷地發展,如果你有精力和時間,那麼可以去研究更多不一樣的架構進化歷。

引用

chenzomi12.github.io

LeNet

Dan Ciresan Net

AlexNet

Network-in-network

VGG

GoogleNet

Inception V3

Batch-normalized Layer

ResNet

SqueezeNet

Xception

Neural Network Architectures


點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

第五屆CCF大數據學術會議10月召開,多位大咖帶你走向學術最前沿
巴塞羅那恐怖襲擊致多人喪生 AI用於反恐到哪一步了?
ARKit 和機器學習結合,AR 變得更聰明啦!
迪亞集團發布迪亞Nexus數字平台,面向全球初創企業徵集創新零售方案
劉德華再仗義,也救不了這部賣力的爛片

TAG:雷鋒網 |

您可能感興趣

新型循環神經網路IndRNN:可構建更長更深的RNN
時間卷積網路(TCN)在 NLP 多領域發光,RNN 或將沒落
僅使用NumPy完成卷積神經網路CNN的搭建
一夜火爆網路的「Skr」是什麼梗?真相太Skr了…
這屆ICT冬奧會背後的5G應用和網路都有哪些?
一文概覽主要語義分割網路:FCN,SegNet,U-Net……
從VGG到NASNet,一文概覽圖像分類網路
為什麼有那麼多人選擇做網路主播?就這麼現實
Linux網路編程這麼火,該怎麼學習?
孩子為何沉迷網路?這場DN.A網路素養公開課值得一聽
VPN被顛覆,SDP成為贏家?新一代網路安全將何去何從?
一文了解網路安全數字化轉型,Gartner的這些數字驚呆你!
VCN如何開啟「雲網合一」網路新時代?
網路卡特別不穩?NASA:是太陽惹的禍,但會有「美麗驚喜」!
從特徵金字塔網路、Mask R-CNN到學習分割一切
讓 CPU 告訴你硬碟和網路到底有多慢
一雙 UNDFTD x Air Jordan 4 亮相網路,這些細節值得你關注!
網路再發達,獵頭也要精通CC,這3個原因算是講透了
CNN 入門講解:圖片在卷積神經網路中是怎麼變化的
Nike 皮鞋驚現網路!這回很可能不是定製!