編者按:考慮到原作者寫的“面向新手的CNN入門指南(二)”沒有太多實質性的計算內容,而是直接推薦論文建議讀者閱讀,因此論智決定跳過這一部分,直接總結過去幾年中計算機視覺和卷積神經網絡領域的一些重大發展。本文主要介紹了從AlexNet到ResNet的網絡架構進步,對原文提到的包括GAN在內的一些有趣的論文不做具體翻譯。
AlexNet(2012)
雖然許多人會認為Yann LeCun在1989年和1998年發表的論文是CNN的開山之作,但真正讓它廣泛地為人所知并進入科研領域的確實是這篇論文:ImageNet Classification with Deep Convolutional Neural Networks。截至目前,它的引用次數已經高達23324。
2012年,來自多倫多大學的Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton創建了一個“大而深的卷積神經網絡”,一舉贏得ILSVRC(ImageNet大規模視覺識別挑戰)。對于不熟悉計算機視覺領域的人來說,ImageNet大賽在CV界的地位可以類比體育界的奧運會,每年來自世界各地的團隊會在大賽中競相角逐,看誰擁有能用于分類、檢測等任務的最佳CV模型。
就在那一年,CNN的Top-5錯誤率穩定在15.4%,而原比賽記錄是26.2%,這是一個令整個行業都為之震驚的進步。可以肯定地說,從那之后,CNN在競賽中已經成為一個家喻戶曉的名字。
在論文中,Hinton等人提出了一種名為AlexNet的新型網絡架構。和當時的已有CNN相比,AlexNet布局精簡,由5個卷積層、最大池化層、dropout層和3個全連接的層組成,可以對1000種目標進行分類。
AlexNet整體架構
提要
在ImageNet數據上訓練網絡,其中包含超過22000個類別的超過1500萬張注釋圖像。
把ReLu作為激活函數(可以縮短訓練用時,因為ReLU比傳統tanh函數快幾倍)。
使用了圖片轉換、水平翻轉和改變顏色通道等圖像增強技術。
加入Dropout層以解決過擬合問題。
用批量隨機梯度下降訓練模型,并手動調試了momentum和權重衰減率的值。
在兩臺GTX 580 GPU上訓練5-6天。
評價
Krizhevsky、Sutskever和Hinton在2012年提出的AlexNet稱得上是計算機視覺領域的一次狂歡,這是CNN模型首次在ImageNet數據集上表現出驚人的性能,他們也為以后的研究貢獻了大量技巧,其中圖像增強技術和dropout層一直被沿用至今。總而言之,這篇論文真正展現了CNN的優勢,并在競賽中創造了破紀錄的成績。
ZF Net(2013)
自從2012年AlexNet在競賽中成功“超神”后,參加ILSVRC 2013的CNN模型數量大幅提升,其中紐約大學的Matthew Zeiler和Rob Fergus憑借ZF Net成為了競賽的最終獲勝者。ZF Net的Top-5錯誤率只有11.2%,雖然從結構上看它和AlexNet大體差不多,但它提出了一些關于提升性能的關鍵想法,而且比賽結果確實也比AlexNet提高了不少。
而ZF Net的成功之處不限于此,Matthew Zeiler和Rob Fergus寫了一篇非常出色的論文:Visualizing and Understanding Convolutional Neural Networks。他們詳細介紹了CNN背后的許多原理,并用可視化的方式說明了filter和權重所發揮的作用。
在論文中,他們首先討論了一個觀點,即CNN的崛起離不開大型數據集的建立和計算機算力的大幅提升。他們也指出研究人員對模型內部機制知之甚少的嚴峻現狀,并認為如果研究人員對CNN缺乏洞察力,那他們其實是在本著“開發更好的模型的愿景去試錯和不斷失敗”。
的確,比起2013年,現在我們對CNN了解得更深了,但不可否認的是許多行業內的人到現在還對它一知半解。所以像Zeiler和Fergus這樣的工作還是很有意義的,這篇論文稍微修改了AlexNet模型的細節,并用可視化的方式揭示了許多有趣的問題。
ZF Net整體架構
提要
除了一些小修改,大體和AlexNet相同。
AlexNet在1500萬張圖片上進行訓練,而ZF Net只用了130萬張圖片。
ZF Net沒有在第一層用11× 11的filter,而是把尺寸改成了7×7并減少步長。這么做的原因是在卷積層中,用更小的filter有利于保留更多原始像素信息,而保留大量信息對第一個卷積層來說尤為重要。
隨著網絡不斷發展,filter的數量也逐漸增加了。
把ReLU作為激活函數,把交叉熵損失作為損失函數,并用批量隨機梯度下降訓練模型。
在GTX 580 GPU上訓練了12天。
開發了一種名為Deconvolutional Network的可視化技術,有助于檢查不同特征激活與輸入像素值的關系。之所以稱它“Deconvenet”(反卷積),是因為它將特征映射回像素空間(與卷積層正好相反)。
DeConvNet
DeConvNet背后的基本思想是在訓練好的CNN的每一層后,在某個位置附加一個“反卷積”(DeConvNet)的操作,它有一個通道能把提取到的特征反過來映射回圖像像素。
往CNN里輸入一張圖像,然后在每一層的計算激活,這是我們熟知的前向傳遞。現在,假設我們想檢查第四個卷積層中某個特征的激活情況,我們可以先把其他所有激活設置為0,只把目標特征映射作為DeConvNet的輸入。DeConvNet和CNN共享filter,所以只要網絡確實都訓練好了,這些特征映射就能通過一系列反池化(unpooling)、整流(rectify)和反濾波重新還原為原始輸入圖像的像素值。
它的出發點是研究圖像中能激活特征映射的結構類型。讓我們看看第一層和第二層的可視化。
第一層和第二層的可視化:很容易看出對于給定filter,哪部分激活得最強
正如面向新手的CNN入門指南(一)中介紹的,CNN的第一層始終是一個低層次特征檢測器,它在上圖中只能檢測到簡單的邊緣和顏色,而第二個卷積層明顯比上一個捕捉到了更多特征。趁熱打鐵,我們來看第3、4、5層。
第三層、第四層和第五層的可視化
這些層檢測到了更多更高層次的特征,如狗臉和鮮花。需要注意的一點是,第一個卷積層后通常都有一個池化層對圖像做下采樣,它的作用是在保留更多的細節特征的前提下減少冗余,比如把32×32×3轉成16×16×3。所以第二個卷積層的filter在原始圖像中“看”到的范圍其實是更廣了。
評價
ZF Net不僅是2013年ImageNet大賽的冠軍,它還提供了有關CNN的大量可視化原理解釋,為后期研究貢獻了提高性能的多種路徑。這些可視化方法既能被用于解釋CNN的內部工作原理,又提供了改進網絡架構的諸多見解,這樣的貢獻使它成為一篇當之無愧的優秀論文。
VGG Net(2014)
簡單而深入,這是VGG Net給所有人的普遍印象。和AlexNet、ZF Net不同,VGG Net并不是ILSVRC 2014的獲勝者,但這并不妨礙它在11.2%的基礎上進一步把Top-5錯誤率降低到7.3%。
VGG是牛津大學的Oxford Visual Geometry Group的名稱縮寫。2014年,牛津大學的Karen Simonyan和Andrew Zisserman創建了一個19層的CNN,它的每一層都使用大小為3×3、pad=1、stride=1的filter,同時網絡的池化核也不再是3×3,而是2×2、stride=2。憑借這個新型架構,牛津大學當年在ImageNet大賽上斬獲分類第二、定位任務第一的佳績。
6種不同的VGG Net架構,其中D性能最好
提要
不同于AlexNet的11×11和ZF Net的7×7,VGG Net把卷積核全部替換成了3×3,因為作者發現2個3×3filter的感受野和1個5×5filter的相同。這樣做的好處是既能保持較小的filter尺寸,又能模擬更大的filter的性能。此外,它也減少了參數數量,允許使用更多的激活函數——多了兩個卷積意味著能多用兩次ReLU。
3個3×3filter的堆疊所獲得的感受野相當于一個7×7的filter。
隨著網絡層數遞增,feature map的寬度高度會逐漸減小(卷積層和池化層的結果),但由于filter數量增加,它的深度會不斷加深。
VGG Net在圖像分類和目標定位這兩個任務上表現得尤為出色。
用Caffe構建模型。
數據增強技術:Scale Jittering。
在每個卷積層后把ReLU作為激活函數,并用批量隨機梯度下降訓練模型。
在4塊Nvidia Titan Black GPU上訓練了兩到三周。
評價
VGG Net是最有影響力的論文之一,因為它論證了卷積神經網絡必須依靠足夠深的深度才能使視覺數據的分層表示發揮作用的觀點。
GoogLeNet(2015)
在GoogLeNet出現之前,上述這些架構在提升CNN性能上的做法就是加深、拓寬神經網絡,為了防止過擬合,他們還要盡可能減少參數數量。但Google顯然不吃這一套,在ILSVRC 2014上,它往一堆CNN中丟了一個Inception,以6.7%的Top-5錯誤率成了最后贏家。
據不完全統計,這應該是第一個真正不再繼續往CNN里懟卷積層和池化層的成熟架構。此外,作者還強調新模型已經針對內存和計算量做了優化,讓研究人員開始注意到加深網絡帶來的各種硬件上的不良影響。
GoogLeNet整體架構
Inception
當第一次看到GoogLeNet的整體架構時,我們一眼就能發現這是一個按順序進行的神經網絡。當然,其中也有不少并行網絡。
上圖的這個模塊被稱為Inception,下面是它的具體構成:
Inception模塊全貌
圖片底部的綠色框是輸入,最上面的綠色框是輸出。如果是一個傳統的CNN,它在每一層只能執行一個操作,比如池化和卷積(還要選filter大小),但Inception模塊允許網絡以并行的方式同時完成所有操作——這也正是作者“naive”的地方。
Naive版Inception
上圖其實是作者的最初想法,但為什么這個Naive版的Inception不起作用?如圖所示,隨著層數的加深,feature map中特征的空間集中度會下降,這就需要更多5×5的filter,相應的網絡也需要更多的參數。因此作者在3×3和5×5的filter前加了一個1×1的filter,它可以幫助降維。假設我們有一個100×100×60的輸入,這時20個1×1的卷積核就能把它降維到100×100×20,無論后面的filter是3×3還是5×5,它們輸入的數組就遠沒有原始數據那么高維了。
換句話說,這也可以被看做是在對特征做池化,因為它的直接結果是減小特征深度,和最大池化層減小feature map的寬度和高度類似。
那么這樣的結構真的有效嗎?GoogLeNet(Inception v1)包含一個Network In Network層、一個中等大小的filter、一個大型的filter和一個池化操作。Network In Network層可以從圖像中提取非常精細的紋理細節信息;而5×5的filter能覆蓋大范圍的感受野,也能從中提取大量信息。通過聯合操作,研究人員能控制輸入的尺寸并防止過擬合。更重要的是,每個卷積層后都跟有ReLU,它能提高網絡的非線性。
簡而言之,這個架構能在減小輸入空間的同時防止過擬合,并兼顧內存占用和計算量的節約。
提要
在整個架構中用了9個Inception模塊,總共超過100層!
沒有使用全連接層,而是用了平均池化,把大小從7×7×1024降到了1×1×1024,減少了大量參數。
使用的參數量是AlexNet的十二分之一。
在測試過程中對同一張圖像進行多次裁剪,輸入網絡用softmax計算平均值后再給出結果。
沿用R-CNN的思路檢測模型。
Inception模塊的后期更新。
用“一些高端GPU”訓練了一周。
評價
GoogLeNet是第一個不按尋常套路堆疊層次的模型,而對于Inception模塊,作者也表示創造層次結構可以提高CNN的性能和計算效率。
ResNet(2015)
8層、19層、22層,之后數年,CNN在深度這條路上越走越遠。想象一個普通的CNN,我們把它的層數翻倍,然后再加幾個層次,這已經很深了,但很可惜,它還是遠遠比不上微軟亞洲研究院何凱明團隊于2015年年底提出的ResNet。
ResNet是一個深度達152層的新型CNN架構,除了在層數上打破了原有的記錄,它在分類、檢測和定位任務上也成績斐然,以3.6%的錯誤率贏得了2015年的ILSVRC。這是一個令人驚嘆的成果,因為目前人類依靠自身認知能力和專業水平所達到的平均成績一直徘徊在5%-10%。
殘差塊(Residual Block)
ResNet的核心是殘差塊,而殘差塊背后的思路是當向網絡中輸入一個x后,x會經歷一系列卷積—ReLU—卷積,我們把這過程中發生的的計算看做函數F(x),再加上輸入的x,實際上網絡要學會的函數應該是H(x)=F(x)+x。
對于以往的CNN,當訓練完成后,H(x)應該恰好等于F(x)。但何凱明團隊認為像這樣直接求H(x)太過困難,既然H(x)=F(x)+x,那不如就從它的的殘差形式F(x)+x開始進行優化。如下圖所示,通過加入一個identity mapping(恒等映射),殘差塊對原始輸入x做了一些細微的調整,這樣做的直接結果就是ResNet的優化過程比普通CNN更簡單。
殘差塊
殘差塊能發揮作用的另一個原始是在反向傳播的反向傳遞過程中,因為H(x)=F(x)+x中包含加法運算,所以它們可以分配梯度,梯度傳播更加順暢。
提要
“超深!”——Yann LeCun。
152層……
僅在通過網絡的前兩層后,輸入的空間就從224×224被壓縮到了56×56。
何凱明團隊嘗試過建立一個1202層的CNN,但可能是因為過擬合,模型準確率較低。
用8塊GPU訓練了兩到三周。
評價
3.6%的錯誤率,這個數字本身就能說明不少問題。雖然距離提出已經過去了2年多,但到目前為止,ResNet還是最好的CNN之一。同時它也開創了殘差塊這種偉大的做法。
福利:殘差塊里的殘差塊(好像有點暈)
基于CNN的其他網絡
這些CNN的目的是解決目標檢測的問題。給定一個圖像,我們希望模型能夠在所有對象上繪制出檢測框,它一般分為兩步:一是用CNN從圖像區域中檢測出特征,二是利用分類器預測當前區域包含目標特征的置信度(圖像分類)。
R-CNN-2013
Fast R-CNN-2015
Faster R-CNN-2015
能夠確定圖像中包含特定對象是一回事,但確定它具體在哪一位置就是另一回事了。從R-CNN到Fast R-CNN再到Faster R-CNN,如今的物體檢測技術正趨于完善。
生成對抗網絡(2014)
這是被Yann LeCun譽為下一個重大發展的神經網絡。它包含兩部分:一個生成模型和一個判別模型。其中判別模型的任務是確定輸入圖像的真實性:它是來自數據集的自然圖像,還是其他渠道生成的偽圖像。而生成模型的任務是通過判別模型的判定結果一遍遍提升自我,生成能愚弄對方的偽圖像。
如今圍繞GAN的研究有很多,但因為不是很成熟,許多人會建議新人不要盲目去深入嘗試。但正如Yan Le Leun在他的Quora文章中所說的那樣,GAN的判別模型其實已經意識到了數據的內部表示,它了解真實圖像和生成圖像之間的差異,因此把它作為CNN的特征提取器也未嘗不可。如果不放手實踐,可能你將錯失許多學習成長的樂趣。
生成圖像注釋(2014)
如果把CNN和RNN結合在一起,我們會得到什么?反正肯定不是R-CNN :laughing: 。Andrej Karpathy和李飛飛在這篇論文里向我們展示了一個很有趣的成果,即用CNN和雙向RNN生成不同圖像區域內的自然語言注釋。
具體內容我們這里不做詳談。它的貢獻在于將計算機視覺和自然語言處理等領域結合起來,為構建跨領域任務模型打開了一扇新的大門。
-
神經網絡
+關注
關注
42文章
4779瀏覽量
101052 -
計算機視覺
+關注
關注
8文章
1700瀏覽量
46077 -
深度學習
+關注
關注
73文章
5512瀏覽量
121415
原文標題:面向新手的CNN入門指南(二)——必讀的十篇深度學習論文
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論