94頁論文綜述卷積神經網路:從基礎技術到研究前景
文章選自arXiv,機器之心編譯
卷積神經網路(CNN)在計算機視覺領域已經取得了前所未有的巨大成功,但我們目前對其效果顯著的原因還沒有全面的理解。近日,約克大學電氣工程與計算機科學系的 Isma Hadji 和 Richard P. Wildes 發表了論文《What Do We Understand About Convolutional Networks?》,對卷積網路的技術基礎、組成模塊、當前現狀和研究前景進行了梳理,介紹了我們當前對 CNN 的理解。機器之心對本論文進行了摘要式的編譯,更詳細的信息請參閱原論文及其中索引的相關文獻。
論文地址:https://arxiv.org/abs/1803.08834
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 多層架構
在近來基於深度學習的網路取得成功之前,最先進的用於識別的計算機視覺系統依賴於兩個分離但又互補步驟。第一步是通過一組人工設計的操作(比如與基本集的卷積、局部或全局編碼方法)將輸入數據變換成合適的形式。對輸入的變換通常需要找到輸入數據的一種緊湊和/或抽象的表徵,同時還要根據當前任務注入一些不變數。這種變換的目標是以一種更容易被分類器分離的方式改變數據。其次,被變換的數據通常用於訓練某些類型的分類器(比如支持向量機)來識別輸入信號的內容。通常而言,任何分類器的表現都會受到所使用的變換方法的嚴重影響。
多層學習架構為這一問題帶來了不同的前景,這種架構提出不僅要學習分類器,而且要從數據中直接學習所需的變換操作。這種形式的學習通常被稱為「表徵學習」,當應用在深度多層架構中時即被稱為「深度學習」。
多層架構可以定義為允許從輸入數據的多層抽象中提取有用信息的計算模型。一般而言,多層架構的設計目標是在更高層凸顯輸入中的重要方面,同時能在遇到更不重要的變化時變得越來越穩健。大多數多層架構都是將帶有交替的線性和非線性函數的簡單構建模塊堆疊在一起。多年以來,研究者已經提出了很多不同類型的多層架構,本章將會覆蓋計算機視覺應用中所採用的最為突出的此類架構。人工神經網路是其中的關注重點,因為這種架構的表現非常突出。為了簡單起見,後面會直接將這類網路稱為「神經網路」。
2.1.1 神經網路
典型的神經網路由一個輸入層、一個輸出層和多個隱藏層構成,其中每一層都包含多個單元。
自動編碼器可以定義為由兩個主要部分構成的多層神經網路。第一個部分是編碼器,可以將輸入數據變換成特徵向量;第二個部分是解碼器,可將生成的特徵向量映射回輸入空間。
2.1.2 循環神經網路
當談到依賴於序列輸入的任務時,循環神經網路(RNN)是最成功的多層架構之一。RNN 可被視為一種特殊類型的神經網路,其中每個隱藏單元的輸入時其當前時間步驟觀察到的數據和其前一個時間步驟的狀態。
圖 2.3:標準循環神經網路的運算的示意圖。每個 RNN 單元的輸入都是當前時間步驟的新輸入和前一個時間步驟的狀態;然後根據
計算得到新輸出,這個輸出又可被饋送到多層 RNN 的下一層進行處理。
圖 2.4:典型 LSTM 單元示意圖。該單元的輸入是當前時間的輸入和前一時間的輸入,然後它會返回一個輸出並將其饋送給下一時間。LSTM 單元的最終輸出由輸入門、輸出門和記憶單元狀態控制。圖來自 [33]
2.1.3 卷積網路
卷積網路(CNN)是一類尤其適合計算機視覺應用的神經網路,因為它們能使用局部操作對錶征進行分層抽象。有兩大關鍵的設計思想推動了卷積架構在計算機視覺領域的成功。第一,CNN 利用了圖像的 2D 結構,並且相鄰區域內的像素通常是高度相關的。因此,CNN 就無需使用所有像素單元之間的一對一連接(大多數神經網路都會這麼做),而可以使用分組的局部連接。第二,CNN 架構依賴於特徵共享,因此每個通道(即輸出特徵圖)是在所有位置使用同一個過濾器進行卷積而生成的。
2.1.4 生成對抗網路
典型的生成對抗網路(GAN)由兩個互相競爭的模塊或子網路構成,即:生成器網路和鑒別器網路。
2.1.5 多層網路的訓練
如前面討論的一樣,多種多層架構的成功都很大程度上取決於它們的學習過程的成功。其訓練過程通常都基於使用梯度下降的誤差的反向傳播。由於使用簡單,梯度下降在訓練多層架構上有廣泛的應用。
2.1.6 簡單說說遷移學習
使用多層架構提取的特徵在多種不同數據集和任務上的適用性可以歸功於它們的分層性質,表徵會在這樣的結構中從簡單和局部向抽象和全局發展。因此,在其層次結構中的低層級提取的特徵往往是多種不同任務共有的特徵,因此使得多層結構更容易實現遷移學習。
2.2 空間卷積網路
理論上而言,卷積網路可以應用於任意維度的數據。它們的二維實例非常適用於單張圖像的結構,因此在計算機視覺領域得到了相當大的關注。有了大規模數據集和強大的計算機來進行訓練之後,CNN 近來在多種不同任務上的應用都出現了迅猛增長。本節將介紹為原來的 LeNet 引入了相對新穎的組件的比較突出的 2D CNN 架構。
2.2.1 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.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 的其它方面的作用進行系統性的研究,由於人們重點關注的所學習的參數,所以這方面得到的關注較少。比如,可以在大多數所學習的參數固定時,研究各種池化策略和殘差連接的作用。
推薦閱讀: