殘差網絡

殘差網絡

殘差網絡(Residual Network簡稱ResNet)是在2015年繼Alexnet Googlenet VGG三個經典的CNN網絡以後提出的,並在ImageNet比賽classification任務上拔得頭籌,ResNet因其簡單又實用的優勢,現已在檢測,分割,識別等領域被普遍的應用。
    ResNet能夠說是過去幾年中計算機視覺和深度學習領域最具開創性的工做,有效的解決了隨着網絡的加深,出現了訓練集準確率降低的問題,以下圖所示:
前端

image.png
image.png

Fig. 1
  圖中56層的普通神經網絡在訓練集上的表現明顯的比20層的差不少,從而致使在測試集上的表現也相對較差。

作過深度學習的同窗應該都知道,隨着網絡層數的增長而致使訓練效果變差的一個緣由是梯度彌散和梯度爆炸問題(vanishing/exploding gradients),這個問題抑制了淺層網絡參數的收斂。可是這個問題已經經過一些參數初始化的技術較好的解決了,有興趣的同窗能夠看下如下幾篇文章[2][3][4][5][6]。
可是即使如此,在網絡深度較高的時候(例如圖中的56層網絡)任然會出現效果變差的問題,咱們在先前的Alexnet Googlenet VGG三個模型中能夠看出,網絡的深度在圖片的識別中有着相當重要的做用,深度越深能自動學習到的不一樣層次的特徵可能就越多,那究竟是什麼緣由致使了效果變差呢?
ResNet的提出者作出了這樣的假設:若是一個深層的網絡在訓練的時候可以訓練成一個淺層的網絡加上一堆恆等映射的網絡,那這樣的獲得的深層網絡在訓練的偏差上是不會比這個淺層的網絡還要高的,因此問題的根源可能在於當網絡深度較深的時候,多層的非線性的網絡在擬合恆等映射的時候遇到了困難,因而就提出了一種「短路」(shortcut connections)的模型來幫助神經網絡的擬合,以下圖所示:
image.png

     Fig. 2
假設
是咱們最終要擬合的函數,則令 
 其中
表明普通的堆疊起來的網絡擬合出來的函數,
 是輸入,普通網絡的激活函數用的是ReLU函數。很是簡單的一個結構,整個網絡就是普通網絡加上一個恆等映射,普通網絡只是整個網絡的一部分(
),這也是 Residual (剩餘的)名字的由來。由上述結構能夠獲得公式:
                                                           

這裏的 
 是輸出,
 是輸入,
 是圖中「短路」的起點和終點之間的網絡所要擬合的函數,

是第 
 層的係數矩陣。圖中是用的普通的網絡,但對於卷積網絡這種結構也一樣適用。對於這個公式須要注意的 一點是這裏的輸入和輸出多是不一樣維度的,須要用一個線性映射解決這個問題:
                                           
                                                      

這裏 
 也是係數矩陣。
下面咱們來看做者設計的34層ResNet的結構與VGG網絡結構的對比(參加比賽使用的網絡達到了152層):
image.png

Fig. 3
左側19層的VGG模型的計算量是 19.6 billion FLOPs 中間是34層的普通卷積網絡計算量是3.6 billion FLOPs
右邊是34層的ResNet計算量是3.6billion FLOPs,圖中實線的箭頭是沒有維度變化的直接映射,虛線是有維度變化的映射。經過對比能夠看出VGG雖然層數很少可是計算量仍是很大的,後面咱們能夠經過實驗數據看到34層的ResNet的表現會比19層的更好。
更詳細的結構以下圖所示(包括一些層數更多的ResNet):
image.png

Fig. 4

殘差網絡雖然在結構和原理上都很是簡單,但表現不俗且解決了隨着深度增長效果變差的問題,下面是實驗數據:
image.png
                                                                            Fig. 5
這是普通網絡(左)和殘差網絡(右)的對比,圖中細線表明訓練偏差,粗線表明檢驗偏差,藍色是18層,紅色是34層。從圖中能夠看出普通網絡是存在較深的網絡比淺的網絡效果差的問題,而殘差網絡倒是層數越高效果越好。
image.png

Fig. 6
這是殘差網絡,VGG和GoogleNet在ImageNet數據集上的測是數據,top-1 err表示1000種類別中分類錯誤的機率,top-5 err 表示1000種類別中網絡得出的最有可能的5種類別中任然沒有正確類別的機率。圖中34層A,B,C是指上文提到的輸入輸出維度不一致問題中當卷積層之間維度變高的時候採起的三種方案,A是將全部增長的維度都用0填充。(zero-padding)B 是保持原始輸入,增長的維度用線性映射填充。C 是將全部的輸入都進行線性映射再加到輸出中。
從圖中能夠看出在效果上,34層的殘差網絡比VGG和GoogleNet都要好,A,B,C三種方案中C方案效果最好,可是B,C方案在計算量上比A方案要大不少,而效果提高的又不多,因此論文做者建議仍是使用A方案較爲實用。
下面咱們介紹層數在50及以上的殘差網絡的結構: Deeper Bottleneck Architectures。這種結構是做者爲了下降訓練時間所設計的,結構對好比下圖所示:
image.png

Fig. 7
圖中左邊是34層ResNet使用的普通的結構,右邊是50層及以上的所使用的瓶頸(Bottleneck)結構,
這裏的瓶頸結構中有兩個1X1但通道數分別爲64和256,第一個是將256通道的輸入降維到64通道,第二個是將64通道升維到256通道。中間是普通的3X3的卷積網絡,最後總體的計算量與左邊的相近。這樣的結構的好處是在卷積的同時就完成了維度上的適應,輸入能夠直接加到輸出上,這樣可讓計算量減小一半之多。在圖5中有50層網絡的整個結構,總共的計算量爲 3.8 billion FLOPs 只比34層的多0.2 個billion。
一樣的在圖4和圖5中能夠看出101層和152層的殘差網絡也用這種結構在計算量上比16層的VGG還要少,而在準確度上比VGG高出許多。

總結:

ResNet經過殘差學習解決了深度網絡的退化問題,讓咱們能夠訓練出更深的網絡,這稱得上是深度網絡的一個歷史大突破吧。也許不久會有更好的方式來訓練更深的網絡,讓咱們一塊兒期待吧!
目前,您能夠在人工智能建模平臺 Mo 找到基於tensorflow 的34層的殘差網絡(ResNet)實現樣例,數據集是CIFAR-10 (CIFAR的十分類數據集),這個樣例在測試集上的精度爲90%,驗證集上的精度爲98%。主程序在ResNet_Operator.py中,網絡的Block結構在ResNet_Block.py中,訓練完的模型保存在results文件夾中。
項目源碼地址:momodel.cn/explore/5d1…


參考文獻:
[1] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. arXiv preprint arXiv:1512.03385,2015.
[2] Y. LeCun, L. Bottou, G. B. Orr, and K.-R.M¨uller. Efficient backprop.In Neural Networks: Tricks of the Trade, pages 9–50. Springer, 1998.
[3] X. Glorot and Y. Bengio. Understanding the difficulty of training deep feedforward neural networks. In AISTATS, 2010.
[4] A. M. Saxe, J. L. McClelland, and S. Ganguli. Exact solutions to the nonlinear dynamics of learning in deep linear neural networks.arXiv:1312.6120, 2013.
[5] K. He, X. Zhang, S. Ren, and J. Sun. Delving deep into rectifiers:Surpassing human-level performance         on imagenet classification. In ICCV, 2015.
[6] S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. In ICML, 2015.
網絡

關於咱們

Mo(網址:momodel.cn)是一個支持 Python 的人工智能在線建模平臺,能幫助你快速開發、訓練並部署模型。app


Mo 人工智能俱樂部 是由網站的研發與產品設計團隊發起、致力於下降人工智能開發與使用門檻的俱樂部。團隊具有大數據處理分析、可視化與數據建模經驗,已承擔多領域智能項目,具有從底層到前端的全線設計開發能力。主要研究方向爲大數據管理分析與人工智能技術,並以此來促進數據驅動的科學研究。機器學習

目前俱樂部每週六在杭州舉辦以機器學習爲主題的線下技術沙龍活動,不按期進行論文分享與學術交流。但願能匯聚來自各行各業對人工智能感興趣的朋友,不斷交流共同成長,推進人工智能民主化、應用普及化。
函數

image.png
相關文章
相關標籤/搜索