卷積神經網絡(CNN)在計算機視覺領域已經取得了史無前例的巨大成功,但咱們目前對其效果顯著的緣由尚未全面的理解。近日,約克大學電氣工程與計算機科學系的 Isma Hadji 和 Richard P. Wildes 發表了論文《What Do We Understand About Convolutional Networks?》,對卷積網絡的技術基礎、組成模塊、當前現狀和研究前景進行了梳理,介紹了咱們當前對 CNN 的理解。機器之心對本論文進行了摘要式的編譯,更詳細的信息請參閱原論文及其中索引的相關文獻。
1 引言
1.1 動機
過去幾年來,計算機視覺研究主要集中在卷積神經網絡(常簡稱爲 ConvNet 或 CNN)上。這些工做已經在普遍的分類和迴歸任務上實現了新的當前最佳表現。相對而言,儘管這些方法的歷史能夠追溯到多年前,但對這些系統獲得出色結果的方式的理論理解還很滯後。事實上,當前計算機視覺領域的不少成果都是將 CNN 看成黑箱使用,這種作法是有效的,但其有效的緣由卻很是模糊不清,這嚴重知足不了科學研究的要求。尤爲是這兩個能夠互補的問題:(1)在被學習的方面(好比卷積核),究竟被學習的是什麼?(2)在架構設計方面(好比層的數量、核的數量、池化策略、非線性的選擇),爲何某些選擇優於另外一些選擇?這些問題的答案不只有利於提高咱們對 CNN 的科學理解,並且還能提高它們的實用性。
此外,目前實現 CNN 的方法須要大量訓練數據,並且設計決策對結果表現有很大的影響。更深度的理論理解應該能減輕對數據驅動的設計的依賴。儘管已有實證研究調查了所實現的網絡的運行方式,但到目前爲止,這些結果很大程度上還侷限在內部處理過程的可視化上,目的是爲了理解 CNN 中不一樣層中發生的狀況。
1.2 目標
針對上述狀況,本報告將概述研究者提出的最突出的使用多層卷積架構的方法。要重點指出的是,本報告將經過概述不一樣的方法來討論典型卷積網絡的各類組件,並將介紹它們的設計決策所基於的生物學發現和/或合理的理論基礎。此外,本報告還將概述經過可視化和實證研究來理解 CNN 的不一樣嘗試。本報告的最終目標是闡釋 CNN 架構中涉及的每個處理層的做用,聚集咱們當前對 CNN 的理解以及說明仍待解決的問題。
1.3 報告提綱
本報告的結構以下:本章給出了回顧咱們對卷積網絡的理解的動機。第 2 章將描述各類多層網絡並給出計算機視覺應用中使用的最成功的架構。第 3 章將更具體地關注典型卷積網絡的每種構造模塊,並將從生物學和理論兩個角度討論不一樣組件的設計。最後,第 4 章將會討論 CNN 設計的當前趨勢以及理解 CNN 的工做,而且還將重點說明仍然存在的一些關鍵短板。
2 多層網絡
總的來講,本章將簡要概述計算機視覺領域中所用的最突出的多層架構。須要指出,儘管本章涵蓋了文獻中最重要的貢獻,但卻不會對這些架構進行全面概述,由於其它地方已經存在這樣的概述了(好比 [17, 56, 90])。相反,本章的目的是爲本報告的剩餘部分設定討論基礎,以便咱們詳細展現和討論當前對用於視覺信息處理的卷積網絡的理解。
2.1 多層架構
在近來基於深度學習的網絡取得成功以前,最早進的用於識別的計算機視覺系統依賴於兩個分離但又互補步驟。第一步是經過一組人工設計的操做(好比與基本集的卷積、局部或全局編碼方法)將輸入數據變換成合適的形式。對輸入的變換一般須要找到輸入數據的一種緊湊和/或抽象的表徵,同時還要根據當前任務注入一些不變量。這種變換的目標是以一種更容易被分類器分離的方式改變數據。其次,被變換的數據一般用於訓練某些類型的分類器(好比支持向量機)來識別輸入信號的內容。一般而言,任何分類器的表現都會受到所使用的變換方法的嚴重影響。
多層學習架構爲這一問題帶來了不一樣的前景,這種架構提出不只要學習分類器,並且要從數據中直接學習所需的變換操做。這種形式的學習一般被稱爲「表徵學習」,當應用在深度多層架構中時即被稱爲「深度學習」。網絡
多層架構能夠定義爲容許從輸入數據的多層抽象中提取有用信息的計算模型。通常而言,多層架構的設計目標是在更高層凸顯輸入中的重要方面,同時能在遇到更不重要的變化時變得愈來愈穩健。大多數多層架構都是將帶有交替的線性和非線性函數的簡單構建模塊堆疊在一塊兒。多年以來,研究者已經提出了不少不一樣類型的多層架構,本章將會覆蓋計算機視覺應用中所採用的最爲突出的此類架構。人工神經網絡是其中的關注重點,由於這種架構的表現很是突出。爲了簡單起見,後面會直接將這類網絡稱爲「神經網絡」。
典型的神經網絡由一個輸入層、一個輸出層和多個隱藏層構成,其中每一層都包含多個單元。機器學習
![](http://static.javashuo.com/static/loading.gif)
圖 2.1:典型神經網絡架構示意圖,圖來自 [17]
自動編碼器能夠定義爲由兩個主要部分構成的多層神經網絡。第一個部分是編碼器,能夠將輸入數據變換成特徵向量;第二個部分是解碼器,可將生成的特徵向量映射回輸入空間。分佈式
圖 2.2:典型自動編碼器網絡的結構,圖來自 [17]
2.1.2 循環神經網絡函數
當談到依賴於序列輸入的任務時,循環神經網絡(RNN)是最成功的多層架構之一。RNN 可被視爲一種特殊類型的神經網絡,其中每一個隱藏單元的輸入時其當前時間步驟觀察到的數據和其前一個時間步驟的狀態。
圖 2.3:標準循環神經網絡的運算的示意圖。每一個 RNN 單元的輸入都是當前時間步驟的新輸入和前一個時間步驟的狀態;而後根據
計算獲得新輸出,這個輸出又可被饋送到多層 RNN 的下一層進行處理。
圖 2.4:典型 LSTM 單元示意圖。該單元的輸入是當前時間的輸入和前一時間的輸入,而後它會返回一個輸出並將其饋送給下一時間。LSTM 單元的最終輸出由輸入門、輸出門和記憶單元狀態控制。圖來自 [33]
2.1.3 卷積網絡
卷積網絡(CNN)是一類尤爲適合計算機視覺應用的神經網絡,由於它們能使用局部操做對錶徵進行分層抽象。有兩大關鍵的設計思想推進了卷積架構在計算機視覺領域的成功。第一,CNN 利用了圖像的 2D 結構,而且相鄰區域內的像素一般是高度相關的。所以,CNN 就無需使用全部像素單元之間的一對一鏈接(大多數神經網絡都會這麼作),而可使用分組的局部鏈接。第二,CNN 架構依賴於特徵共享,所以每一個通道(即輸出特徵圖)是在全部位置使用同一個過濾器進行卷積而生成的。性能
圖 2.5:標準卷積網絡的結構的示意圖,圖來自 [93]
圖 2.6:Neocognitron 的結構示意圖,圖來自 [49]
2.1.4 生成對抗網絡學習
典型的生成對抗網絡(GAN)由兩個互相競爭的模塊或子網絡構成,即:生成器網絡和鑑別器網絡。
2.1.5 多層網絡的訓練
如前面討論的同樣,多種多層架構的成功都很大程度上取決於它們的學習過程的成功。其訓練過程一般都基於使用梯度降低的偏差的反向傳播。因爲使用簡單,梯度降低在訓練多層架構上有普遍的應用。大數據
2.1.6 簡單說說遷移學習
使用多層架構提取的特徵在多種不一樣數據集和任務上的適用性能夠歸功於它們的分層性質,表徵會在這樣的結構中從簡單和局部向抽象和全局發展。所以,在其層次結構中的低層級提取的特徵每每是多種不一樣任務共有的特徵,所以使得多層結構更容易實現遷移學習。編碼
2.2 空間卷積網絡
理論上而言,卷積網絡能夠應用於任意維度的數據。它們的二維實例很是適用於單張圖像的結構,所以在計算機視覺領域獲得了至關大的關注。有了大規模數據集和強大的計算機來進行訓練以後,CNN 近來在多種不一樣任務上的應用都出現了迅猛增加。本節將介紹爲原來的 LeNet 引入了相對新穎的組件的比較突出的 2D CNN 架構。架構設計
圖 2.8:AlexNet 架構。須要指出,雖然從圖上看這是一種有兩個流的架構,但實際上這是一種單流的架構,這張圖只是說明 AlexNet 在 2 個不一樣 GPU 上並行訓練的狀況。圖來自 [88]
圖 2.9:GoogLeNet 架構。(a)典型的 inception 模塊,展現了順序和並行執行的操做。(b)由層疊的許多 inception 模塊構成的典型 inception 架構的示意圖。圖來自 [138]
圖 2.10:ResNet 架構。(a)殘差模塊。(b)由層疊的許多殘差模塊構成的典型 ResNet 架構示意圖。圖來自 [64]
圖 2.11:DenseNet 架構。(a)dense 模塊。(b)(b)由層疊的許多 dense 模塊構成的典型 DenseNet 架構的示意圖。圖來自 [72]
2.2.2 實現 CNN 的不變性
使用 CNN 的一大難題是須要很是大的數據集來學習全部的基本參數。甚至擁有超過 100 萬張圖像的 ImageNet 等大規模數據集在訓練特定的深度架構時仍然被認爲過小。知足這種大數據集要求的一種方法是人工加強數據集,具體作法包括對圖像進行隨機翻轉、旋轉和抖動(jittering)等。這些加強方法的一大優點是能讓所獲得的網絡在面對各類變換時能更好地保持不變。
2.2.3 實現 CNN 的定位
除了識別物體等簡單的分類任務,CNN 近來也在須要精準定位的任務上表現出色,好比形義分割和目標檢測。
2.3 時空卷積網絡
使用 CNN 爲各類基於圖像的應用帶來了顯著的性能提高,也催生了研究者將 2D 空間 CNN 擴展到視頻分析的 3D 時空 CNN 上的興趣。通常而言,文獻中提出的各類時空架構都只是試圖將空間域 (x,y) 的 2D 架構擴展到時間域 (x, y, t) 中。在基於訓練的時空 CNN 領域存在 3 種比較突出的不一樣架構設計決策:基於 LSTM 的 CNN、3D CNN 和 Two-Stream CNN。
2.3.1 基於 LSTM 的時空 CNN
基於 LSTM 的時空 CNN 是將 2D 網絡擴展成能處理時空數據的一些早期嘗試。它們的操做能夠總結成圖 2.16 所示的三個步驟。第一步,使用一個 2D 網絡處理每一幀,並從這些 2D 網絡的最後一層提取出特徵向量。第二步,將這些來自不一樣時間步驟的特徵用做 LSTM 的輸入,獲得時間上的結果。第三步,再對這些結果求平均或線性組合,而後再傳遞給一個 softmax 分類器以獲得最終預測。
2.3.2 3D CNN
這種突出的時空網絡是將 2D CNN 最直接地泛化到圖像時空域中。它直接處理 RGB 圖像的時間流,並經過應用所學習到的 3D 卷積過濾器來處理這些圖像。
2.3.3 Two-Stream CNN
這種類型的時空架構依賴於一種雙流式(two-stream)的設計。標準的雙流式架構是採用兩個並行通路——一個用於處理外觀,另外一個用於處理運動;這種方法相似於生物視覺系統研究中的雙流式假設。
2.4 總體討論
須要重點指出的是,儘管這些網絡在不少計算機視覺應用上都實現了頗有競爭力的結果,但它們的主要缺點仍然存在:對所學習到的表徵的確切本質的理解頗有限、依賴於大規模數據訓練集、缺少支持準確的表現邊界的能力、網絡超參數選擇不清晰。
3 理解 CNN 的構建模塊
鑑於 CNN 領域存在大量懸而未決的問題,本章將介紹典型卷積網絡中每種處理層的做用和意義。爲此本章將概述在解決這些問題上最突出的工做。尤爲值得一提的是,咱們將從理論和生物學兩個角度來展現 CNN 組件的建模方式。每種組件的介紹後面都總結了咱們當前的理解水平。
3.1 卷積層
卷積層能夠說是 CNN 架構中最重要的步驟之一。基本而言,卷積是一種線性的、平移不變性的運算,其由在輸入信號上執行局部加權的組合構成。根據所選擇的權重集合(即所選擇的點擴散函數(point spread function))的不一樣,也將揭示出輸入信號的不一樣性質。在頻率域中,與點擴散函數關聯的是調製函數——說明了輸入的頻率組分經過縮放和相移進行調製的方式。所以,選擇合適的核(kernel)對獲取輸入信號中所包含的最顯著和最重要的信息而言相當重要,這能讓模型對該信號的內容作出更好的推斷。本節將討論一些實現這個核選擇步驟的不一樣方法。
3.2 整流
多層網絡一般是高度非線性的,而整流(rectification)則一般是將非線性引入模型的第一個處理階段。整流是指將點方面的非線性(也被稱爲激活函數)應用到卷積層的輸出上。這一術語借用自信號處理領域,其中整流是指將交流變成直流。這也是一個能從生物學和理論兩方面都找到原由的處理步驟。計算神經科學家引入整流步驟的目的是尋找能最好地解釋當前神經科學數據的合適模型。另外一方面,機器學習研究者使用整流的目的是爲了讓模型能更快和更好地學習。有趣的是,這兩個方面的研究者每每都認同這一點:他們不只須要整流,並且還會異曲同工到同一種整流上。
圖 3.7:多層網絡的文獻中所使用的非線性整流函數
3.3 歸一化
正如前面提到的,因爲這些網絡中存在級聯的非線性運算,因此多層架構是高度非線性的。除了前一節討論的整流非線性,歸一化(normalization)是 CNN 架構中有重要做用的又一種非線性處理模塊。CNN 中最普遍使用的歸一化形式是所謂的 Divisive Normalization(DN,也被稱爲局部響應歸一化)。本節將介紹歸一化的做用並描述其糾正前兩個處理模塊(卷積和整流)的缺點的方式。一樣,咱們會從生物學和理論兩個方面討論歸一化。
3.4 池化
無論是生物學啓發的,仍是純粹基於學習的或徹底人工設計的,幾乎全部 CNN 模型都包含池化步驟。池化運算的目標是爲位置和尺寸的改變帶來必定程度的不變性以及在特徵圖內部和跨特徵圖聚合響應。與以前幾節討論的三種 CNN 模塊相似,池化在生物學和理論研究上都具備支持。在 CNN 網絡的這個處理層上,主要的爭論點是池化函數的選擇。使用最普遍的兩種池化函數分別是平均池化和最大池化。本節將探索相關文獻中描述的各類池化函數的優勢和缺點。
圖 3.10:平均池化和最大池化在 Gabor 濾波後的圖像上的比較。(a)展現了不一樣尺度的平均池化的效果,其中(a)中上面一行是應用於原始灰度值圖像的結果,(a)中下面一行是應用於 Gabor 濾波後的圖像上的結果。平均池化能獲得灰度值圖像的更平滑的版本,而稀疏的 Gabor 濾波後的圖像則會褪色消散。相對而言,(b)給出了不一樣尺度的最大池化的效果,其中(b)中上面一行是應用於原始灰度值圖像的結果,(b)中下面一行是應用於 Gabor 濾波後的圖像上的結果。這裏能夠看到,最大池化會致使灰度值圖像質量降低,而 Gabor 濾波後的圖像中的稀疏邊則會獲得加強。圖來自 [131]
4 當前狀態
對 CNN 架構中各類組件的做用的論述凸顯了卷積模塊的重要性,這個模塊很大程度上負責了在網絡中獲取最抽象的信息。相對而言,咱們對這個處理模塊的理解卻最少,由於這須要最繁重的計算。本章將介紹在嘗試理解不一樣的 CNN 層所學習的內容上的當前趨勢。同時,咱們還將重點說明這些趨勢方面仍有待解決的問題。
4.1 當前趨勢
儘管各類 CNN 模型仍繼續在多種計算機視覺應用中進一步推動當前最佳的表現,但在理解這些系統的工做方式和如此有效的緣由上的進展仍還有限。這個問題已經引發了不少研究者的興趣,爲此也涌現出了不少用於理解 CNN 的方法。通常而言,這些方法能夠分紅三個方向:對所學習到的過濾器和提取出的特徵圖進行可視化、受理解視覺皮層的生物學方法啓發的 ablation study、經過向網絡設計中引入分析原理來最小化學習過程。本節將簡要概述其中每種方法。
4.2 仍待解決的問題
基於上述討論,基於可視化的方法存在如下關鍵研究方向:
-
首要的一點:開發使可視化評估更爲客觀的方法是很是重要的,能夠經過引入評估所生成的可視化圖像的質量和/或含義的指標來實現。
-
另外,儘管看起來以網絡爲中心的可視化方法更有前景(由於它們在生成可視化結果上不依賴網絡自身),但彷佛也有必要標準化它們的評估流程。一種可能的解決方案是使用一個基準來爲一樣條件下訓練的網絡生成可視化結果。這樣的標準化方法反過來也能實現基於指標的評估,而不是當前的解釋性的分析。
-
另外一個發展方向是同時可視化多個單元以更好地理解處於研究中的表徵的分佈式方面,甚至同時還能遵循一種受控式方法。
如下是基於 ablation study 的方法的潛在研究方向:
-
使用共同的系統性組織的數據集,其中帶有計算機視覺領域常見的不一樣難題(好比視角和光照變化),而且還必需有複雜度更大的類別(好比紋理、部件和目標上的複雜度)。事實上,近期已經出現了這樣的數據集 [6]。在這樣的數據集上使用 ablation study,加上對所獲得的混淆矩陣的分析,能夠肯定 CNN 架構出錯的模式,進而實現更好的理解。
-
此外,對多個協同的 ablation 對模型表現的影響方式的系統性研究是很受關注的。這樣的研究應該能延伸咱們對獨立單元的工做方式的理解。
最後,這些受控方法是頗有前景的將來研究方向;由於相比於徹底基於學習的方法,這些方法能讓咱們對這些系統的運算和表徵有更深刻的理解。這些有趣的研究方向包括:
-
逐步固定網絡參數和分析對網絡行爲的影響。好比,一次固定一層的卷積核參數(基於當前已有的對該任務的先驗知識),以分析所採用的核在每一層的適用性。這個漸進式的方法有望揭示學習的做用,並且也可用做最小化訓練時間的初始化方法。
-
相似地,能夠經過分析輸入信號的性質(好比信號中的常見內容)來研究網絡架構自己的設計(好比層的數量或每層中過濾器的數量)。這種方法有助於讓架構達到適宜應用的複雜度。
-
最後,將受控方法用在網絡實現上的同時能夠對 CNN 的其它方面的做用進行系統性的研究,因爲人們重點關注的所學習的參數,因此這方面獲得的關注較少。好比,能夠在大多數所學習的參數固定時,研究各類池化策略和殘差鏈接的做用。