成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

CNN淺析和歷年ImageNet冠軍模型解析

人工智能 深度學習
今天在這里我給大家講解一些深度學習中卷積神經網絡的原理和一些經典的網絡結構。

[[189678]]

今天在這里我給大家講解一些深度學習中卷積神經網絡的原理和一些經典的網絡結構。

卷積神經網絡原理淺析

卷積神經網絡(Convolutional Neural Network,CNN)最初是為解決圖像識別等問題設計的,當然其現在的應用不僅限于圖像和視頻,也可用于時間序列信號,比如音頻信號、文本數據等。在早期的圖像識別研究中,最大的挑戰是如何組織特征,因為圖像數據不像其他類型的數據那樣可以通過人工理解來提取特征。

在股票預測等模型中,我們可以從原始數據中提取過往的交易價格波動、市盈率、市凈率、盈利增長等金融因子,這即是特征工程。但是在圖像中,我們很難根據人為理解提取出有效而豐富的特征。在深度學習出現之前,我們必須借助SIFT、HoG等算法提取具有良好區分性的特征,再集合SVM等機器學習算法進行圖像識別。

SIFT對一定程度內的縮放、平移、旋轉、視角改變、亮度調整等畸變,都具有不變性,是當時最重要的圖像特征提取方法之一。然而SIFT這類算法提取的特征還是有局限性的,在ImageNet ILSVRC比賽的最好結果的錯誤率也有26%以上,而且常年難以產生突破。

卷積神經網絡提取的特征則可以達到更好的效果,同時它不需要將特征提取和分類訓練兩個過程分開,它在訓練時就自動提取了最有效的特征。CNN作為一個深度學習架構被提出的最初訴求,是降低對圖像數據預處理的要求,以及避免復雜的特征工程。CNN可以直接使用圖像的原始像素作為輸入,而不必先使用SIFT等算法提取特征,減輕了使用傳統算法如SVM時必需要做的大量重復、煩瑣的數據預處理工作。

和SIFT等算法類似,CNN訓練的模型同樣對縮放、平移、旋轉等畸變具有不變性,有著很強的泛化性。CNN的最大特點在于卷積的權值共享結構,可以大幅減少神經網絡的參數量,防止過擬合的同時又降低了神經網絡模型的復雜度。

卷積神經網絡的概念最早出自19世紀60年代科學家提出的感受野(Receptive Field37)。當時科學家通過對貓的視覺皮層細胞研究發現,每一個視覺神經元只會處理一小塊區域的視覺圖像,即感受野。到了20世紀80年代,日本科學家提出神經認知機(Neocognitron38)的概念,可以算作是卷積網絡最初的實現原型。

神經認知機中包含兩類神經元,用來抽取特征的S-cells,還有用來抗形變的C-cells,其中S-cells對應我們現在主流卷積神經網絡中的卷積核濾波操作,而C-cells則對應激活函數、最大池化(Max-Pooling)等操作。同時,CNN也是首個成功地進行多層訓練的網絡結構,即前面章節提到的LeCun的LeNet5,而全連接的網絡因為參數過多及梯度彌散等問題,在早期很難順利地進行多層的訓練。

卷積神經網絡可以利用空間結構關系減少需要學習的參數量,從而提高反向傳播算法的訓練效率。在卷積神經網絡中,第一個卷積層會直接接受圖像像素級的輸入,每一個卷積操作只處理一小塊圖像,進行卷積變化后再傳到后面的網絡,每一層卷積(也可以說是濾波器)都會提取數據中最有效的特征。這種方法可以提取到圖像中最基礎的特征,比如不同方向的邊或者拐角,而后再進行組合和抽象形成更高階的特征,因此CNN可以應對各種情況,理論上具有對圖像縮放、平移和旋轉的不變性。

一般的卷積神經網絡由多個卷積層構成,每個卷積層中通常會進行如下幾個操作。

  1. 圖像通過多個不同的卷積核的濾波,并加偏置(bias),提取出局部特征,每一個卷積核會映射出一個新的2D圖像。
  2. 將前面卷積核的濾波輸出結果,進行非線性的激活函數處理。目前最常見的是使用ReLU函數,而以前Sigmoid函數用得比較多。
  3. 對激活函數的結果再進行池化操作(即降采樣,比如將2×2的圖片降為1×1的圖片),目前一般是使用最大池化,保留最顯著的特征,并提升模型的畸變容忍能力。

一個卷積層中可以有多個不同的卷積核,而每一個卷積核都對應一個濾波后映射出的新圖像,同一個新圖像中每一個像素都來自完全相同的卷積核,這就是卷積核的權值共享。那我們為什么要共享卷積核的權值參數呢?答案很簡單,降低模型復雜度,減輕過擬合并降低計算量。 

 

 

 

舉個例子,如圖5-2所示,如果我們的圖像尺寸是1000像素×1000像素,并且假定是黑白圖像,即只有一個顏色通道,那么一張圖片就有100萬個像素點,輸入數據的維度也是100萬。接下來,如果連接一個相同大小的隱含層(100萬個隱含節點),那么將產生100萬×100萬=一萬億個連接。

僅僅一個全連接層(Fully Connected Layer),就有一萬億連接的權重要去訓練,這已經超出了普通硬件的計算能力。我們必須減少需要訓練的權重數量,一是降低計算的復雜度,二是過多的連接會導致嚴重的過擬合,減少連接數可以提升模型的泛化性。

圖像在空間上是有組織結構的,每一個像素點在空間上和周圍的像素點實際上是有緊密聯系的,但是和太遙遠的像素點就不一定有什么關聯了。這就是前面提到的人的視覺感受野的概念,每一個感受野只接受一小塊區域的信號。這一小塊區域內的像素是互相關聯的,每一個神經元不需要接收全部像素點的信息,只需要接收局部的像素點作為輸入,而后將所有這些神經元收到的局部信息綜合起來就可以得到全局的信息。

這樣就可以將之前的全連接的模式修改為局部連接,之前隱含層的每一個隱含節點都和全部像素相連,現在我們只需要將每一個隱含節點連接到局部的像素節點。假設局部感受野大小是10×10,即每個隱含節點只與10×10個像素點相連,那么現在就只需要10×10×100萬=1億個連接,相比之前的1萬億縮小了10000倍。

簡單說,全連接就是上圖的左邊部分,而局部連接就是上圖的右邊部分。局部連接可以大大降低神經網絡參數量,從100M*100M = 1萬億,到10*10*100萬=1億。 

 

 

 

上面我們通過局部連接(Locally Connect)的方法,將連接數從1萬億降低到1億,但仍然偏多,需要繼續降低參數量。現在隱含層每一個節點都與10×10的像素相連,也就是每一個隱含節點都擁有100個參數。假設我們的局部連接方式是卷積操作,即默認每一個隱含節點的參數都完全一樣,那我們的參數不再是1億,而是100。不論圖像有多大,都是這10×10=100個參數,即卷積核的尺寸,這就是卷積對縮小參數量的貢獻。

簡單說,卷積就是使用完全相同的(參數相同)的模板去進行局部連接,所以參數量可以繼續驟降

我們不需要再擔心有多少隱含節點或者圖片有多大,參數量只跟卷積核的大小有關,這也就是所謂的權值共享。但是如果我們只有一個卷積核,我們就只能提取一種卷積核濾波的結果,即只能提取一種圖片特征,這不是我們期望的結果。好在圖像中最基本的特征很少,我們可以增加卷積核的數量來多提取一些特征。

圖像中的基本特征無非就是點和邊,無論多么復雜的圖像都是點和邊組合而成的。人眼識別物體的方式也是從點和邊開始的,視覺神經元接受光信號后,每一個神經元只接受一個區域的信號,并提取出點和邊的特征,然后將點和邊的信號傳遞給后面一層的神經元,再接著組合成高階特征,比如三角形、正方形、直線、拐角等,再繼續抽象組合,得到眼睛、鼻子和嘴等五官,最后再將五官組合成一張臉,完成匹配識別。

因此我們的問題就很好解決了,只要我們提供的卷積核數量足夠多,能提取出各種方向的邊或各種形態的點,就可以讓卷積層抽象出有效而豐富的高階特征。每一個卷積核濾波得到的圖像就是一類特征的映射,即一個Feature Map。一般來說,我們使用100個卷積核放在第一個卷積層就已經很充足了。

那這樣的話,如上圖所示,我們的參數量就是100×100=1萬個,相比之前的1億又縮小了10000倍。因此,依靠卷積,我們就可以高效地訓練局部連接的神經網絡了。卷積的好處是,不管圖片尺寸如何,我們需要訓練的權值數量只跟卷積核大小、卷積核數量有關,我們可以使用非常少的參數量處理任意大小的圖片。每一個卷積層提取的特征,在后面的層中都會抽象組合成更高階的特征。

我們再總結一下,卷積神經網絡的要點就是局部連接(Local Connection)、權值共享(Weight Sharing)和池化層(Pooling)中的降采樣(Down-Sampling)。

其中,局部連接和權值共享降低了參數量,使訓練復雜度大大下降,并減輕了過擬合。同時權值共享還賦予了卷積網絡對平移的容忍性,而池化層降采樣則進一步降低了輸出參數量,并賦予模型對輕度形變的容忍性,提高了模型的泛化能力。

卷積神經網絡相比傳統的機器學習算法,無須手工提取特征,也不需要使用諸如SIFT之類的特征提取算法,可以在訓練中自動完成特征的提取和抽象,并同時進行模式分類,大大降低了應用圖像識別的難度;相比一般的神經網絡,CNN在結構上和圖片的空間結構更為貼近,都是2D的有聯系的結構,并且CNN的卷積連接方式和人的視覺神經處理光信號的方式類似。

下面介紹一下經典的卷積網絡LeNet5。

大名鼎鼎的LeNet5 誕生于1994年,是最早的深層卷積神經網絡之一,并且推動了深度學習的發展。從1988年開始,在多次成功的迭代后,這項由Yann LeCun完成的開拓性成果被命名為LeNet5。

LeCun認為,可訓練參數的卷積層是一種用少量參數在圖像的多個位置上提取相似特征的有效方式,這和直接把每個像素作為多層神經網絡的輸入不同。像素不應該被使用在輸入層,因為圖像具有很強的空間相關性,而使用圖像中獨立的像素直接作為輸入則利用不到這些相關性。

LeNet5當時的特性有如下幾點。

  • 每個卷積層包含三個部分:卷積、池化和非線性激活函數
  • 使用卷積提取空間特征
  • 降采樣(Subsample)的平均池化層(Average Pooling)
  • 雙曲正切(Tanh)或S型(Sigmoid)的激活函數
  • MLP作為最后的分類器
  • 層與層之間的稀疏連接減少計算復雜度

LeNet5中的諸多特性現在依然在state-of-the-art卷積神經網絡中使用,可以說LeNet5是奠定了現代卷積神經網絡的基石之作。Lenet-5的結構下圖所示。 

 

 

 

它的輸入圖像為32×32的灰度值圖像,后面有3個卷積層,1個全連接層和1個高斯連接層。

下面我們來介紹一些其他幾個經典的卷積網絡結構,AlexNet、VGGNet、Google Inception Net和ResNet,這4種網絡依照出現的先后順序排列,深度和復雜度也依次遞進。

它們分別獲得了ILSVRC(ImageNet Large Scale Visual Recognition Challenge)比賽分類項目的2012年冠軍(AlexNet, top-5錯誤率16.4%,使用額外數據可達到15.3%,8層神經網絡)、2014年亞軍(VGGNet,top-5錯誤率7.3%,19層神經網絡),2014年冠軍(InceptionNet,top-5錯誤率6.7%,22層神經網絡)和2015年的冠軍(ResNet,top-5錯誤率3.57%,152層神經網絡)。 

 

 

 

如圖所示,ILSVRC的top-5錯誤率在最近幾年取得重大突破,而主要的突破點都是在深度學習和卷積神經網絡,成績的大幅提升幾乎都伴隨著卷積神經網絡的層數加深。 

 

 

[[189679]] 

前面提到的計算機視覺比賽ILSVRC使用的數據都來自ImageNet,如上圖所示。ImageNet項目于2007年由斯坦福大學華人教授李飛飛創辦,目標是收集大量帶有標注信息的圖片數據供計算機視覺模型訓練。ImageNet擁有1500萬張標注過的高清圖片,總共擁有22000類,其中約有100萬張標注了圖片中主要物體的定位邊框。 

 

每年度的ILSVRC比賽數據集中大概擁有120萬張圖片,以及1000類的標注,是ImageNet全部數據的一個子集。比賽一般采用top-5和top-1分類錯誤率作為模型性能的評測指標,上圖所示為AlexNet識別ILSVRC數據集中圖片的情況,每張圖片下面是分類預測得分最高的5個分類及其分值。

AlexNet技術特點概要

AlexNet是現代深度CNN的奠基之作。

2012年,Hinton的學生Alex Krizhevsky提出了深度卷積神經網絡模型AlexNet,它可以算是LeNet的一種更深更寬的版本。AlexNet中包含了幾個比較新的技術點,也首次在CNN中成功應用了ReLU、Dropout和LRN等Trick。同時AlexNet也使用了GPU進行運算加速,作者開源了他們在GPU上訓練卷積神經網絡的CUDA代碼。

AlexNet包含了6億3000萬個連接,6000萬個參數和65萬個神經元,擁有5個卷積層,其中3個卷積層后面連接了最大池化層,最后還有3個全連接層。AlexNet以顯著的優勢贏得了競爭激烈的ILSVRC 2012比賽,top-5的錯誤率降低至了16.4%,相比第二名的成績26.2%錯誤率有了巨大的提升。

AlexNet可以說是神經網絡在低谷期后的第一次發聲,確立了深度學習(深度卷積網絡)在計算機視覺的統治地位,同時也推動了深度學習在語音識別、自然語言處理、強化學習等領域的拓展。

AlexNet將LeNet的思想發揚光大,把CNN的基本原理應用到了很深很寬的網絡中。AlexNet主要使用到的新技術點如下。

  1. 成功使用ReLU作為CNN的激活函數,并驗證其效果在較深的網絡超過了Sigmoid,成功解決了Sigmoid在網絡較深時的梯度彌散問題。雖然ReLU激活函數在很久之前就被提出了,但是直到AlexNet的出現才將其發揚光大。
  2. 訓練時使用Dropout隨機忽略一部分神經元,以避免模型過擬合。Dropout雖有單獨的論文論述,但是AlexNet將其實用化,通過實踐證實了它的效果。在AlexNet中主要是最后幾個全連接層使用了Dropout。
  3. 在CNN中使用重疊的最大池化。此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet中提出讓步長比池化核的尺寸小,這樣池化層的輸出之間會有重疊和覆蓋,提升了特征的豐富性。
  4. 提出了LRN層,對局部神經元的活動創建競爭機制,使得其中響應比較大的值變得相對更大,并抑制其他反饋較小的神經元,增強了模型的泛化能力。
  5. 使用CUDA加速深度卷積網絡的訓練,利用GPU強大的并行計算能力,處理神經網絡訓練時大量的矩陣運算。AlexNet使用了兩塊GTX 580 GPU進行訓練,單個GTX 580只有3GB顯存,這限制了可訓練的網絡的最大規模。因此作者將AlexNet分布在兩個GPU上,在每個GPU的顯存中儲存一半的神經元的參數。
  6. 數據增強,隨機地從256*256的原始圖像中截取224*224大小的區域(以及水平翻轉的鏡像),相當于增加了(256224)2*2=2048倍的數據量。如果沒有數據增強,僅靠原始的數據量,參數眾多的CNN會陷入過擬合中,使用了數據增強后可以大大減輕過擬合,提升泛化能力。進行預測時,則是取圖片的四個角加中間共5個位置,并進行左右翻轉,一共獲得10張圖片,對他們進行預測并對10次結果求均值。 

 

整個AlexNet有8個需要訓練參數的層(不包括池化層和LRN層),前5層為卷積層,后3層為全連接層,上圖所示。AlexNet最后一層是有1000類輸出的Softmax層用作分類。LRN層出現在第1個及第2個卷積層后,而最大池化層出現在兩個LRN層及最后一個卷積層后。 

 

AlexNet每層的超參數、參數量、計算量上圖所示。

我們可以發現一個比較有意思的現象,在前幾個卷積層,雖然計算量很大,但參數量很小,都在1M左右甚至更小,只占AlexNet總參數量的很小一部分。這就是卷積層有用的地方,可以通過較小的參數量提取有效的特征。

雖然每一個卷積層占整個網絡的參數量的1%都不到,但是如果去掉任何一個卷積層,都會使網絡的分類性能大幅地下降。

VGGNet技術特點概要

VGGNet是牛津大學計算機視覺組(Visual Geometry Group)和Google DeepMind公司的研究員一起研發的的深度卷積神經網絡。VGGNet探索了卷積神經網絡的深度與其性能之間的關系,通過反復堆疊3*3的小型卷積核和2*2的最大池化層,VGGNet成功地構筑了16~19層深的卷積神經網絡。VGGNet相比之前state-of-the-art的網絡結構,錯誤率大幅下降,并取得了ILSVRC 2014比賽分類項目的第2名和定位項目的第1名。

VGGNet論文中全部使用了3*3的卷積核和2*2的池化核,通過不斷加深網絡結構來提升性能。下圖所示為VGGNet各級別的網絡結構圖,和每一級別的參數量,從11層的網絡一直到19層的網絡都有詳盡的性能測試。 

  

 

雖然從A到E每一級網絡逐漸變深,但是網絡的參數量并沒有增長很多,這是因為參數量主要都消耗在最后3個全連接層。前面的卷積部分雖然很深,但是消耗的參數量不大,不過訓練比較耗時的部分依然是卷積,因其計算量比較大。

VGGNet擁有5段卷積,每一段內有2~3個卷積層,同時每段尾部會連接一個最大池化層用來縮小圖片尺寸。每段內的卷積核數量一樣,越靠后的段的卷積核數量越多:64 – 128 – 256 – 512 – 512。其中經常出現多個完全一樣的3*3的卷積層堆疊在一起的情況,這其實是非常有用的設計。 

 

如上圖所示,兩個3*3的卷積層串聯相當于1個5*5的卷積層,即一個像素會跟周圍5*5的像素產生關聯,可以說感受野大小為5*5。而3個3*3的卷積層串聯的效果則相當于1個7*7的卷積層。除此之外,3個串聯的3*3的卷積層,擁有比1個7*7的卷積層更少的參數量,只有后者的55%。

最重要的是,3個3*3的卷積層擁有比1個7*7的卷積層更多的非線性變換(前者可以使用三次ReLU激活函數,而后者只有一次),使得CNN對特征的學習能力更強。

作者在對比各級網絡時總結出了以下幾個觀點。

  1. LRN層作用不大。
  2. 越深的網絡效果越好。
  3. 1*1的卷積也是很有效的,但是沒有3*3的卷積好,大一些的卷積核可以學習更大的空間特征。

InceptionNet技術特點概要

Google Inception Net首次出現在ILSVRC 2014的比賽中(和VGGNet同年),就以較大優勢取得了第一名。那屆比賽中的Inception Net通常被稱為Inception V1,它最大的特點是控制了計算量和參數量的同時,獲得了非常好的分類性能——top-5錯誤率6.67%,只有AlexNet的一半不到。

Inception V1有22層深,比AlexNet的8層或者VGGNet的19層還要更深。但其計算量只有15億次浮點運算,同時只有500萬的參數量,僅為AlexNet參數量(6000萬)的1/12,卻可以達到遠勝于AlexNet的準確率,可以說是非常優秀并且非常實用的模型。

Inception V1降低參數量的目的有兩點:第一,參數越多模型越龐大,需要供模型學習的數據量就越大,而目前高質量的數據非常昂貴;第二,參數越多,耗費的計算資源也會更大。

Inception V1參數少但效果好的原因除了模型層數更深、表達能力更強外,還有兩點:一是去除了最后的全連接層,用全局平均池化層(即將圖片尺寸變為1*1)來取代它。全連接層幾乎占據了AlexNet或VGGNet中90%的參數量,而且會引起過擬合,去除全連接層后模型訓練更快并且減輕了過擬合。

二是Inception V1中精心設計的Inception Module提高了參數的利用效率,其結構如圖10所示。這一部分也借鑒了Network In Network的思想,形象的解釋就是Inception Module本身如同大網絡中的一個小網絡,其結構可以反復堆疊在一起形成大網絡。 

 

我們再來看Inception Module的基本結構,其中有4個分支:第一個分支對輸入進行1*1的卷積,這其實也是NIN中提出的一個重要結構。1*1的卷積是一個非常優秀的結構,它可以跨通道組織信息,提高網絡的表達能力,同時可以對輸出通道升維和降維。

可以看到Inception Module的4個分支都用到了1*1卷積,來進行低成本(計算量比3*3小很多)的跨通道的特征變換。

第二個分支先使用了1*1卷積,然后連接3*3卷積,相當于進行了兩次特征變換。第三個分支類似,先是1*1的卷積,然后連接5*5卷積。最后一個分支則是3*3最大池化后直接使用1*1卷積。

Inception Module的4個分支在最后通過一個聚合操作合并(在輸出通道數這個維度上聚合)。

同時,Google Inception Net還是一個大家族,包括:

  • 2014年9月的論文Going Deeper with Convolutions提出的Inception V1(top-5錯誤率6.67%)。
  • 2015年2月的論文Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate提出的Inception V2(top-5錯誤率4.8%)。
  • 2015年12月的論文Rethinking the Inception Architecture for Computer Vision提出的Inception V3(top-5錯誤率3.5%)。
  • 2016年2月的論文Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning提出的Inception V4(top-5錯誤率3.08%)。

Inception V2學習了VGGNet,用兩個3*3的卷積代替5*5的大卷積(用以降低參數量并減輕過擬合),還提出了著名的Batch Normalization(以下簡稱BN)方法。BN是一個非常有效的正則化方法,可以讓大型卷積網絡的訓練速度加快很多倍,同時收斂后的分類準確率也可以得到大幅提高。

BN在用于神經網絡某層時,會對每一個mini-batch數據的內部進行標準化(normalization)處理,使輸出規范化到N(0,1)的正態分布,減少了Internal Covariate Shift(內部神經元分布的改變)。

BN的論文指出,傳統的深度神經網絡在訓練時,每一層的輸入的分布都在變化,導致訓練變得困難,我們只能使用一個很小的學習速率解決這個問題。而對每一層使用BN之后,我們就可以有效地解決這個問題,學習速率可以增大很多倍,達到之前的準確率所需要的迭代次數只有1/14,訓練時間大大縮短。

而達到之前的準確率后,可以繼續訓練,并最終取得遠超于Inception V1模型的性能——top-5錯誤率4.8%,已經優于人眼水平。因為BN某種意義上還起到了正則化的作用,所以可以減少或者取消Dropout,簡化網絡結構。

ResNet技術特點概要

ResNet(Residual Neural Network)由微軟研究院的Kaiming He等4名華人提出,通過使用Residual Unit成功訓練152層深的神經網絡,在ILSVRC 2015比賽中獲得了冠軍,取得3.57%的top-5錯誤率,同時參數量卻比VGGNet低,效果非常突出。

ResNet的結構可以極快地加速超深神經網絡的訓練,模型的準確率也有非常大的提升。

ResNet最初的靈感出自這個問題:在不斷加神經網絡的深度時,會出現一個Degradation的問題,即準確率會先上升然后達到飽和,再持續增加深度則會導致準確率下降。

這并不是過擬合的問題,因為不光在測試集上誤差增大,訓練集本身誤差也會增大。假設有一個比較淺的網絡達到了飽和的準確率,那么后面再加上幾個的全等映射層,起碼誤差不會增加,即更深的網絡不應該帶來訓練集上誤差上升。

而這里提到的使用全等映射直接將前一層輸出傳到后面的思想,就是ResNet的靈感來源。假定某段神經網絡的輸入是x,期望輸出是H(x),如果我們直接把輸入x傳到輸出作為初始結果,那么此時我們需要學習的目標就是F(x)=H(x)-x。 

 

這就是一個ResNet的殘差學習單元(Residual Unit),ResNet相當于將學習目標改變了,不再是學習一個完整的輸出H(x),只是輸出和輸入的差別H(x)-x,即殘差。 

 

上圖所示為VGGNet-19,以及一個34層深的普通卷積網絡,和34層深的ResNet網絡的對比圖。可以看到普通直連的卷積神經網絡和ResNet的最大區別在于,ResNet有很多旁路的支線將輸入直接連到后面的層,使得后面的層可以直接學習殘差,這種結構也被稱為shortcut或skip connections。

傳統的卷積層或全連接層在信息傳遞時,或多或少會存在信息丟失、損耗等問題。ResNet在某種程度上解決了這個問題,通過直接將輸入信息繞道傳到輸出,保護信息的完整性,整個網絡則只需要學習輸入、輸出差別的那一部分,簡化學習目標和難度。 

 

上圖所示為ResNet在不同層數時的網絡配置,其中基礎結構很類似,都是前面提到的兩層和三層的殘差學習單元的堆疊。

在使用了ResNet的結構后,可以發現層數不斷加深導致的訓練集上誤差增大的現象被消除了,ResNet網絡的訓練誤差會隨著層數增大而逐漸減小,并且在測試集上的表現也會變好。 

 

小結

此就將ALexNet、VGGNet、Inception Net、ResNet四種經典的卷積介紹完了,下面我們簡單總結一下。我們簡單回顧卷積神經網絡的歷史,上圖所示大致勾勒出最近幾十年卷積神經網絡的發展方向。

Perceptron(感知機)于1957年由Frank Resenblatt提出,而Perceptron不僅是卷積網絡,也是神經網絡的始祖。Neocognitron(神經認知機)是一種多層級的神經網絡,由日本科學家Kunihiko Fukushima于20世紀80年代提出,具有一定程度的視覺認知的功能,并直接啟發了后來的卷積神經網絡。

LeNet-5由CNN之父Yann LeCun于1997年提出,首次提出了多層級聯的卷積結構,可對手寫數字進行有效識別。可以看到前面這三次關于卷積神經網絡的技術突破,間隔時間非常長,需要十余年甚至更久才出現一次理論創新。

而后于2012年,Hinton的學生Alex依靠8層深的卷積神經網絡一舉獲得了ILSVRC 2012比賽的冠軍,瞬間點燃了卷積神經網絡研究的熱潮。AlexNet成功應用了ReLU激活函數、Dropout、最大覆蓋池化、LRN層、GPU加速等新技術,并啟發了后續更多的技術創新,卷積神經網絡的研究從此進入快車道。

在AlexNet之后,我們可以將卷積神經網絡的發展分為兩類,一類是網絡結構上的改進調整(圖6-18中的左側分支),另一類是網絡深度的增加(圖18中的右側分支)。

2013年,顏水成教授的Network in Network工作首次發表,優化了卷積神經網絡的結構,并推廣了1*1的卷積結構。在改進卷積網絡結構的工作中,后繼者還有2014年的Google Inception Net V1,提出了Inception Module這個可以反復堆疊的高效的卷積網絡結構,并獲得了當年ILSVRC比賽的冠軍。

2015年初的Inception V2提出了Batch Normalization,大大加速了訓練過程,并提升了網絡性能。2015年年末的Inception V3則繼續優化了網絡結構,提出了Factorization in Small Convolutions的思想,分解大尺寸卷積為多個小卷積乃至一維卷積。

而右側分支上,許多研究工作則致力于加深網絡層數,2014年,ILSVRC比賽的亞軍VGGNet全程使用3*3的卷積,成功訓練了深達19層的網絡,當年的季軍MSRA-Net也使用了非常深的網絡。

2015年,微軟的ResNet成功訓練了152層深的網絡,一舉拿下了當年ILSVRC比賽的冠軍,top-5錯誤率降低至3.46%。

我們可以看到,自AlexNet于2012年提出后,深度學習領域的研究發展極其迅速,基本上每年甚至每幾個月都會出現新一代的技術。新的技術往往伴隨著新的網絡結構,更深的網絡的訓練方法等,并在圖像識別等領域不斷創造新的準確率記錄。

CNN的技術日新月異,當然其中不可忽視的推動力是,我們擁有了更快的GPU計算資源用以實驗,以及非常方便的開源工具(比如TensorFlow)可以讓研究人員快速地進行探索和嘗試。在以前,研究人員如果沒有像Alex那樣高超的編程實力能自己實現cuda-convnet,可能都沒辦法設計CNN或者快速地進行實驗。

現在有了TensorFlow,研究人員和開發人員都可以簡單而快速地設計神經網絡結構并進行研究、測試、部署乃至實用。

作者介紹

黃文堅,《TensorFlow實戰》作者,該書獲得Google TensorFlow工程研發總監Rajat Monga、360首席科學家顏水成教授、北大長江學者崔斌教授的推薦,出版后曾獲京東、亞馬遜、當當計算機類圖書銷量第一,并獲臺灣知名出版社引進版權。現任職PPmoney大數據算法總監,負責集團的風控、理財、互聯網證券等業務的數據挖掘工作。Google TensorFlow Contributor。前明略數據技術合伙人,領導了對諸多大型銀行、保險公司、基金公司的數據挖掘項目,包括金融風控、新聞輿情分析、保險復購預測等,并多次獲客戶方報送評獎。曾就職于阿里巴巴搜索引擎算法團隊,負責天貓上億用戶的個性化搜索系統。曾參加阿里巴巴大數據推薦算法大賽,于7000多只隊伍中獲得前10名。本科、研究生畢業于香港科技大學,在頂級會議和期刊SIGMOBILE MobiCom、IEEE Transactions on Image Processing發表論文,研究成果獲SIGMOBILE MobiCom最佳移動應用技術獎,并獲得兩項美國專利和一項中國專利。 

責任編輯:龐桂玉 來源: 大數據雜談
相關推薦

2012-01-17 17:21:24

JavaSwing

2021-06-29 09:34:00

洋蔥模型中間件

2011-06-20 15:13:08

Qt 對象模型

2020-09-23 14:20:07

Kubernetes容器網絡模型

2022-09-16 15:10:12

模型AI

2022-08-28 20:50:29

算法模型機器學習

2017-07-07 16:36:28

BIOIO模型 NIO

2009-09-15 10:12:37

LINQ To SQL

2009-09-09 13:57:28

C# XML解析

2010-01-25 14:18:46

C++對象模型

2011-05-24 11:20:53

OTNWSSFOADM

2010-02-22 13:38:50

Python解析器

2021-06-29 09:47:26

計算機視覺 神經網絡

2020-08-20 07:00:00

人工智能深度學習技術

2009-09-14 19:58:47

DataSet和Dat

2011-03-14 14:02:55

Python

2009-08-31 15:02:22

C#解析結構體指針

2024-09-09 07:46:16

2025-02-27 01:00:00

大模型OLMOCRrag

2009-07-21 14:32:51

ASP.NET進程模型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美另类在线观看 | 中文字幕 国产精品 | 中文字幕不卡视频在线观看 | 日韩三极 | www.久草.com | 欧洲一区在线观看 | 国产91网站在线观看 | 福利视频一区二区三区 | 欧洲精品一区 | 欧美一区二区三区在线视频 | 97高清国语自产拍 | 一级免费毛片 | 免费国产视频 | 一级a性色生活片久久毛片波多野 | 999视频| av天天干 | 亚洲人a| 国产日韩欧美在线观看 | 可以免费观看的av | 日韩精品在线看 | 色综合色综合色综合 | 欧美日韩视频在线 | 欧美日韩久久精品 | 日韩一级不卡 | 午夜在线影院 | 久久99精品国产 | 日韩一级免费看 | 日韩一区在线观看视频 | 午夜码电影 | 国产午夜精品福利 | 亚洲一区二区三区国产 | 亚洲欧美视频一区 | 亚洲精品国产第一综合99久久 | 久久视频免费观看 | 日韩免费一二三区 | 91 视频网站 | 欧美中文一区 | 国产91精品在线 | 亚洲最大av网站 | 欧美一级毛片在线播放 | 欧美性猛片aaaaaaa做受 |