2006年Hinton他們的Science Paper再次引起人工神經網絡的熱潮,當時提到,2006年雖然Deep Learning的概念被提出來了,但是學術界的大家還是表示不服。當時有流傳的段子是Hinton的學生在臺上講paper時,臺下的機器學習大牛們不屑一顧,質問你們的東西有理論推導嗎?有數學基礎嗎?搞得過SVM之類嗎?回頭來看,就算是真的,大牛們也確實不算無理取鬧,是騾子是馬拉出來遛遛,不要光提個概念。
時間終於到了2012年,Hinton的學生Alex Krizhevsky在寢室用GPU死磕了一個Deep Learning模型,一舉摘下了視覺領域競賽ILSVRC 2012的桂冠,在百萬量級的ImageNet數據集合上,效果大幅度超過傳統的方法,從傳統的70%多提升到80%多。個人覺得,當時最符合Hinton他們心境的歌非《我不做大哥好多年》莫屬。
這個Deep Learning模型就是後來大名鼎鼎的AlexNet模型。這從天而降的AlexNet爲何能耐如此之大?有三個很重要的原因:
- 大量數據,Deep Learning領域應該感謝李飛飛團隊搞出來如此大的標註數據集合ImageNet;
- GPU,這種高度並行的計算神器確實助了洪荒之力,沒有神器在手,Alex估計不敢搞太複雜的模型;
- 算法的改進,包括網絡變深、數據增強、ReLU、Dropout等,這個後面後詳細介紹。
- 數據擴展:裁剪,鏡像,平移,旋轉,顏色,光照等。
從此,Deep Learning一發不可收拾,ILSVRC每年都不斷被Deep Learning刷榜,如圖1所示,隨着模型變得越來越深,Top-5的錯誤率也越來越低,目前降到了3.5%附近,而在同樣的ImageNet數據集合上,人眼的辨識錯誤率大概在5.1%,也就是目前的Deep Learning模型的識別能力已經超過了人眼。而圖1中的這些模型,也是Deep Learning視覺發展的里程碑式代表。
圖1. ILSVRC歷年的Top-5錯誤率
在仔細分析圖1中各模型結構之前我們先需要了解一下深度學習三駕馬車之一————LeCun的LeNet網絡結構。爲何要提LeCun和LeNet,因爲現在視覺上這些神器都是基於卷積神經網絡(CNN)的,而LeCun是CNN的祖師爺,LeNet是LeCun打造的CNN經典之作。
LeNet以其作者名字LeCun命名,這種命名方式類似的還有AlexNet,後來又出現了以機構命名的網絡結構GoogLeNet、VGG,以核心算法命名的ResNet。LeNet有時也被稱作LeNet5或者LeNet-5,其中的5代表五層模型。不過別急,LeNet之前其實還有一個更古老的CNN模型。
最古老的CNN模型
1985年,Rumelhart和Hinton等人提出了後向傳播(Back Propagation,BP)算法[1](也有說1986年的,指的是他們另一篇paper:Learning representations by back-propagating errors),使得神經網絡的訓練變得簡單可行,這篇文章在Google Scholar上的引用次數達到了19000多次,目前還是比Cortes和Vapnic的Support-Vector Networks稍落後一點,不過以Deep Learning最近的發展勁頭來看,超越指日可待。
幾年後,LeCun利用BP算法來訓練多層神經網絡用於識別手寫郵政編碼[2],這個工作就是CNN的開山之作,如圖2所示,多處用到了5*5的卷積核,但在這篇文章中LeCun只是說把5*5的相鄰區域作爲感受野,並未提及卷積或卷積神經網絡。關於CNN最原始的雛形感興趣的讀者也可以關注一下文獻[10]。
圖2. 最古老的CNN網絡結構圖
LeNet
1998年的LeNet5[4]標註着CNN的真正面世,但是這個模型在後來的一段時間並未能火起來,主要原因是費機器(當時苦逼的沒有GPU啊),而且其他的算法(SVM,老實說是你乾的吧?)也能達到類似的效果甚至超過。
圖3. LeNet網絡結構
初學者也可以參考一下Caffe中的配置文件:
https://github.com/BVLC/caffe/blob/master/examples/mnist/lenet.prototxt
AlexNet、VGG、GoogLeNet、ResNet對比
LeNet主要是用於識別10個手寫數字的,當然,只要稍加改造也能用在ImageNet數據集上,但效果較差。而本文要介紹的後續模型都是ILSVRC競賽歷年的佼佼者,這裏具體比較AlexNet、VGG、GoogLeNet、ResNet四個模型。如表1所示。
模型名 | AlexNet | VGG | GoogLeNet | ResNet |
---|---|---|---|---|
初入江湖 | 2012 | 2014 | 2014 | 2015 |
層數 | 8 | 19 | 22 | 152 |
Top-5錯誤 | 16.4% | 7.3% | 6.7% | 3.57% |
Data Augmentation | + | + | + | + |
Inception(NIN) | – | – | + | – |
卷積層數 | 5 | 16 | 21 | 151 |
卷積核大小 | 11,5,3 | 3 | 7,1,3,5 | 7,1,3,5 |
全連接層數 | 3 | 3 | 1 | 1 |
全連接層大小 | 4096,4096,1000 | 4096,4096,1000 | 1000 | 1000 |
Dropout | + | + | + | + |
Local Response Normalization | + | – | + | – |
Batch Normalization | – | – | – | + |
AlexNet
接下里直接上圖即可,AlexNet結構圖如下:
圖4. AlexNet網絡結構
換個視角:
圖5. AlexNet網絡結構精簡版
AlexNet相比傳統的CNN(比如LeNet)有哪些重要改動呢:
(1) Data Augmentation
數據增強,這個參考李飛飛老師的cs231課程是最好了。常用的數據增強方法有:
- 水平翻轉
- 隨機裁剪、平移變換
- 顏色、光照變換
(2) Dropout
Dropout方法和數據增強一樣,都是防止過擬合的。Dropout應該算是AlexNet中一個很大的創新,以至於Hinton在後來很長一段時間裏的Talk都拿Dropout說事,後來還出來了一些變種,比如DropConnect等。
(3) ReLU激活函數
用ReLU代替了傳統的Tanh或者Logistic。好處有:
- ReLU本質上是分段線性模型,前向計算非常簡單,無需指數之類操作;
- ReLU的偏導也很簡單,反向傳播梯度,無需指數或者除法之類操作;
- ReLU不容易發生梯度發散問題,Tanh和Logistic激活函數在兩端的時候導數容易趨近於零,多級連乘後梯度更加約等於0;
- ReLU關閉了右邊,從而會使得很多的隱層輸出爲0,即網絡變得稀疏,起到了類似L1的正則化作用,可以在一定程度上緩解過擬合。
當然,ReLU也是有缺點的,比如左邊全部關了很容易導致某些隱藏節點永無翻身之日,所以後來又出現pReLU、random ReLU等改進,而且ReLU會很容易改變數據的分佈,因此ReLU後加Batch Normalization也是常用的改進的方法。
(4) Local Response Normalization
Local Response Normalization要硬翻譯的話是局部響應歸一化,簡稱LRN,實際就是利用臨近的數據做歸一化。這個策略貢獻了1.2%的Top-5錯誤率。
(5) Overlapping Pooling
Overlapping的意思是有重疊,即Pooling的步長比Pooling Kernel的對應邊要小。這個策略貢獻了0.3%的Top-5錯誤率。
(6) 多GPU並行
這個不多說,比一臂之力還大的洪荒之力。
VGG
VGG結構圖
圖6. VGG系列網絡結構
換個視角看看VGG-19:
圖7. VGG-19網絡結構精簡版
VGG很好地繼承了AlexNet的衣鉢,一個字:深,兩個字:更深。
GoogLeNet
圖8. GoogLeNet網絡結構
GoogLeNet依然是:沒有最深,只有更深。
主要的創新在於他的Inception,這是一種網中網(Network In Network)的結構,即原來的結點也是一個網絡。Inception一直在不斷髮展,目前已經V2、V3、V4了,感興趣的同學可以查閱相關資料。Inception的結構如圖9所示,其中1*1卷積主要用來降維,用了Inception之後整個網絡結構的寬度和深度都可擴大,能夠帶來2-3倍的性能提升。
圖9. Inception結構
ResNet
網絡結構如圖10所示。
圖10. ResNet網絡結構
ResNet依然是:沒有最深,只有更深(152層)。聽說目前層數已突破一千。
主要的創新在殘差網絡,如圖11所示,其實這個網絡的提出本質上還是要解決層次比較深的時候無法訓練的問題。這種借鑑了Highway Network思想的網絡相當於旁邊專門開個通道使得輸入可以直達輸出,而優化的目標由原來的擬合輸出H(x)變成輸出和輸入的差H(x)-x,其中H(X)是某一層原始的的期望映射輸出,x是輸入。
圖11. ResNet網絡結構
總結
Deep Learning一路走來,大家也慢慢意識到模型本身結構是Deep Learning研究的重中之重,而本文回顧的LeNet、AlexNet、GoogLeNet、VGG、ResNet又是經典中的經典。
16年又有很多網絡提出來,比較典型的有
Inception-ResNet-v2: 將深度和寬帶融合到一起
爲了進一步推進這個領域的進步,今天Google團隊宣佈發佈Inception-ResNet-v2(一種卷積神經網絡——CNN),它在ILSVRC圖像分類基準測試中實現了當下最好的成績。Inception-ResNet-v2是早期Inception V3模型變化而來,從微軟的殘差網絡(ResNet)論文中得到了一些靈感。相關論文信息可以參看我們的論文Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning(Inception-v4, Inception-ResNet以及殘差連接在學習上的影響):
殘差連接(Residual connections )允許模型中存在shortcuts,可以讓研究學者成功地訓練更深的神經網絡(能夠獲得更好的表現),這樣也能明顯地簡化Inception塊。將兩種模型架構對比,見下圖:
在第二幅Inception-ResNet-v2圖中最上部分,你能看到整個網絡擴展了。注意該網絡被認爲比先前的Inception V3還要深一些。在圖中主要部分重複的殘差區塊已經被壓縮了,所以整個網絡看起來更加直觀。另外注意到圖中inception區塊被簡化了,比先前的Inception V3種要包含更少的並行塔 (parallel towers)。
如下方圖表所示,Inception-ResNet-v2架構的精確度比之前的最優模型更高,圖表中所示爲基於單個圖像的ILSVRC 2012圖像分類標準得出的排行第一與排行第五的有效精確度。此外,該新模型僅僅要求兩倍於Inception v3的容量與計算能力。
例如,儘管Inception v3與Inception-ResNet-v2都很擅長識別每一條狗所屬的類別,這種新模型的性能更爲顯著。例如,舊模型可能會錯誤地將右邊的圖片識別爲阿拉斯加雪橇犬,新模型Inception-ResNet-v2能夠準確地識別兩個圖片中狗的類別。
阿拉斯加雪橇犬(左)和西伯利亞雪橇犬(右)。圖片來源:維基百科。
爲了使人們理解開始試驗,我們也將要發佈新型Inception-ResNet-v2預訓練實例,作爲TF-Slim 圖像模型庫的組成部分。
看到本研究領域關於這一經過改進的模型所取得的進展,而且人們開始採用這種新模型,並將其性能在多種任務作對比,我們爲此感到非常興奮。你也想要開始使用這種新模型嗎?讓我們一起來看看附帶的操作指示,學會如何訓練,評估或微調一個網絡。
Inception-ResNet-v2具體代碼實現過程參見:
https://github.com/tensorflow/models/blob/master/slim/nets/inception_resnet_v2.py
隨着2012年AlexNet的一舉成名,CNN成了計算機視覺應用中的不二選擇。目前,CNN又有了很多其他花樣,比如R-CNN系列,
FractalNet
ResNet 是 ImageNet 2015 冠軍,通過讓網絡對殘差進行學習,在深度和精度上做到了比CNN 更加強大。於是有人認爲殘差結構對此很重要,本文提出一個不依賴於殘差的極深(Ultra-Deep)架構,指出殘差學習對極深CNN 並非必需。論文提出了極深CNN 中首個 ResNet 的替代品 FractalNet,並開發了一種新的正則化規則,無需數據增強就能大幅超越殘差網絡性能。作者稱該結構可以自動容納過去已有的強大結構。
-
【題目】分形網絡:無殘差的極深神經網絡(FractalNet:Ultra-Deep Neural Networks without Residuals)
-
【作者】芝加哥大學 GustavLarsson,豐田工大學芝加哥分校 Michael Maire及 Gregory Shakhnarovich
我們爲神經網絡的宏觀架構引進了一種基於自相似的設計策略。單一擴展規則的重複應用生成一個極深的網絡,其結構佈局正是一個截斷的分形。這樣的網絡包含長度不同的相互作用子路徑,但不包含任何直通式連接(pass-through connections):每個內部信號在被下一層看見之前,都被一個過濾器和非線性部件變換過了。這個性質與當前顯式規劃極深網絡的結構使得訓練成爲一個殘差學習問題的方法形成鮮明對比。我們的實驗表明,殘差表示不是極深卷積神經網絡成功的基本要素。分形設計在 CIFAR-100 數據集(https://www.cs.toronto.edu/~kriz/cifar.html) 上達到 22.85% 的錯誤率,與殘差網絡的最佳水平持平。
除了高性能之外,分形網絡還展現了有趣的性質。它們可被認爲是各種深度的子網絡的隱式聯合且計算效率高。我們探討了對於訓練的影響,簡單提及了與“師徒”行爲的聯繫,最重要的,展示了提取高性能固定深度子網絡的能力。爲了實現後一個任務,我們發展路徑捨棄方法(drop-path;對 dropout 的自然擴展)正則化分形架構裏子路徑的協同適應。通過這樣的正則化,分形網絡展示了一種無例外的性質:淺層子網絡給出快捷的答案,而深度子網絡(有較多延遲)給出更精準的答案。
最近的 ResNet 在深度和精度上比卷積神經網絡(CNN)做出了極大進步,方法是讓網絡對殘差進行學習。ResNet 的變型以及類似的架構通過直接通道(pass-through channel;相當於恆等函數的網絡)使用了共同的初始化和錨定技術。這樣,訓練有兩個方面不同。第一,目標變成對殘差輸出的學習而不是對未被提及的絕對映射學習。第二,這些網絡展示了一種深度監督,因爲接近恆等的層有效減少了損失距離。何愷明等人 推測前者(即殘差的構造)是關鍵的。
答案並非如此。我們通過構造不依賴於殘差的極深架構揭示了這一點。我們的設計原則非常單純,用“分形”一個詞以及一幅圖(圖 1)就足以描述。可是,分形網絡隱含地重現了過去的成功架構裏硬性加入的許多性質。深度監督不僅自然出現,並且驅動了一種網絡內部的“師徒學習”(student-teacher learning)。其他設計的模塊化構成單元幾乎都是分形網絡嵌套子結構的特殊情形。
對於分形網絡,訓練的簡單性與設計的簡單性相對應。單個連接到最後一層的損失函數足以驅動內部行爲去模仿深度監督。參數是隨機初始化的。由於包含不同深度的子網絡,分形網絡對總體深度的選取不敏感;讓深度足夠,然後訓練會刻劃出有用的子網絡集合。
圖 1:分形架構。左:簡單的擴展規則生成分形架構。基礎情形 f1(z) 包含輸入輸出之間單個選定類型的層 (比如卷積層)。連接層計算了逐元素平均。右:深度卷積網絡週期性地通過彙集來降低空間分辨率。分形版本使用 fC 作爲彙集層之間的建構單元。把 B 個這樣的塊堆起來就得到一個網絡,其總深度是 B * 2^{C-1} (通過卷積層衡量)。這個例子的深度是 40 (B = 5, C = 4)。
分形設計導致的一系列涌現行爲可能會讓近期爲了達到類似效果發展出的工程技巧變得不那麼必要。這些技巧包括,恆等初始化的殘差函數形式,手動深度監督,手工雕琢的架構模塊,以及師徒訓練體系。第
2 節回顧了這些相互關聯的技術。混合設計當然可以把它們中任何一個與分形架構集成;關於這種混合體在多大程度上是多餘或是互相促進這個問題,我們持開放態度。
我們的主要貢獻有以下兩點:
-
引入了 FractalNet,第一個在極深卷積神經網絡領域對於ResNet 的替代品。FractalNet 在科學上令人吃驚,它表明了殘差學習對於極深網絡不是必需的。
-
通過分析和實驗,我們闡釋了FractalNet 與一系列被加入到之前深度網絡設計的那些現象之間的聯繫。
還有一個貢獻,我們爲極深網絡開發了一種稱爲路徑捨棄的新的正則化規則。已有的關於深度殘差網絡的工作其實缺乏有效正則化技術的展示,而僅僅依賴於數據增強。無需數據增強,通過 dropout 和路徑捨棄訓練的分形網絡遠遠超過了報道的殘差網絡的性能。
路徑捨棄不僅是一種直觀的正則化策略,而且提供了保證訓練出的分形網絡擁有無例外性質的方法。具體來說,訓練期間對路徑捨棄的特定安排阻止了不同深度的子網絡的協同適應。結果就是,淺和深的網絡必需各自能輸出正確結果。測試期間,對淺子網絡的請求在整個網絡完成之前給出快速而精度普通的答案。
第 3 節給出了分形網絡和路徑捨棄的細節。第 4 節提供了基於 CIFAR-10, CIFAR-100 以及 SVHN 數據集與殘差網絡的比較。我們還評估了正則化和數據增強策略,探究了訓練期間的子網絡師徒行爲,評價了通過路徑捨棄得到的 anytime 網絡。第 5 節提供了綜合。通過容納許多已知但看起來不同的設計原理,自相似結構也許會變成神經網絡架構的基本組件。
2. 相關研究(略)
我們從對圖1中描繪的想法的正式陳述開始。我們將以卷積神經網絡作爲例子和實驗平臺。但是,需要強調我們的框架更有一般性。原則上,爲了生成其他分形架構,圖1 中的卷積層可以被替換爲不同的層類型,甚至是定製化的模塊或子網絡。
令C 表示截斷分形
fC(.)的指標。我們的網絡結構、連接以及層類型,通過 f C(.) 定義。包含單個卷積層的網絡是基礎情形:
f1(z)= conv(z) (1)
我們遞歸定義接下來的分形:
f{C1}(z)= [ (fCo fC)(z)] ⊕[ conv(z) ] (2)
這裏 o 表示複合,而 ⊕ 表示連接操作。當以圖 1 的風格來畫時,C 對應於列數,或者說網絡fC(.)的寬度。深度定義爲從輸入到輸出的最長路徑上的 conv 層的個數,正比於2^{C-1}。用於分類的卷積網絡通常分散佈置彙集層。爲了達到相同目的,我們使用 fC(.) 作爲構建單元,將之與接下來的彙集層堆疊B 次,得到總深度 B * 2^{C-1}。
連接操作 ⊕ 把兩個特徵塊合爲一個。這裏,一個特徵塊是一個conv 層的結果:在一個空間區域爲固定的一些通道維持活化的張量。通道數對應於前面的 conv層的過濾器的個數。當分形被擴展,我們把相鄰的連接合併成單個連接層;如圖 1右側所示,這個連接層跨越多列。連接層把所有其輸入特徵塊合併成單個輸出塊。
連接層行爲的幾種選擇看起來都是合理的,包括拼接和加法。我們把每個連接實例化,計算其輸入的逐元素平均。這對於卷積網絡是恰當的,在那裏通道數對一個分形塊裏的所有conv 層是相同的。平均操作可能看起來類似 ResNet 的加法操作,但有幾個關鍵不同:
-
ResNet 明確區分了直接通過與殘差信號。在 FractalNet裏,沒有什麼信號是優越的。每一個對聯合層的輸入是上一個 conv層的輸出。單憑網絡結構本身不能識別什麼是主要的。
-
路徑捨棄正則化,如第 3.1節描述,強制讓每個連接層的輸入獨自可靠。這降低了回報,即便是隱式學習把一個信號的一部分作爲另一個的殘差這種情形。
-
實驗表明我們可以提取僅包含一列的高性能子網絡 (4.2節)。這樣的子網絡實際上不包含連接。它們不提供可以與殘差相加的信號。
這些性質保證了連接層不是殘差學習的一個替代方法。
3.1 基於路徑捨棄的正則化
Dropout[10] 和 drop-connect [35] 通過修改網絡層序列之間的相互作用來減弱共同適應(co-adaptation)。由於分形網絡包含額外的大尺度結構,我們提出使用一種類似的粗粒度正則化策略來輔助這些技術。
圖 2 解釋了路徑捨棄。如同 dropout禁止了活化的共同適應,路徑捨棄通過隨機丟棄連接層的操作數來禁止平行路徑的共同適應。這壓制了網絡使用一個路徑作爲錨標,用另一個作爲修正(這可能導致過擬合) 的行爲。我們考慮兩個採樣策略:
-
局部:連接層以固定機率捨棄每個輸入,但我們保證至少一個輸入保留。
-
全局:每條路徑是爲了整個網絡選出的。我們限制這條路徑是單列的,激勵每列成爲有力的預測器。
如同dropout,信號可能需要恰當的縮放。對於逐元素平均,這是平凡的;連接僅僅計算了活躍輸入的平均。
圖 2:分形網絡。某些層之間的連接被停用後仍能工作,前提是從輸入到輸出的某些路徑還存在。路徑捨棄保證至少一條這樣的路徑存在,與此同時許多其它路徑被停用。訓練期間,對每個 mini-batch 展示不同的活躍子網絡阻止了平行路徑的共同適應。全局採樣策略返回單列作爲子網絡。與局部採樣交替使用鼓勵了每列發展爲表現良好的單獨運作的子網絡。
實驗中,我們使用了 dropout 以及對路徑捨棄採用了 50% 局部以及 50%全局的混合採樣。我們在每個 mini-batch 採樣一個新的子網絡。內存足夠的情況下,對每個mini-batch,我們可以同時對一個局部樣本和所有全局樣本求值。
全局路徑捨棄不僅僅是作爲一個正則化器,也是一個診斷工具。監控單列的表現體提供了關於網絡和訓練機制的洞察,這將在 4.3節進一步提及。單個強大的列也讓使用者在速度和精度方面取捨。
3.2 數據增強
數據增強可以顯著降低對正則化的需求。ResNet 展示了這一點,對 CIFAR-100 數據集從44.76%的錯誤率降低到27.22%。雖然數據增強對分形網絡有好處,我們提出一點,那就是路徑捨棄提供了高度有效的正則化,讓它們無需數據增強也能達到有競爭力的結果。
3.3 優化
我們使用含衝量的隨機梯度下降來訓練分形網絡。我們對每個 conv層引進批量歸一化(卷積,批量歸一化,ReLU)。
我們使用 Caffe 實現 FractalNet。純粹爲了實現的方便,我們把圖 1 中彙集和連接層的順序翻轉了。每列在跨越所有列的連接層之前單獨彙集,而不是在那之後。
我們採用 CIFAR-100, CIFAR-10 以及 SVHN 作爲比較用的數據集。我們評估在每個數據集的標準分類任務上的表現。這些數據集都由 32 x 32 圖片組成,所以我們固定分形網絡的塊數爲 5 (B=5),採用 2 x 2 的不重疊的 max-pooling。這就把輸入的 32 x 32 分辨率變成 1 x 1。網絡終端連接了 softmax 的預測層。
除非專門提及,我們把5個塊中過濾器的個數設爲(64,128, 256, 512, 512)。這個遞增數列類似於 VGG-16 和 ResNet。這符合分辨率降低一半後通道數加倍的傳統。
4.1 訓練
對於使用 dropout 的實驗,我們固定每塊的丟棄率爲 (0%, 10%, 20%, 30%, 40%)。局部路徑捨棄採用 15% 的捨棄率。
我們在 CIFAR-10/CIFAR-100 上訓練了 400 個 epoch,在 SVHN 上訓練了 20 個 epoch;每當剩餘的 epoch 數減半,我們就把學習速率縮小 10。學習速率初始爲 0.2。我們使用隨機梯度下降方法,批處理大小爲 100,衝量爲 0.9。對參數使用 Xavier 初始化。
對 CIFAR-10 和 CIFAR-100 有標準的數據增強技術,僅包含平移和鏡像翻轉。平移量是 -4 到 4 的隨機數。有必要的時候圖像在減去平均值後以 0 補全。一半的圖像水平被翻轉。我們給使用的數據增強不超過這些所得到的結果標記爲“+”。標記爲“ ”的使用了更多的增強技術;精確的策略可能會不一樣。
4.2 結果
表1.CIFAR-100/CIFAR-10/SVHN.
表 1 報告了 FractalNet 的表現,對應 C = 3 列,應用到 CIFAR 和 SVHN分類任務上。也列了所有競爭方法的分數。整個表上 FractalNet 超過了原始 ResNet的表現。使用數據增強後,FractalNet 在 CIFAR-100 上的表現幾乎跟 ResNet的最佳變型一模一樣。不使用數據增強和正則化,我們模型在 CIFAR-100 和 CIFAR-10 上的表現優於 ResNet 和隨機深度的 ResNet。這提示與 ResNet 相比FractalNet 可能不那麼容易過擬合。所有方法在 SVHN上表現都不錯,因此那個數據集沒什麼區分度。
不使用數據增強的實驗強調了路徑捨棄正則化的能力。對於 CIFAR-100,添加路徑捨棄把錯誤率從35.34% 降低到 28.20%。未正則化的 ResNet 則差得遠 (44.76%),而通過隨機深度正則化的 ResNet達到的錯誤率爲 37.80%,還不如我們未正則化的錯誤率 35.34%。CIFAR-10上表現類似。
與數據增強組合起來後,路徑捨棄要麼提高了精度,或者效果不顯著。通過路徑捨棄,FractalNet 在CIFAR-10 上達到所有模型中的最佳誤差率。
對於CIFAR-10,分形網絡的最深的那列統計上與整個網絡在統計上不能區分。這提示,對於這個任務,分形網絡可能更重要的是作爲學習框架,而不是最終的模型架構。
表2. FractalExpansion.
表 2 表明 FractalNet 在通過增加 C 得到極深網絡時性能並不下降 (C=6 對應160 層)。這個表裏的分數不能跟表 1 裏的比。
表3. FractalColumns.
表 3 提供的基準顯示,普通深度神經網絡當層數達到 40 後就會下降。我們的經驗中,普通的 160層的網絡完全不能收斂。表 3 還高亮了使用 FractalNet以及路徑捨棄作爲提取已訓練好網絡的能力。
4.3 內省
看圖 3 中 40 層的分形網絡訓練期間的演化。通過追蹤每一列我們發現,40層的列一開始改進緩慢,但當網絡中其它部分的損失開始穩定後會加快。普通的 40層網絡從來不會快速改進。
圖3.
我們猜測分形結構觸發了類似於深度監督和以及師徒信息流的效應。第 4 列每隔一層就與第 3列連接,而每隔 4 層這個連接不涉及別的列。當分形網絡部分依賴於信號從第 3 列流過,路徑捨棄對第 4 列施加壓力,以產生一個當第 3列被移除時的替代信號。一個特定的捨棄僅僅需要第 4 列中兩個相鄰層代替第 3列中的一層。這相當於小小的師徒問題。
FractalNet展示了路徑長度對訓練極深神經網絡至關重要;而殘差的影響是偶然的。關鍵在於 FractalNet和 ResNet 具有共同特性:標稱網絡深度很大,但訓練過程中梯度傳播的有效路徑更短。分形結構可能是滿足這一需求的最簡單方式,並且能達到甚至超越循環網絡的經驗性能。它們能避免深度太大;過多的深度會使訓練變慢,但不會增加準確度。
通過 drop-path極深分形網絡的正則化是直接而有效的。對於需要快速回應的應用,drop-path能對分形網絡裏的延遲和精確性做折中。
我們的分析連接了分形網絡中的突發內部行爲與構建在其他設計中的現象。分形網絡的子結構與一些卷積網絡中作爲結構模塊的人工設計模塊相似。它們的進化或許能仿真深度監視和師徒學習。
(DenseNet), 將所有層都連接到最後
[參考文獻]
[1] DE Rumelhart, GE Hinton, RJ Williams, Learning internal representations by error propagation. 1985 – DTIC Document.
[2] Y. LeCun , B. Boser , J. S. Denker , D. Henderson , R. E. Howard , W. Hubbard and L. D. Jackel, “Backpropagation applied to handwritten zip code recognition”, Neural Computation, vol. 1, no. 4, pp. 541-551, 1989.
[3] Kaiming He, Deep Residual Learning, http://image-net.org/challenges/talks/ilsvrc2015_deep_residual_learning_kaiminghe.pdf
[4] Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner. Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11):2278–2324, 1998.
[5] A. Krizhevsky, I. Sutskever, and G. Hinton. Imagenet classification with deep convolutional neural networks. In Advances in Neural Information Processing Systems 25, pages 1106–1114, 2012.
[6] Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott E. Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich: Going deeper with convolutions. CVPR 2015: 1-9
[7] Karen Simonyan, Andrew Zisserman: Very Deep Convolutional Networks for Large-Scale Image Recognition. CoRR abs/1409.1556 (2014)
[8] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep Residual Learning for Image Recognition. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016
[9] 一些對應的caffe實現或預訓練好的模型: https://github.com/BVLC/caffe https://github.com/BVLC/caffe/wiki/Model-Zoo
[10] K. Fukushima. Neocognitron: A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position. Biological Cybernetics, 36(4): 93-202, 1980.