1. 程式人生 > >【轉】了解CNN

【轉】了解CNN

輸入數據 堆疊 有著 規律 網絡技術 ima 深度學習 擴展 創客

摘要

  過去幾年,深度學習在解決諸如視覺識別、語音識別和自然語言處理等很多問題方面都表現出色。在不同類型的神經網絡當中,卷積神經網絡是得到最深入研究的。早期由於缺乏訓練數據和計算能力,要在不產生過擬合的情況下訓練高性能卷積神經網絡是很困難的。標記數據和近來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

技術分享
4. Loss 函數

  1) Softmax loss

  2) Hinge loss

  3) Contrastive loss

  5. 正則化

技術分享
1)DropOut

  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