AI:IPPR的数学表示-CNN结构进化(Alex、ZF、Inception、Res、InceptionRes)
前言:
??????? 深度學習:sigmod、tanh、ReLU函數的優缺點-文章圖文并舉;文章:CNN的結構分析--;? 文章:歷年ImageNet冠軍模型網絡結構解析---; 文章:GoogleLeNet系列解讀---; 文章:DNN結構演進History—CNN-GoogLeNet :Going Deeper with Convolutions ;文章:Google最新開源Inception-ResNet-v2,借助殘差網絡進一步提升圖像分類水準-----附有代碼解析; 文章:深入淺出——網絡模型中Inception的作用與結構全解析???
?????? 科普一下,如何加快卷積速度,以及應該在計算時候進行簡單拆分卷積核;文章:谷歌大腦顛覆深度學習混亂現狀,要用單一模型學會多項任務------這是個極其扯蛋的問題!Google這群人就知道標題黨搞事情!
??????? 文章對摘抄文章有大量修改,如有疑問,請移步原文。
??????? 為了更多的類別和更高的精度,以及使用更少的網絡,單個CNN必須變得參數更多,因此成為更大。參數更大導致模式識別過程計算速度降低,因此要優化計算過程,避免一次性計算所有參數,所以要分層。CNN逐漸更大,更長。
???? ?? 這些結構又發生了怎樣地變化?
??????? 一切數學問題都是可以被數學基礎集合論所解釋的問題,CNN也可以使用集合論的形式進行闡述,并使用集合論的工具解決問題。
??? ? ?
???? ?? 變寬邊長變稀疏是CNN的發展趨勢,CNN為了更有效的訓練網絡和降低總參數量,對結構上也進行逐步改進。最早的LeNet使用了C1-S2-C3-S4-C5-F6六層網,使用了三個Conv層C1C3C5,和兩個pooling層S2S4。而后AlexNet除了變胖之外,有加入F6、F7 的附帶Dropout和ReLU層,變得更長,進而可以處理圖像的復雜模式識別問題。VGG網絡在引入Dropout和ReLU整流之后,通過反復堆疊C層和S層,堆積到16層、19層。GoogleInception Net通過增強卷積模塊功能,減低總的參數量,只有ALexnet的1/2,達到了22層。此后,殘差網絡ResNet出現,殘差網絡對網絡結構進行了改變,在網絡殘差反傳的過程中允許存在shortcuts,直接傳播到下一層,用于訓練更深的神經網絡。2016年又出現了所謂的DenseNet,指出ResNet是DenseNet的一種特殊形式,給出了一種更為泛泛的網絡結構形式,取得比ResNet更有效的結果。
??????
?????? 獲得CVPR2016最佳論文的DenseNet,這個網絡與GAN對抗生成網絡有比較過嗎?
?
0、CNN——卷積層的作用.
???????? 二維卷積計算過程是一個二維矩陣乘法運算,在圖像濾波方法中大量應用,反向卷積過程可以看做一個模板匹配過程,與卷積核相同或者相似的區域會有最大的卷積值。 OpenCV對應的運算為filter2D和matchtemplate。
??????? CNN的二維結構天然適合圖像特征提取和識別過程,CNN通過卷積層,訓練不同的卷積核來提取圖像中隱含的模式。CNN訓練得到的是濾波器-卷積核,結構描述為神經網絡稀疏神經元參數,數學描述為一個二維壓縮映射。本質上是對于某種特定的模式有響應,反之無響應,所以全卷積一直到最后一層,響應最強的特征圖,就是對應的分類。
??????? 怎樣全局?為提取到較為全局的特征,CNN一般至少有兩個卷積層,即最小為類似于LeNet的CNN網絡。多個卷積層可以使用卷積核的作用擴增到正副圖像,Pooling層的作用可以使特征保持一定的平移不變性。
?
一、LeNet網絡-最早的六層網絡.
?????? 下圖是廣為流傳LeNet的網絡結構,麻雀雖小,但五臟俱全,卷積層、pooling層、全連接層,這些都是現代CNN網絡的基本組件。
? ? ??
????? ?? 網絡結構:C1 +S2 +C3 +S4 +C5 +F6
???? ?? Conv層用于提取特征map,而pooling層用于降維和維持平移不變性,FullCon層用于特征壓縮把特征map壓縮到向量空間,MLP層用于多類識別。
???????
??????? LeNet5當時的特性有如下幾點:每個卷積層包含三個部分:卷積、池化和非線性激活函數;使用卷積提取空間特征;降采樣(Subsample)的平均池化層(Average?Pooling);雙曲正切(Tanh)或S型(Sigmoid)的激活函數;MLP作為最后的分類器;層與層之間的稀疏連接減少計算復雜度。?????
?????? LeNet的Caffe中配置文件:https://github.com/BVLC/caffe/blob/master/examples/mnist/lenet.prototxt????
?????? 問題:sigmod激活函數的反傳梯度消失問題(網絡加深,BP算法在誤差反傳過程中使用sigmod導數,導致殘差急劇衰減);CNN網絡過擬合(更深更大的網絡導致函數映射復雜,參數過多,容易過擬合);函數參數太多,訓練過程收斂性難以控制,因此導致訓練困難。
?
二、AlexNet -可并行的8層 CNN
????????? 卷積過程可以分組嗎?分組卷積的思想影響比較深遠,后來一些輕量級的SOTA(State Of The Art)網絡,都用到了分組卷積的操作,以節省計算量。受制于硬件限制,卷積分組過程真正使大規模CNN的快速訓練稱為可能。
??????? AlexNet 可以說是具有歷史意義的一個網絡結構,可以說在AlexNet之前,深度學習已經沉寂了很久。歷史的轉折在2012年到來,AlexNet 在當年的ImageNet圖像分類競賽中,top-5錯誤率比上一年的冠軍下降了十個百分點,而且遠遠超過當年的第二名。
???????? AlexNet 之所以能夠成功,深度學習之所以能夠重回歷史舞臺,原因在于工程模式和網絡結構上進行了改進,緩解或解決了LeNet遇到的大部分問題:
梯度消失?? 問題:非線性激活函數ReLU激活函數使用——用以解決反傳訓練時的梯度消失問題。
防止過擬合方法:Dropout,數據增強——使用更多的神經元用于容錯,用于增加泛化性能。
大數據??? 預訓練:百萬級ImageNet圖像數據——使用預訓練網絡,再對特定問題微調,類似原始DNN論文預先非監督訓練結構方法。
并行加速??? 訓練:GPU實現,LRN歸一化層的使用——增加訓練速度。
?? ? ?? ?? ? ? ??
?????????? 文章:DeepLearning回顧????
?1.AlexNet的8層分布式結構
??????
?? ? ?? ? AlexNet只在某些層進行參數交流,可以把一些層的神經元分不到不同的GPU上,進而可以并行運行。
2.ALexNet數據增強:圖像翻轉,裁剪平移,光照變換等....(這純粹是一個技巧,可以從網絡中分離出來)
???? ??
????????? 文章:DeepLearning回顧????
?? 3.DropOut—網絡冗余
????????? Dropout方法用于防止過擬合的。Dropout應該算是AlexNet中一個很大的創新,以至于Hinton在后來很長一段時間里的Talk都拿Dropout說事,后來還出來了一些變種,比如DropConnect等。
??? 4. ReLU激活函數
?????? 用ReLU代替了傳統的Tanh或者Logistic。好處有:
ReLU本質上是分段線性模型,前向計算簡單,無需指數之類操作;
ReLU的偏導也很簡單,反向傳播梯度,無需指數或者除法之類操作;
ReLU不容易發生梯度發散問題,Tanh和Logistic激活函數在兩端的時候導數容易趨近于零,多級連乘后梯度更加約等于0;
ReLU關閉了右邊,從而會使得很多的隱層輸出為0,即網絡變得稀疏,起到了類似L1的正則化作用,可以在一定程度上緩解過擬合。ReLU缺點,比如左邊全部關了很容易導致某些隱藏節點永無翻身之日,所以后來又出現pReLU、random ReLU等改進,而且ReLU會很容易改變數據的分布,因此ReLU后加Batch Normalization也是常用的改進的方法。
????? 5. Local Response Normalization
????????????? 局部響應歸一化,簡稱LRN,實際就是利用臨近的數據做歸一化,用以平衡網絡權重。這個策略貢獻了1.2%的Top-5錯誤率。
????? 6.Overlapping Pooling
?????????????? 覆蓋池化代替劃分池化,即Pooling的步長比Pooling Kernel的對應邊要小。用以降低平移影響。這個策略貢獻了0.3%的Top-5錯誤率。
????? 7.SoftMax層
?????????????? ?? softMax的好處就是反傳更新參數方式簡單明了,具有神奇的效果。
?????? 其實使用 交叉熵Cross Entropy Loss 作為損失函數不是 DNN 的專屬,在“當我們在談論GBDT:Gradient Boosting 用于分類與回歸”中介紹過 GBDT 在進行多類分類的時候就是使用的 Softmax + Cross Entropy,只是當時它被稱為對數損失函數(Log-Likehood Loss)。有興趣的同學可以回去看看那個部分。
?????? 最后需要說明的是,當我們使用 MSE(均方誤差)作為 Cost Function ,會導致的更新速度依賴于 Activation Function 的導數,在 Activation Function 為 Sigmoid 函數時很容易更新緩慢;而使用 Softmax + Cross Entropy Loss,能夠有效克服這個問題。這也是 Cross Entropy Loss 在分類問題中使用較多的原因之一。
??????? 文章:***DNN與他的參數們***https://zhuanlan.zhihu.com/p/26122560
??????? AlexNet的Caffeproto文件:https://github.com/BVLC/caffe/blob/master/models/bvlc_reference_caffenet/train_val.prototxt
??????? 深度學習:sigmod、tanh、ReLU函數的優缺點-文章圖文并舉.
?
三、網絡結果可視化-ZFNet
??????? 基于NN的分層堆疊性,NN即使以特定結構三層網便可以以任意精度逼近任意非線性函數,也同時表示函數形式在NN中的難以形式化。K曾經證明(1957),在單位超立方體內的任意連續函數,都可以選擇適當的參數展開為兩級級數求和問題。后來的研究發現,任意一個從x到y的映射,都存在一個合適的三層神經網絡以任意的精度逼近它。
??????? 反過來看,從神經網絡結構和參數,去描述函數的一個形式,涉及到假設和擬合問題,是個不確定問題。進而以此歸結出基于模型函數的優化函數,則是不可能完成的事情。從這個角度上看來,NN是個語義和語法的黑箱。
??????? Visualizing and Understanding Convolutional Networks,提出通過反卷積(轉置卷積)進行卷積網絡層可視化的方法,以此分析卷積網絡的效果,并指導網絡的改進,在AlexNet網絡的基礎上得到了效果更好的ZFNet網絡。
?????? 該論文是在AlexNet基礎上進行了一些細節的改動,網絡結構上并沒有太大的突破。該論文最大的貢獻在于通過使用可視化技術揭示了神經網絡各層到底在干什么,起到了什么作用。如果不知道神經網絡為什么取得了如此好的效果,那么只能靠不停的實驗來尋找更好的模型。使用一個多層的反卷積網絡來可視化訓練過程中特征的演化及發現潛在的問題;同時根據遮擋圖像局部對分類結果的影響來探討對分類任務而言到底那部分輸入信息更重要。
?????? 參考:? ZfNet解卷積:可視化CNN模型( PythonCode可視化Cifar10)
???????
?
??????? ZFNet在保留AlexNet的基本結構的同時利用反卷積網絡可視化的技術對特定卷積層的卷積核尺寸進行了調整,第一層的卷積核從11*11減小到7*7,將stride從4減小到2,Top5的錯誤率比AlexNet比降低了1.7%。對AlexNet本身網絡結構的改變不大。
?
四、更小更深更大—反復堆疊C和S層的VGG-Net
??????? 之前人們的觀念是,卷積核越大,receptive field(感受野)越大,看到的圖片信息越多,因此獲得的特征越好。AlexNet中用到了一些非常大的卷積核,比如11×11、5×5卷積核。雖說如此,但是大的卷積核會導致計算量的暴增,不利于模型深度的增加,計算性能也會降低。
?????? NN走向Deep的過程即是拆分卷積核,以多層小核組合來達到單層大核的目的。從FNN到局部感受野,從大卷積核到多層小卷積核,即是走的同一個過程。從整體到局部,從單個到組合,進而可以構建稀疏性,使結構最優化。
??????? 理論上反復堆疊卷積層和Pooling層,使網絡變長,可以獲得更為全局的特征,擬合更復雜的函數,可以得到更為精準的分類器。VGGNet是牛津大學計算機視覺組(Visual?Geometry?Group)和Google?DeepMind公司的研究員一起研發的的深度卷積神經網絡。VGGNet探索了卷積神經網絡的深度與其性能之間的關系,通過反復堆疊3*3的小型卷積核和2*2的最大池化層(最小核和最小池化層),VGGNet成功地構筑了16~19層深的卷積神經網絡。獲得ImageNet2014年亞軍(VGGNet,top-5錯誤率7.3%,19層神經網絡)。
??? ? ?????????
????? 圖片:VGG19網絡,理論山反復堆疊conv層和Pooling層,必定會得到更高的準確率
??????????
???????????? 圖片:ALexNet ,VGG19網絡,和Google InceptionNet的大致對比。
VGG與Alexnet相比,做了以下改進:
?????? 1.去掉了LRN層,作者實驗中發現深度卷積網絡中LRN的作用并不明顯。
?????? 2.采用更小的連續3x3卷積核來模擬更大尺寸的卷積核,例如2層連續的3x3卷積層可以達到一層5x5卷積層的感受野,但是所需的參數量會更少,兩個3x3卷積核有18個參數(不考慮偏置項),而一個5x5卷積核有25個參數。后續的殘差網絡等都延續了這一特點。
??????? VGGNet是相對于InceptionNet相對稠密的網絡,少了一些特定結構,因此在通用圖像處理領域有較好的泛化性能,作為多數檢測網絡和分類網絡的基礎網絡被廣泛使用,且VGGNet相對于其他網路,剪枝也相對簡單。
?
五、CNN網絡的神經元——Google InceptionNet
??????? 為何只用一種卷積核和Pooling核,為何不能得到一種更為稀疏的結構呢?3*3的核一定是最下粒度的嗎?
??????? 也因為,CNN網絡一直被批判,在結構上根本就不像一個神經網絡,而inception結構的引入,使CNN更像一個神經元 網絡,使用Inception結構,構建網絡中的網絡,也更像人的神經系統結構。??
??????? GoogLeNet InCeptionNet V1引入了Inception結構,保持利用密集矩陣搞計算性能的同時,強化了CNN結構的稀疏性。且inception結構為模塊化結構,方便在深度網絡中增刪修改。
??????? 代碼:GoogleNet的Caffe代碼:googlenet:caffe/train_val.prototxt at master · BVLC/caffe · GitHub??????????????????????????
??????? 參考:GoogleNet系列解讀???
??????? 文章:DNN結構演進History—CNN-GoogLeNet :Going Deeper with Convolutions????????????????????????????
??????? 提高模型準確率的方法是提高模型的復雜度,提升網絡性能最直接的辦法就是增加網絡深度和寬度,這也就意味著巨量的參數。但是,巨量參數容易產生過擬合也會大大增加計算量。
????? ? GoogLeNet InCeptionNet V1是? GoogLeNet的最早版本,出現在2014年的《Going deeper with convolutions》。文章認為解決上述兩個缺點的根本方法是將全連接甚至一般的卷積都轉化為稀疏連接。一方面現實生物神經系統的連接也是稀疏的,另一方面有文獻-1表明:對于大規模稀疏的神經網絡,可以通過分析激活值的統計特性和對高度相關的輸出進行聚類來逐層構建出一個最優網絡。這點表明臃腫的稀疏網絡可能被不失性能地簡化。 雖然數學證明有著嚴格的條件限制,但Hebbian準則有力地支持了這一點:fire together,wire together。
????? ?? 早些時候,為了打破網絡對稱性和提高學習能力,傳統的網絡都使用了隨機稀疏連接。但是,計算機軟硬件對非均勻稀疏數據的計算效率很差,所以在AlexNet中又重新啟用了全連接層,目的是為了更好地優化并行運算。
???????? 所以,現在的問題是有沒有一種方法,既能保持網絡結構的稀疏性,又能利用密集矩陣的高計算性能。大量的文獻表明可以將稀疏矩陣聚類為較為密集的子矩陣來提高計算性能,據此論文提出了名為Inception 的結構來實現此目的。
????????
????? 對Inception結構做以下說明:
??? ? ? ? ? 1 . 采用不同大小的卷積核意味著不同大小的感受野,最后拼接意味著不同尺度特征的融合;
??? ? ? ? ? 2 . 之所以卷積核大小采用1、3和5,主要是為了方便對齊。設定卷積步長stride=1之后,只要分別設定pad=0、1、2,那么卷積之后便可以得到相同維度的特征,然后這些特征就可以直接拼接在一起了;
?? ? ? ?? ? 3 . 文章實驗表明pooling挺有效,所以Inception里面也并列嵌入。
? ? ? ? ??? 4 . 網絡越到后面,特征越抽象,而且每個特征所涉及的感受野也更大,因此隨著層數的增加,3x3和5x5卷積的比例也要增加。
??? ? ? 但是,使用5x5的卷積核仍然會帶來巨大的計算量。 為此,文章借鑒NIN2,采用1x1卷積核來進行降維。 例如:上一層的輸出為100x100x128,經過具有256個輸出的5x5卷積層之后(stride=1,pad=2),輸出數據為100x100x256。其中,卷積層的參數為128x5x5x256。假如上一層輸出先經過具有32個輸出的1x1卷積層,再經過具有256個輸出的5x5卷積層,那么最終的輸出數據仍為為100x100x256,但卷積參數量已經減少為128x1x1x32 + 32x5x5x256,大約減少了4倍。
?????????
??????????????????????????????????? 改進型Inception結構,降低計算量
網絡改進:
??????? 1.Inception?V1中精心設計的Inception?Module提高了參數的利用效率,其結構如上圖所示。這一部分也借鑒了 Network?In?Network 的思想,形象的解釋就是Inception?Module本身如同大網絡中的一個小網絡,其結構可以反復堆疊在一起形成大網絡。
??????? 2 . 網絡最后采用了average pooling來代替全連接層(全連接層幾乎占據了AlexNet或VGGNet中90%的參數量,而且會引起過擬合,去除全連接層后模型訓練更快并且減輕了過擬合),想法來自NIN,事實證明可以將TOP1 accuracy提高0.6%。但是,實際在最后還是加了一個全連接層,主要是為了方便以后大家finetune;
??????? 3 . 雖然移除了全連接,但是網絡中依然使用了Dropout ;
??????? 4 . 為了避免梯度消失,網絡額外增加了2個輔助的softmax用于向前傳導梯度。文章中說這兩個輔助的分類器的loss應該加一個衰減系數,但看caffe中的model也沒有加任何衰減。此外,實際測試的時候,這兩個額外的softmax會被去掉。
Inception?V1 網絡結構:
????
?????? Inception?V1有22層深,比AlexNet的8層或者VGGNet的19層還要更深。但其計算量只有15億次浮點運算,同時只有500萬的參數量,僅為AlexNet參數量(6000萬)的1/12,卻可以達到遠勝于AlexNet的準確率,可以說是非常優秀并且非常實用的模型。
???? ? googleNet 的Caffe代碼:googlenet:caffe/train_val.prototxt at master · BVLC/caffe · GitHub????????????????????????
?
Google InceptionNet家族
??????? 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%)。
?????? GoogLeNet被稱為Inception-v1,加入batch normalization之后被稱為Inception-v2,加入factorization的idea之后,改進為Inception-v3。從DistBelief過渡到TensorFlow之后,不用再顧慮分布式訓練時要做模型的分割,設計出Inception-v4模型。設計的更簡潔,計算量也更小。
????? ? Googel InceptionV3到V4有哪些改進?https://www.zhihu.com/question/50370954/answer/128527285???
GoogleInception?V2的改進
?????? 1. 用兩個3*3的卷積代替5*5的大卷積(用以降低參數量并減輕過擬合),此處, Inception?V2學習了VGGNet。
?????? 2. 還提出了著名的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,簡化網絡結構。
?
六、殘差網絡—概率組合模型ResNet34
??????? 另一方面,inception網絡包含了網絡非全部遍歷的性質,輸入數據在形式上不需要走完整個網絡,是通過inception的堆疊結構實現的。為何不在模型的集成層面構建稀疏性,一個深度網絡是否需要全部的深?
?????? 此外,恒等映射不會降低網絡的泛化性能,多加幾層恒等映射不會降低網絡的表達能力。殘差越過一層網絡直接到下一層的HighWayNet思想促進了網絡向更深的方向發展,并由此取得了更好的效果。
?????? 恒等映射類似的保存殘差的思想在古老的RNN-LSTM網絡中已得到很好的體現。LSTM中使用Gate控制參數的改變,有效的防止梯度爆炸和梯度衰減,并能以此處理特征的變長問題。
? ? ? ?
????? ? ResNet最初的靈感出自這個問題:在不斷加神經網絡的深度時,會出現一個退化的問題,即準確率會先上升然后達到飽和,再持續增加深度則會導致準確率下降。這并不是過擬合的問題,因為不光在測試集上誤差增大,訓練集本身誤差也會增大。假設有一個比較淺的網絡達到了飽和的準確率,那么后面再加上幾個的全等映射層,起碼誤差不會增加,即更深的網絡不應該帶來訓練集上誤差上升。
??????? 這里提到的使用全等映射直接將前一層輸出傳到后面的思想,就是ResNet的靈感來源。假定某段神經網絡的輸入是x,期望輸出是H(x),如果我們直接把輸入x傳到輸出作為初始結果,那么此時我們需要學習的目標就是 F(x) = H(x) - x 。
????????? ?
??????? 一個ResNet的殘差學習單元(Residual?Unit),ResNet相當于將學習目標改變了,不再是學習一個完整的輸出H(x),只是輸出和輸入的差別H(x)-x,即殘差。
?????? 直通網絡-殘差網絡和Plain網絡—原始逐層CNN的結構對比如下:
???????
??????? 上圖 展示ImageNet網絡架構。左:vgg-19模型(19.6億觸發器)作為參考。中間:一個有34個參數層的普通網絡(3.6億個觸發器)。右:有34g1參數層的殘差網絡(3.6億觸發器)。快捷鍵點增加尺寸。表1顯示更多細節和其他變型。
??????? ResNet有很多旁路的支線將輸入直接連到后面的層,使得后面的層可以直接學習殘差,這種結構也被稱為shortcut或skip?connections。傳統的卷積層或全連接層在信息傳遞時,或多或少會存在信息丟失、損耗等問題。ResNet在某種程度上解決了這個問題,通過直接將輸入信息繞道傳到輸出,保護信息的完整性,整個網絡則只需要學習輸入、輸出差別的那一部分,簡化學習目標和難度。
??????? 下圖是各個層的殘差網絡在不同層數時的網絡配置,其中基礎結構很類似,都是前面提到的兩層和三層的殘差學習單元的堆疊。
????????
??????? 使用了ResNet的結構后,可以發現層數不斷加深導致的訓練集上誤差增大的現象被消除了,ResNet網絡的訓練誤差會隨著層數增大而逐漸減小,并且在測試集上的表現也會變好。
??????? ResNet 流行的結構為使用了50層、101層、201層,被稱為ResNet-50,DenseNet-101,ResNet-201。廣泛使用的ResNet為ResNet201.
集成模型理解???????
??????? 殘差網絡的集成模型理解:系統學習深度學習(二十)--ResNet,DenseNet,以及殘差家族????? 描述殘差網絡其實是一個深淺層網絡并行的投票系統。其實ResNet是由大多數中度網絡和一小部分淺度網絡和深度網絡組成的,說明雖然表面上ResNet網絡很深,但是其實起實際作用的網絡層數并沒有很深。大多數的梯度其實都集中在中間的路徑上,論文里稱為effective path 。ResNet似乎沒有解決深度網絡的梯度消失的問題,ResNet其實就是一個多人投票系統。
?????? 具有一定模型概率性的殘差網絡,使一個CNN網絡不需要全部的深,對數據的處理在復雜度上是不穩定的,最高復雜度取決于最深的路徑,最低復雜度來自于最短的路徑。
???????????????
??????? ResNet其實就是一個多人投票系統。
??????? 何凱明的Caffe Model:https://github.com/KaimingHe/deep-residual-networks?
? ? ? ? 基于TensorFlow的Model:https://github.com/ry/tensorflow-resnet? ?? ???????
??????? 一些其他的配置文件:https://github.com/antingshen/resnet-protofiles?
? ? ? ? ResNet50的一個使用案例:http://blog.csdn.net/tangwenbo124/article/details/56070322????? Caffe2使用了新的構架,擺脫了原始的分層結構,并實現了LSTM的功能。??
?
?
七、Inception ResNet V2
?
????? Inception-ResNet-v2是早期Inception V3模型變化而來,從微軟的殘差網絡(ResNet)論文中得到了一些靈感,使用與ResNet類似的網絡構架。
????? 文章鏈接:系統學習深度學習(二十一)--GoogLeNetV4與Inception-ResNet V1,V2??????
????? Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning,top5 error 3.08%。這篇論文,主要貢獻如下:
-
1、在Inception v3的基礎上發明了Inception v4,v4比v3更加復雜。
-
2、結合ResNet與GoogLeNet,發明了Inception-ResNet-v1、Inception-ResNet-v2,其中Inception-ResNet-v2效果非常好,但相比ResNet,Inception-ResNet-v2的復雜度非常驚人,跟Inception v4差不多。
-
3、加入了Residual Connections以后,網絡的訓練速度加快了。
-
4、在網絡復雜度相近的情況下,Inception-ResNet-v2略優于Inception-v4。
-
5、Residual Connections貌似只能加速網絡收斂,真正提高網絡精度的是“更大的網絡規模”。
????? InceptionV4的Inception-A 模塊網絡結構 和 Inception-ResNet-A 模塊網絡結構:
????? 其中的+就是residual connection
????? ?????
??????????????????? InceptionV4的Inception-A 模塊?????????????????????????????????????????????????????????????????? ?? Inception-ResNet-A 模塊
?
?Inception-ResNet構架圖
??????? 通過20個類似的模塊組合,構建一個Inception-ResNet:
????????
基于Inception-v3和Inception-v4,論文分別得到了Inception-ResNet-v1和Inception-ResNet-v2兩個模型。 ??????
????
?????????
??????? Inception-ResNet-v2圖中最上部分,可以看到整個網絡擴展了。注意該網絡被認為比先前的Inception V3還要深一些。在圖中主要部分重復的殘差區塊已經被壓縮了,所以整個網絡看起來更加直觀。另外注意到圖中inception區塊被簡化了,比先前的Inception V3種要包含更少的并行塔 (parallel towers)。
?
八、概率擴沿延——看看來自16年的DenseNet
??? ? ? DenseNet把直連結構引入到各個網絡層,比殘差網絡更近一步,是個更稠密的概率模型,這意味著訓練網絡需要更多的樣本以及更長的收斂周期,相比于殘差網絡,所謂的DenseNet沒有太大的工業價值。DenseNet結構的出現相當于把LSTM結構再次放松約束為RNN,展開形式是一種更為稠密的概率模型,理論上可以通過更強大的過擬合取得更好的測試結果。
? ? ? ? 文章鏈接:ResNet && DenseNet(原理篇)?????
?????????? ?
???????? 再重復一張拓撲變化圖?? 、
????? ?? 當然,RNN也可以拓撲變化為HighNet的形式。
?????? 其實無論是ResNet還是DenseNet,核心的思想都是HighWay Nets的思想:就是skip connection,對于某些的輸入不加選擇的讓其進入之后的layer(skip),從而實現信息流的整合,避免了信息在層間傳遞的丟失和梯度消失的問題(還抑制了某些噪聲的產生).
???????? 核心的思想都是HighWay Nets的思想:就是skip connection, 與RNN的表現能力相同。但在圖像模式識別的能力上,現階段實驗結果二維RNN的可達到能力不如標準CNN模型。
???????? 此外抑制噪聲意味著平均模型,模型仍然在訓練準確率和泛化能力取得平衡。最有效的方式仍然是收集更多的標記數據,達到更高的訓練正確率,以至于達到近似遍歷的層次。
???????? DenseNet分類流程:
??????????
???????? 文章地址: [1]Deep Residual Learning for Image Recognition,CVPR2015
?????? ? ? ? ? ? ? ? ? ? [2]Densely Connected Convolutional Networks,CVPR2016
?
標準CNN之后的網絡
?????? 此后,頂級研究院在網絡結構化上面進行粒度分解,InceptionN結構之后,出現了所謂的 Capsule Networks,以及從CNN網絡整體結構上進行分解,出現了GAN。
?????? 本身CNN考慮到了特征之間的幾何位置關系,max pooling對這種關系有一定破壞。Capsule Networks 的來由為了解決傳統CNN的空間位置信息錯失問題,因此結構更難訓練。
?????? 淺談CapsuleNetWork 。GAN是一種網絡訓練的思路,把CNN網絡聯合到一個生成式神經網絡模型中,使用生成式模型對CNN進行訓練。??????
后記:
???????? 中國人寫的英文論文就是容易看懂,果然語言是無國界的,論文作者有他自己的祖國。
總結
以上是生活随笔為你收集整理的AI:IPPR的数学表示-CNN结构进化(Alex、ZF、Inception、Res、InceptionRes)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重要子公司员工人数成谜
- 下一篇: AI:IPPR的数学表示-CNN基本结构