卷积层数据放大_卷积神经网络重要回顾
上世紀60年代,Hubel等人通過對貓視覺皮層細胞的研究,提出了感受野這個概念,到80年代,Fukushima在感受野概念的基礎之上提出了神經認知機的概念,可以看作是卷積神經網絡的第一個實現網絡,神經認知機將一個視覺模式分解成許多子模式(特征),然后進入分層遞階式相連的特征平面進行處理,它試圖將視覺系統模型化,使其能夠在即使物體有位移或輕微變形的時候,也能完成識別。
卷積神經網絡是多層感知機(MLP)的變種,由生物學家休博爾和維瑟爾在早期關于貓視覺皮層的研究發展而來,視覺皮層的細胞存在一個復雜的構造,這些細胞對視覺輸入空間的子區域非常敏感,稱之為感受野。
CNN由紐約大學的Yann Lecun于1998年提出,其本質是一個多層感知機,成功的原因在于其所采用的局部連接和權值共享的方式:
一方面減少了權值的數量使得網絡易于優化
另一方面降低了模型的復雜度,也就是減小了過擬合的風險
該優點在網絡的輸入是圖像時表現的更為明顯,使得圖像可以直接作為網絡的輸入,避免了傳統識別算法中復雜的特征提取和數據重建的過程,在二維圖像的處理過程中有很大的優勢,如網絡能夠自行抽取圖像的特征包括顏色、紋理、形狀及圖像的拓撲結構,在處理二維圖像的問題上,特別是識別位移、縮放及其他形式扭曲不變性的應用上具有良好的魯棒性和運算效率等。
用隨機的共享的卷積核得到像素點的加權和從而提取到某種特定的特征,然后用反向傳播來優化卷積核參數就可以自動的提取特征,是CNN特征提取的基石。
AlexNet (ILSVRC 2012)
CNN的開山之作是LeCun提出的LeNet-5,而其真正的爆發階段是2012年AlexNet取得ImageNet比賽的分類任務的冠軍,并且分類準確率遠遠超過利用傳統方法實現的分類結果,該模型能夠取得成功的原因主要有三個:
海量的有標記的訓練數據,也就是李飛飛團隊提供的大規模有標記的數據集ImageNet
計算機硬件的支持,尤其是GPU的出現,為復雜的計算提供了強大的支持
算法的改進,包括網絡結構加深、數據增強(數據擴充)、ReLU、Dropout等;
其實AlexNet的結構很簡單,只是LeNet的放大版,輸入是一個224x224的圖像,經過5個卷積層,3個全連接層(包含一個分類層),達到了最后的標簽空間。
AlexNet學習出來的特征是什么樣子的?
第一層:都是一些填充的塊狀物和邊界等特征
中間層:學習一些紋理特征
更高層:接近于分類器的層級,可以明顯的看到物體的形狀特征
最后一層:分類層,完全是物體的不同的姿態,根據不同的物體展現出不同姿態的特征了。
即無論對什么物體,學習過程都是:邊緣→部分→整體
Dropout
訓練階段使用了Dropout技巧隨機忽略一部分神經元,緩解了神經網絡的過擬合現象,和防止對網絡參數優化時陷入局部最優的問題,Dropout雖有單獨的論文論述,但是AlexNet將其實用化,通過實踐證實了它的效果。在AlexNet中主要是最后幾個全連接層使用了Dropout。
該網絡是利用Dropout在訓練過程中將輸入層和中間層的一些神經元隨機置零,使得訓練過程收斂的更慢,但得到的網絡模型更加具有魯棒性。
數據增強:防止過擬合
通過圖像平移、水平翻轉、調整圖像灰度等方法擴充樣本訓練集,擴充樣本訓練集,使得訓練得到的網絡對局部平移、旋轉、光照變化具有一定的不變性,數據經過擴充以后可以達到減輕過擬合并提升泛化能力。
池化:
AlexNet全部使用最大池化的方式,避免了平均池化所帶來的模糊化的效果,并且步長
激活函數Relu:
采用非飽和線性單元——ReLU代替傳統的經常使用的tanh和sigmoid函數,加速了網絡訓練的速度,降低了計算的復雜度,對各種干擾更加具有魯棒性,并且在一定程度上避免了梯度消失問題。
?優勢:
ReLU本質上是分段線性模型,前向計算非常簡單,無需指數之類操作;
ReLU的偏導也很簡單,反向傳播梯度,無需指數或者除法之類操作;
ReLU不容易發生梯度發散問題,Tanh和Logistic激活函數在兩端的時候導數容易趨近于零,多級連乘后梯度更加約等于0;
ReLU關閉了左邊,從而會使得很多的隱層輸出為0,即網絡變得稀疏,起到了類似L1的正則化作用,可以在一定程度上緩解過擬合。
缺點:
當然,ReLU也是有缺點的,比如左邊全部關了很容易導致某些隱藏節點永無翻身之日,所以后來又出現pReLU、random ReLU等改進,而且ReLU會很容易改變數據的分布,因此ReLU后加Batch Normalization也是常用的改進的方法。
提出了LRN層(Local Response Normalization):
LRN即Local Response Normalization,局部響應歸一化處理,實際就是利用臨近的數據做歸一化,該策略貢獻了1.2%的準確率,該技術是深度學習訓練時的一種提高準確度的技術方法,LRN一般是在激活、池化后進行的一種處理方法。
LRN是對局部神經元的活動創建競爭機制,使得其中響應較大的值變得相對更大,并抑制其他反饋較小的神經元,增強了模型的泛化能力。
為什么輸入數據需要歸一化(Normalized Data)
歸一化后有什么好處呢?原因在于神經網絡學習過程本質就是為了學習數據分布,一旦訓練數據與測試數據的分布不同,那么網絡的泛化能力也大大降低;另外一方面,一旦每批訓練數據的分布各不相同(batch 梯度下降),那么網絡就要在每次迭代都去學習適應不同的分布,這樣將會大大降低網絡的訓練速度,這也正是為什么我們需要對數據都要做一個歸一化預處理的原因。
對于深度網絡的訓練是一個復雜的過程,只要網絡的前面幾層發生微小的改變,那么后面幾層就會被累積放大下去。一旦網絡某一層的輸入數據的分布發生改變,那么這一層網絡就需要去適應學習這個新的數據分布,所以如果訓練過程中,訓練數據的分布一直在發生變化,那么將會影響網絡的訓練速度。
有多少層需要訓練
整個AlexNet有8個需要訓練參數的層,不包括池化層和LRN層,前5層為卷積層,后3層為全連接層,AlexNet的最后一層是由1000類輸出的Softmax層用作分類,LRN層出現在第一個和第二個卷積層之后,最大池化層出現在兩個LRN之后和最后一個卷積層之后。
ZFNet (ILSVRC 2013)
ZF Net模型更像是AlexNet架構的微調優化版,但還是提出了有關優化性能的一些關鍵想法。在這篇題為“Visualizing and Understanding Convolutional Neural Networks”的論文中,Zeiler和Fergus從大數據和GPU計算力讓人們重拾對CNN的興趣講起,討論了研究人員對模型內在機制知之甚少,一針見血地指出“發展更好的模型實際上是不斷試錯的過程”。這篇論文的主要貢獻在于提出了一個比AlexNet稍微好一些的模型并給出了細節,還提供了一些制作可視化特征圖值得借鑒的方法。
該論文是在AlexNet基礎上進行了一些細節的改動,網絡結構上并沒有太大的突破。該論文最大的貢獻在于通過使用可視化技術揭示了神經網絡各層到底在干什么,起到了什么作用。
從科學的觀點出發,如果不知道神經網絡為什么取得了如此好的效果,那么只能靠不停的實驗來尋找更好的模型。使用一個多層的反卷積網絡來可視化訓練過程中特征的演化及發現潛在的問題;同時根據遮擋圖像局部對分類結果的影響來探討對分類任務而言到底那部分輸入信息更重要。
VGGNet (ILSVRC 2014)
VGGNet是牛津大學計算機視覺組和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層的網絡都有詳盡的性能測試。很適合做遷移學習,提到了一系列,VGG-16、VGG-19,不同層,參數也不同,最后選擇了D的參數,結果最好。
A網絡(11層)有8個卷積層和3個全連接層,E網絡(19層)有16個卷積層和3個全連接層,卷積層寬度(通道數)從64到512,每經過一次池化操作,擴大一倍。
相比AlexNet的變化:
LRN層作用不大,這種標準化并不能帶來很大的提升,反而會導致更多的內存消耗和計算時間,拋棄
網絡越深,效果越好
卷積核使用更小的卷積核,比如3x3
VGG雖然比AlexNet模型層數多,且每輪訓練時間會比AlexNet更長,但是因為更深的網絡和更小的卷積核帶來的隱式正則化結果,需要的收斂的迭代次數減小了許多。
這里使用3x3的濾波器和AlexNet在第一層使用11x11的濾波器和ZF Net 7x7的濾波器作用完全不同。作者認為兩個3x3的卷積層組合可以實現5x5的有效感受野。這就在保持濾波器尺寸較小的同時模擬了大型濾波器,減少了參數。此外,有兩個卷積層就能夠使用兩層ReLU。
VGG Net是最重要的模型之一,因為它再次強調CNN必須夠深,視覺數據的層次化表示才有用。深的同時結構簡單。
GoogLeNet (ImageNet 2014)
ImageNet 2014比賽分類任務的冠軍,將錯誤率降低到了6.656%,突出的特點是大大增加了卷積神經網絡的深度。
GoogLeNet Incepetion V1《Going deeper with convolutions》。之所以名為“GoogLeNet”而非“GoogleNet”,文章說是為了向早期的LeNet致敬。
深度學習以及神經網絡快速發展,人們不再只關注更給力的硬件、更大的數據集、更大的模型,而是更在意新的idea、新的算法以及模型的改進。一般來說,提升網絡性能最直接的辦法就是增加網絡深度和寬度,這也就意味著巨量的參數。但是,巨量參數容易產生過擬合也會大大增加計算量。
文章認為解決上述兩個缺點的根本方法是將全連接甚至一般的卷積都轉化為稀疏連接。一方面現實生物神經系統的連接也是稀疏的,另一方面有文獻1表明:對于大規模稀疏的神經網絡,可以通過分析激活值的統計特性和對高度相關的輸出進行聚類來逐層構建出一個最優網絡。
早些的時候,為了打破網絡對稱性和提高學習能力,傳統的網絡都使用了隨機稀疏連接。但是,計算機軟硬件對非均勻稀疏數據的計算效率很差,所以在AlexNet中又重新啟用了全連接層,目的是為了更好地優化并行運算。
所以,現在的問題是有沒有一種方法,既能保持網絡結構的稀疏性,又能利用密集矩陣的高計算性能。大量的文獻表明可以將稀疏矩陣聚類為較為密集的子矩陣來提高計算性能,據此論文提出了名為Inception 的結構來實現此目的。
Inception
2012年AlexNet做出歷史突破以來,直到GoogLeNet出來之前,主流的網絡結構突破大致是網絡更深(層數),網絡更寬(神經元數)。所以大家調侃深度學習為“深度調參”,但是純粹的增大網絡的缺點:
參數太多,容易過擬合,若訓練數據集有限;
網絡越大計算復雜度越大,難以應用;
網絡越深,梯度越往后穿越容易消失(梯度彌散),難以優化模型
那么解決上述問題的方法當然就是增加網絡深度和寬度的同時減少參數,Inception就是在這樣的情況下應運而生。
Inception 結構的主要思路是怎樣用密集成分來近似最優的局部稀疏結構,基本結構如下:
采用不同大小的卷積核意味著不同大小的感受野,最后拼接意味著不同尺度特征的融合
之所以卷積核采用1x1,3x3和5x5,主要是為了方便對齊,設定卷積步長stride=1,只要分別設定padding=0,1,2,那么卷積之后便可以得到相同維度的特征,然后將這些特征就可以直接拼接在一起了。
文章中說pooling被證明很有效,所以網絡結構中也加入了
網絡越到后面,特征越抽象,而且每個特征所涉及的感受野也變大了,因此隨著層數的增加,3x3和5x5的比例也要增加。
GoogleNet Inception V1
GoogLeNet Incepetion V1比AlexNet的8層或者VGGNet的19層還要更深。但其計算量只有15億次浮點運算,同時只有500萬的參數量,僅為AlexNet參數量(6000萬)的1/12,卻可以達到遠勝于AlexNet的準確率,可以說是非常優秀并且非常實用的模型。
Inception V1降低參數量的目的有兩點:
第一,參數越多模型越龐大,需要供模型學習的數據量就越大,而目前高質量的數據非常昂貴;
第二,參數越多,耗費的計算資源也會更大。
Inception V1參數少但效果好的原因除了模型層數更深、表達能力更強外,還有兩點:
其一,去除了最后的全連接層,用全局平均池化層(即將圖片尺寸變為1*1)來取代它。全連接層幾乎占據了AlexNet或VGGNet中90%的參數量,而且會引起過擬合,去除全連接層后模型訓練更快并且減輕了過擬合。
其二,Inception V1中精心設計的Inception Module提高了參數的利用效率,其結構如上圖所示。這一部分也借鑒了Network In Network的思想,形象的解釋就是Inception Module本身如同大網絡中的一個小網絡,其結構可以反復堆疊在一起形成大網絡。
Inception Module的基本結構:
其中有4個分支:
第一個分支對輸入進行11的卷積,這其實也是NIN中提出的一個重要結構。11的卷積是一個非常優秀的結構,它可以跨通道組織信息,提高網絡的表達能力,同時可以對輸出通道升維和降維。
Inception Module的4個分支都用到了1x1的卷積,來進行低成本(計算量比3x3小很多)的跨通道的特征變換
第二個分支,先使用了1x1卷積,然后連接3x3卷積,相當于進行了兩次特征變換
第三個分支,先使用1x1卷積,然后連接5x5卷積
第四個分支,3x3最大池化后直接使用1x1卷積
四個分支在最后通過一個聚合操作合并,在輸出通道這個維度上聚合。
我們立刻注意到,并不是所有的事情都是按照順序進行的,這與此前看到的架構不一樣。我們有一些網絡,能同時并行發生反應,這個盒子被稱為 Inception 模型。
GoogleNet Inception V2
V2和V1的最大的不同就是,V2增加了Batch Normalization。[《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》](https://blog.csdn.net/jiaoyangwm/article/details/《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》)
Inception V2學習了VGGNet,用兩個3x3的卷積代替5x5的卷積,用以降低參數量并減輕過擬合,還提出了著名的Batch Normalization方法,該方法是一個很有效的正則化的方法,可以讓大型卷積網絡的訓練速度加快很多倍,同時收斂后的分類準確率也可以得到大幅度的提高。
BN在用于神經網絡某層時,會對每一個mini-batch數據的內部進行標準化(normalization)處理,使輸出規范化到N(0,1)的正態分布,減少了Internal Covariate Shift(內部神經元分布的改變)。
BN的論文指出,傳統的深度神經網絡在訓練時,每一層的輸入的分布都在變化,導致訓練變得困難,我們只能使用一個很小的學習速率解決這個問題。而對每一層使用BN之后,我們就可以有效地解決這個問題,學習速率可以增大很多倍,達到之前的準確率所需要的迭代次數只有1/14,訓練時間大大縮短。
而達到之前的準確率后,可以繼續訓練,并最終取得遠超于Inception V1模型的性能——top-5錯誤率4.8%,已經優于人眼水平。因為BN某種意義上還起到了正則化的作用,所以可以減少或者取消Dropout,簡化網絡結構。
ResNet(ILSVRC 2015)
ResNet在2015年被提出,在ImageNet比賽classification任務上獲得第一名,因為它“簡單與實用”并存,之后很多方法都建立在ResNet50或者ResNet101的基礎上完成的,檢測,分割,識別等領域都紛紛使用ResNet,Alpha zero也使用了ResNet,所以可見ResNet確實很好用。
ResNet引入了殘差網絡結構(residual network),通過這種殘差網絡結構,可以把網絡層弄的很深(據說目前可以達到1000多層),并且最終的分類效果也非常好,殘差網絡的基本結構如下圖所示,很明顯,該圖是帶有跳躍結構的:
殘差網絡借鑒了高速網絡的跨層連接的思想,但是對其進行了改進,殘差項原本是帶權值的,但ResNet用恒等映射代替了它。
假設:
神經網絡輸入:x
期望輸出:H(x),即H(x)是期望的復雜映射,如果要學習這樣的模型,訓練的難度會比較大。
此時,如果已經學習到較為飽和的準確率,或者發現下層的誤差變大時,接下來的目標就轉化為恒等映射的學習,也就是使得輸入x近似于輸出H(x),以保持在后面的層次中不會造成精度下降。
上圖的殘差網絡中,通過捷徑連接的方式直接將輸入x傳到輸出作為初始結果,輸出結果為H(x)=F(x)+x,當F(x)=0時,H(x)=x,也就是恒等映射。于是,ResNet相當于將學習目標改變了,不再是學習一個完整的輸出,而是目標值H(X)和x的差值,也就是所謂的殘差F(x) := H(x)-x,因此,后面的訓練目標就是要將殘差結果逼近于0,使到隨著網絡加深,準確率不下降。
學習的目標:目標值H(x)和輸入x的差值,即F(x):=H(x)-x,將殘差逼近于0,使得隨著網絡加深,準確率不下降。
R-CNN(2013年)
一些人可能會認為,R-CNN的出現比此前任何關于新的網絡架構的論文都有影響力。第一篇關于R-CNN的論文被引用了超過1600次。Ross Girshick 和他在UC Berkeley 的團隊在機器視覺上取得了最有影響力的進步。正如他們的文章所寫, Fast R-CNN 和 Faster R-CNN能夠讓模型變得更快,更好地適應現代的物體識別任務。
R-CNN的目標是解決物體識別的難題。在獲得特定的一張圖像后, 我們希望能夠繪制圖像中所有物體的邊緣。這一過程可以分為兩個組成部分,一個是區域建議,另一個是分類。
論文的作者強調,任何分類不可知區域的建議方法都應該適用。Selective Search專用于RCNN。Selective Search 的作用是聚合2000個不同的區域,這些區域有最高的可能性會包含一個物體。在我們設計出一系列的區域建議之后,這些建議被匯合到一個圖像大小的區域,能被填入到經過訓練的CNN(論文中的例子是AlexNet),能為每一個區域提取出一個對應的特征。這個向量隨后被用于作為一個線性SVM的輸入,SVM經過了每一種類型和輸出分類訓練。向量還可以被填入到一個有邊界的回歸區域,獲得最精準的一致性。非極值壓抑后被用于壓制邊界區域,這些區域相互之間有很大的重復。
Fast R-CNN(2015年)
原始模型得到了改進,主要有三個原因:訓練需要多個步驟,這在計算上成本過高,而且速度很慢。Fast R-CNN通過從根本上在不同的建議中分析卷積層的計算,同時打亂生成區域建議的順利以及運行CNN,能夠快速地解決問題。
Faster R-CNN(2015年)
Faster R-CNN的工作是克服R-CNN和 Fast R-CNN所展示出來的,在訓練管道上的復雜性。作者 在最后一個卷積層上引入了一個區域建議網絡(RPN)。這一網絡能夠只看最后一層的特征就產出區域建議。從這一層面上來說,相同的R-CNN管道可用。
2017 年 7 月 26 日,將標志著一個時代的終結。那一天,與計算機視覺頂會 CVPR 2017 同期舉行的 Workshop——“超越 ILSVRC”(Beyond ImageNet Large Scale Visual Recogition Challenge),將宣布計算機視覺乃至整個人工智能發展史上的里程碑——IamgeNet 大規模視覺識別挑戰賽將于 2017 年正式結束,此后將專注于目前尚未解決的問題及以后發展方向。
參考資料
總結
以上是生活随笔為你收集整理的卷积层数据放大_卷积神经网络重要回顾的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux查询服务器cpu核数_如何查看
- 下一篇: 谈谈离散卷积和卷积神经网络