【轉】了解CNN
摘要
過去幾年,深度學習在解決諸如視覺識別、語音識別和自然語言處理等很多問題方面都表現出色。在不同類型的神經網絡當中,卷積神經網絡是得到最深入研究的。早期由於缺乏訓練數據和計算能力,要在不產生過擬合的情況下訓練高性能卷積神經網絡是很困難的。標記數據和近來GPU的發展,使得卷積神經網絡研究湧現並取得一流結果。本文中,我們將縱覽卷積神經網絡近來發展,同時介紹卷積神經網絡在視覺識別方面的一些應用。
引言
卷積神經網絡(CNN)是一種常見的深度學習架構,受生物自然視覺認知機制啟發而來。1959年,Hubel & Wiesel [1] 發現,動物視覺皮層細胞負責檢測光學信號。受此啟發,1980年 Kunihiko Fukushima 提出了CNN的前身——neocognitron 。
20世紀 90 年代,LeCun et al. [3] 等人發表論文,確立了CNN的現代結構,後來又對其進行完善。他們設計了一種多層的人工神經網絡,取名叫做LeNet-5,可以對手寫數字做分類。和其他神經網絡一樣, LeNet-5 也能使用 backpropagation 算法訓練。
CNN能夠得出原始圖像的有效表征,這使得CNN能夠直接從原始像素中,經過極少的預處理,識別視覺上面的規律。然而,由於當時缺乏大規模訓練數據,計算機的計算能力也跟不上,LeNet-5 對於復雜問題的處理結果並不理想。
2006年起,人們設計了很多方法,想要克服難以訓練深度CNN的困難。其中,最著名的是 Krizhevsky et al.提出了一個經典的CNN 結構,並在圖像識別任務上取得了重大突破。其方法的整體框架叫做 AlexNet,與 LeNet-5 類似,但要更加深一些。
AlexNet 取得成功後,研究人員又提出了其他的完善方法,其中最著名的要數 ZFNet [7], VGGNet [8], GoogleNet [9] 和 ResNet [10] 這四種。從結構看,CNN 發展的一個方向就是層數變得更多,ILSVRC 2015 冠軍 ResNet 是 AlexNet 的20 多倍,是 VGGNet 的8 倍多。通過增加深度,網絡便能夠利用增加的非線性得出目標函數的近似結構,同時得出更好的特性表征。但是,這樣做同時也增加了網絡的整體復雜程度,使網絡變得難以優化,很容易過擬合。
研究人員提出了很多方法來解決這一問題。在下面的章節中,我們會先列出CNN的組成部分,然後介紹CNN不同方面的最近進展,接著引入快速計算技巧,並探討CNN在圖像分類、物體識別等不同方面的應用進展,最後歸納總結。
基本組成部分
在不同的參考資料中,對 CNN的組成部分都有著不同的描述。不過,CNN的基本組成成分是十分接近的。
以分類數字的 LeNet-5 為例,這個 CNN 含有三種類型的神經網絡層:
卷積層:學會識別輸入數據的特性表征
池化(Pooling):典型的操作包括平均 pooling [12] 和最大化 pooling [1315]
全連接層:將卷積層和Pooling 層堆疊起來以後,就能夠形成一層或多層全連接層,這樣就能夠實現高階的推力能力。
完善 CNN
自從 2012 年 AlexNet 成功以後,研究人員設計了很多種完善 CNN 的方法。在這一節中,我們將從 6 方面進行介紹。
1. 卷積層
1)網絡中的網絡(Network in Network,NIN):由 Lin et al. [21] 提出的基本網絡結構
2) Inception module: 由 Szegedy et al. [9] 提出,是 NIN 的拓展
2. 池化層
池化層是CNN的重要組成部分,通過減少卷積層之間的連接,降低運算復雜程度。以下是常用的幾種循環方法:
1)Lp 池化:Lp 池化是建立在復雜細胞運行機制的基礎上,受生物啟發而來 [24] [25]
2) 混合池化:受隨機Dropout [16] 和 DropConnect [28], Yu et al. 啟發而來
3)隨機池化:隨機循環 [30] 是受 drptout 啟發而來的方法
4)Spectral 池化
3. 激活函數
常用的非線性激活函數有sigmoid、tanh、relu等等,前兩者sigmoid/tanh比較常見於全鏈接層,後者relu常見於卷積層。
1) ReLU
2) Leaky ReLU
3) Parametric ReLU
4) Randomized ReLU
5) ELU
6) Maxout:
7) Probout
1) Softmax loss
2) Hinge loss
3) Contrastive loss
5. 正則化
2) DropConnect
6. 優化
1) 初始化權重
2) 隨機梯度下降
3) 批量標準化
4) Shortcut 連接
CNN 應用
A 圖像分類
B 物體檢測
C 物體追蹤
D 姿態預估(Pose estimatation)
E 文本檢測識別
F 視覺 saliency 檢測
G 行動識別
H 場景標記
討論
深度CNN在圖像處理、視頻、語音和文本中取得了突破。本文種,我們主要從計算機視覺的角度對最近CNN取得的進展進行了深度的研究。我們討論了CNN在不同方面取得的進步:比如,層的設計,活躍函數、損失函數、正則化、優化和快速計算。除了從CNN的各個方面回顧其進展,我們還介紹了CNN在計算機視覺任務上的應用,其中包括圖像分類、物體檢測、物體追蹤、姿態估計、文本檢測、視覺顯著檢測、動作識別和場景標簽。
雖然在實驗的測量中,CNN獲得了巨大的成功,但是,仍然還有很多工作值得進一步研究。首先,鑒於最近的CNN變得越來越深,它們也需要大規模的數據庫和巨大的計算能力,來展開訓練。人為搜集標簽數據庫要求大量的人力勞動。所以,大家都渴望能開發出無監督式的CNN學習方式。
同時,為了加速訓練進程,雖然已經有一些異步的SGD算法,證明了使用CPU和GPU集群可以在這方面獲得成功,但是,開放高效可擴展的訓練算法依然是有價值的。在訓練的時間中,這些深度模型都是對內存有高的要求,並且消耗時間的,這使得它們無法在手機平臺上部署。如何在不減少準確度的情況下,降低復雜性並獲得快速執行的模型,這是重要的研究方向。
其次,我們發現,CNN運用於新任務的一個主要障礙是:如何選擇合適的超參數?比如學習率、卷積過濾的核大小、層數等等,這需要大量的技術和經驗。這些超參數存在內部依賴,這會讓調整變得很昂貴。最近的研究顯示,在學習式深度CNN架構的選擇技巧上,存在巨大的提升空間。
最後,關於CNN,依然缺乏統一的理論。目前的CNN模型運作模式依然是黑箱。我們甚至都不知道它是如何工作的,工作原理是什麽。當下,值得把更多的精力投入到研究CNN的基本規則上去。同時,正如早期的CNN發展是受到了生物視覺感知機制的啟發,深度CNN和計算機神經科學二者需要進一步的深入研究。
有一些開放的問題,比如,生物學上大腦中的學習方式如何幫助人們設計更加高效的深度模型?帶權重分享的回歸計算方式是否可以計算人類的視覺皮質等等。
我們希望這篇文章不僅能讓人們更好地理解CNN,同時也能促進CNN領域中未來的研究活動和應用發展。
新智元Top10智能汽車創客大賽招募!
新智元於7月11日啟動2016年【新智元100】人工智能創業公司評選,在人工智能概念誕生60周年之際,尋找中國最具競爭力的人工智能創業企業。
智能駕駛技術是汽車行業的重點發展方向之一,同時也是人工智能相關產業創新落地的重要賽道之一。為此新智元聯合北京中汽四方共同舉辦“新智元Top10智能汽車創客大賽”,共同招募智能汽車相關優質創業公司,並聯合組織人工智能技術專家、傳統汽車行業技術專家、關註智能汽車領域的知名風投機構,共同評審並篩選出Top 10進入決賽,在2016年10月16日“國際智能網聯汽車發展合作論壇”期間,進行路演、頒獎及展覽活動。
【轉】了解CNN