瞭解CNN這一篇就夠了:卷積神經網路技術及發展 - 程式前沿

文章推薦指數: 80 %
投票人數:10人

卷積神經網路(CNN)是一種常見的深度學習架構,受生物自然視覺認知機制啟發而來。

1959年,Hubel & Wiesel [1] 發現,動物視覺皮層細胞負責檢測光學訊號。

程式語言前端開發IOS開發Android開發雲端運算人工智慧伺服器搜尋資料庫軟體開發工具瞭解CNN這一篇就夠了:卷積神經網路技術及發展2018.07.18程式語言HOME程式語言瞭解CNN這一篇就夠了:卷積神經網路技術及發展Advertisement【新智元導讀】深度學習很火,說起深度學習中一個很重要的概念——卷積神經網路(CNN)似乎也人人皆知。

不過,CNN究竟是什麼,涉及哪些概念,經過如何發展,真正要有邏輯地歸納一遍,估計不少人都說不清。

日前,南洋理工大學研究人員梳理CNN發展歷史,從基礎組成部分講起,介紹並探討CNN在視覺識別方面的原理及應用,是系統深入理解CNN的好文。

  RecentAdvancesinConvolutionalNeuralNetworks  卷積神經網路進展  摘要       過去幾年,深度學習在解決諸如視覺識別、語音識別和自然語言處理等很多問題方面都表現出色。

在不同型別的神經網路當中,卷積神經網路是得到最深入研究的。

早期由於缺乏訓練資料和計算能力,要在不產生過擬合的情況下訓練高效能卷積神經網路是很困難的。

標記資料和近來GPU的發展,使得卷積神經網路研究湧現並取得一流結果。

本文中,我們將縱覽卷積神經網路近來發展,同時介紹卷積神經網路在視覺識別方面的一些應用。

  引言       卷積神經網路(CNN)是一種常見的深度學習架構,受生物自然視覺認知機制啟發而來。

1959年,Hubel&Wiesel[1]發現,動物視覺皮層細胞負責檢測光學訊號。

受此啟發,1980年KunihikoFukushima提出了CNN的前身——neocognitron。

     20世紀90年代,LeCunetal.[3]等人發表論文,確立了CNN的現代結構,後來又對其進行完善。

他們設計了一種多層的人工神經網路,取名叫做LeNet-5,可以對手寫數字做分類。

和其他神經網路一樣,LeNet-5也能使用backpropagation演算法訓練。

       CNN能夠得出原始影象的有效表徵,這使得CNN能夠直接從原始畫素中,經過極少的預處理,識別視覺上面的規律。

然而,由於當時缺乏大規模訓練資料,計算機的計算能力也跟不上,LeNet-5對於複雜問題的處理結果並不理想。

  2006年起,人們設計了很多方法,想要克服難以訓練深度CNN的困難。

其中,最著名的是Krizhevskyetal.提出了一個經典的CNN結構,並在影象識別任務上取得了重大突破。

其方法的整體框架叫做AlexNet,與LeNet-5類似,但要更加深一些。

        AlexNet取得成功後,研究人員又提出了其他的完善方法,其中最著名的要數ZFNet[7],VGGNet[8],GoogleNet[9]和ResNet[10]這四種。

從結構看,CNN發展的一個方向就是層數變得更多,ILSVRC2015冠軍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)網路中的網路(NetworkinNetwork,NIN):由Linetal.[21]提出的基本網路結構  2)Inceptionmodule:由Szegedyetal.[9]提出,是NIN的拓展  2.池化層         池化層是CNN的重要組成部分,通過減少卷積層之間的連線,降低運算複雜程度。

以下是常用的幾種迴圈方法:      1)Lp池化:Lp池化是建立在複雜細胞執行機制的基礎上,受生物啟發而來[24][25]         2)混合池化:受隨機Dropout[16]和DropConnect[28],Yuetal.啟發而來         3)隨機池化:隨機迴圈[30]是受drptout啟發而來的方法         4)Spectral池化  3.啟用函式         常用的非線性啟用函式有sigmoid、tanh、relu等等,前兩者sigmoid/tanh比較常見於全連結層,後者relu常見於卷積層。

        1)ReLU    2)LeakyReLU   3)ParametricReLU  4)RandomizedReLU  5)ELU  6)Maxout:      7)Probout4.Loss函式  1)Softmaxloss       2)Hingeloss   3)Contrastiveloss  5.正則化      1)DropOut  2)DropConnect  6.優化  1)初始化權重  2)隨機梯度下降  3)批量標準化  4)Shortcut連線  CNN應用  A影象分類  B物體檢測  C物體追蹤  D姿態預估(Poseestimatation)  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領域中未來的研究活動和應用發展Advertisement写评论取消回覆很抱歉,必須登入網站才能發佈留言。

近期文章Spark入門(一)用SparkShell初嘗Spark滋味2019.12.08Spark入門(二)如何用Idea運行我們的Spark項目2019.12.08Spark入門(三)Spark經典的單詞統計2019.12.08Spark入門(四)Spark的map、flatMap、mapToPair2019.12.08Spark入門(五)Spark的reduce和reduceByKey2019.12.08Spark入門(六)Spark的combineByKey、sortBykey2019.12.08Spark入門(七)Spark的intersection、subtract、union和distinct2019.12.08Spark實戰尋找5億次訪問中,訪問次數最多的人2019.12.08Spark實戰搭建我們的Spark分佈式架構2019.12.08【機器學習】深度學習開發環境搭建2019.12.08AdvertisementAdvertisement



請為這篇文章評分?