丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預覽,將在時失效
人工智能開發(fā)者 正文
發(fā)私信給AI研習社
發(fā)送

0

CNN 那么多的網(wǎng)絡有什么區(qū)別嗎?看這里了解 CNN 的發(fā)展歷程

本文作者: AI研習社 編輯:賈智龍 2017-08-18 16:38
導語:如何對 CNN 網(wǎng)絡進行修改?

雷鋒網(wǎng)按:本文原載于知乎CNN 那么多的網(wǎng)絡有什么區(qū)別嗎?如何對 CNN 網(wǎng)絡進行修改?下 ZOMI 的回答。獲得作者授權轉載。

為了解釋這個問題,我覺得很有必要去了解一下 CNN 架構模型的發(fā)展,從 CNN 模型架構的發(fā)展去看待不同的網(wǎng)絡之間的區(qū)別,去學習 CNN 模型的定義。

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

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

CNN 那么多的網(wǎng)絡有什么區(qū)別嗎?看這里了解 CNN 的發(fā)展歷程

圖中的坐標軸我們可以看出橫坐標是操作的復雜度,縱坐標是精度。模型設計一開始的時候模型權重越多模型越大,其精度越高,后來出現(xiàn)了 resNet、GoogleNet、Inception 等網(wǎng)絡架構之后,在取得相同或者更高精度之下,其權重參數(shù)不斷下降。值得注意的是,并不是意味著橫坐標越往右,它的運算時間越大。在這里并沒有對時間進行統(tǒng)計,而是對模型參數(shù)和網(wǎng)絡的精度進行了縱橫對比。

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

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

LeNet5

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

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

CNN 那么多的網(wǎng)絡有什么區(qū)別嗎?看這里了解 CNN 的發(fā)展歷程

LeNet5 小結:

  • 卷積神經網(wǎng)絡使用 3 層架構:卷積、下采樣、非線性激活函數(shù)

  • 使用卷積提取圖像空間特征

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

  • 激活函數(shù)采用了 tanh 或者 sigmoid 函數(shù)

  • 多層神經網(wǎng)絡(MLP)作為最后的分類器

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

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

GAP

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

Dan Ciresan Net

2010 年 Dan Claudiu Ciresan 和 Jurgen Schmidhuber 發(fā)表了一個 GPU 神經網(wǎng)絡。論文里面證明了使用 NVIDIA GTX 280 GPU 之后能夠處理高達 9 層的神經網(wǎng)絡。

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

AlexNet

2012 年,Alex Krizhevsky 發(fā)表了 AlexNet,相對比 LeNet 它的網(wǎng)絡層次更加深,從 LeNet 的 5 層到 AlexNet 的 7 層,更重要的是 AlexNet 還贏得了 2012 年的 ImageNet 競賽的第一。AlexNet 不僅比 LeNet 的神經網(wǎng)絡層數(shù)更多更深,并且可以學習更復雜的圖像高維特征。

AlexNet 小結:

  • 使用 ReLU 函數(shù)作為激活函數(shù),降低了 Sigmoid 類函數(shù)的計算量

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

  • 引入 max-pooling 技術

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

CNN 那么多的網(wǎng)絡有什么區(qū)別嗎?看這里了解 CNN 的發(fā)展歷程

隨著 GPU 提供越來越強悍的性能,同時允許超過 10x 倍數(shù)的訓練增長時間,于是可以處理越來越大的圖片和越來越龐大的數(shù)據(jù)集。暴風雨來臨了,AlexNet 的成功開始了一場小革命,卷積神經網(wǎng)絡 CNN 現(xiàn)在是深度學習的主力,于是有人稱 “網(wǎng)絡越復雜處理的任務越厲害”。

Network-in-network

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

根據(jù) Min Lin 的 NiN 論文,他們說這個 “網(wǎng)絡的網(wǎng)絡”(NIN)能夠提高 CNN 的局部感知區(qū)域。例如沒有 NiN 的當前卷積是這樣的:3x3 256 [conv] -> [maxpooling],當增加了 NiN 之后的卷積是這樣的:3x3 256 [conv] -> 1x1 256 [conv] -> [maxpooling]。

CNN 那么多的網(wǎng)絡有什么區(qū)別嗎?看這里了解 CNN 的發(fā)展歷程

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

VGG

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

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

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

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

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

CNN 那么多的網(wǎng)絡有什么區(qū)別嗎?看這里了解 CNN 的發(fā)展歷程

GoogLeNet

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

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

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

CNN 那么多的網(wǎng)絡有什么區(qū)別嗎?看這里了解 CNN 的發(fā)展歷程

其乍一看基本上是 1×1,3×3 和 5×5 卷積核的并行合并。但是,最重要的是使用了 1×1 卷積核(NiN)來減少后續(xù)并行操作的特征數(shù)量。這個思想現(xiàn)在叫做 “bottleneck layer”。

Bottleneck layer

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

讓我們詳細研究一下這個 Bottleneck layer。假設輸入時 256 個 feature map 進來,256 個 feature map 輸出,假設 Inception 層只執(zhí)行 3x3 的卷積,那么這就需要這行 (256x256) x (3x3) 次卷積左右(大約 589,000 次計算操作)。再假設這次 589,000 次計算操作在 google 的服務器上面用了 0.5ms 的時間,計算開銷還是很大的。現(xiàn)在 Bottleneck layer 的思想是先來減少特征的數(shù)量,我們首先執(zhí)行 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 數(shù)據(jù)集上表現(xiàn)非常出色,并且也將在稍后的架構例如 ResNet 中使用到。

成功的原因是輸入特征是相關的,因此可以通過適當?shù)嘏c 1x1 卷積組合來去除冗余。然后,在卷積具有較少數(shù)目的特征之后,它們可以再次擴展并作用于下一層輸入。

Inception V3

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

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

  • 通過構建平衡深度和寬度的網(wǎng)絡,最大化網(wǎng)絡的信息流。在進入 pooling 層之前增加 feature maps

  • 當網(wǎng)絡層數(shù)深度增加時,特征的數(shù)量或層的寬度也相對應地增加

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

  • 只使用 3x3 卷積

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

CNN 那么多的網(wǎng)絡有什么區(qū)別嗎?看這里了解 CNN 的發(fā)展歷程

網(wǎng)絡架構最后還是跟 GoogleNet 一樣使用 pooling 層 + softmax 層作為最后的分類器。

ResNet

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

CNN 那么多的網(wǎng)絡有什么區(qū)別嗎?看這里了解 CNN 的發(fā)展歷程

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

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

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

ResNet 網(wǎng)絡特征

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

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

SqueezeNet

2016 年 11 月才發(fā)表的文章,一看論文的標題可以被鎮(zhèn)?。?a target="_blank" rel=nofollow>SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and < 0.5MB model size。文章直接說 SqueezeNet 有著跟 AlexNet 一樣的精度,但是參數(shù)卻比 Alex 少了接近 50 倍并且參數(shù)只需要占用很小的內存空間。這里的設計就沒有 SegNet 或者 GoogleNet 那樣的設計架構驚艷了,但 SqueezeNet 卻是能夠保證同樣的精度下使用更少的參數(shù)。

CNN 那么多的網(wǎng)絡有什么區(qū)別嗎?看這里了解 CNN 的發(fā)展歷程

Xception

Xception 模型使用與 ResNet 和 Inception V4 一樣簡單且優(yōu)雅的架構,并且改進了 Inception 模型。

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

CNN 那么多的網(wǎng)絡有什么區(qū)別嗎?看這里了解 CNN 的發(fā)展歷程

here 或者 here 可以找到 Xception 的實現(xiàn)代碼。

總結

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

CNN 那么多的網(wǎng)絡有什么區(qū)別嗎?看這里了解 CNN 的發(fā)展歷程

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

后話

其實作者覺得神經網(wǎng)絡的架構體系對于了解 “深度學習” 和對于了解深度學習的發(fā)展是非常重要的,因此強烈推薦大家去深入研讀一下上面提到的網(wǎng)絡架構對應的文章。

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

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

引用

  1. chenzomi12.github.io

  2. LeNet

  3. Dan Ciresan Net

  4. AlexNet

  5. Network-in-network

  6. VGG

  7. GoogleNet

  8. Inception V3

  9. Batch-normalized Layer

  10. ResNet

  11. SqueezeNet

  12. Xception

  13. Neural Network Architectures

雷峰網(wǎng)版權文章,未經授權禁止轉載。詳情見轉載須知。

CNN 那么多的網(wǎng)絡有什么區(qū)別嗎?看這里了解 CNN 的發(fā)展歷程

分享:
相關文章

編輯

聚焦數(shù)據(jù)科學,連接 AI 開發(fā)者。更多精彩內容,請訪問:yanxishe.com
當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經綁定,現(xiàn)在您可以設置密碼以方便用郵箱登錄
立即設置 以后再說