解析Wide Residual Networks


Wide Residual Networks (WRNs)是2016年被提出的基於擴展通道數學習機制的卷積神經網絡。對深度卷積神經網絡有了解的應該知道隨着網絡越深性能越好,但是訓練深度卷積神經網絡存在着這樣子那樣子的問題,如梯度消失/彌散(gradient vanishing/exploding)。當然除此之外,實驗結果也表明越深的網絡結構/模型帶來的性能提升並不是很明顯,反而會需要大量的計算資源來做支撐(具體可看ResNet系列結果)。

那WRNs究竟干了什么呢?在這之前,作者的觀點是過往大家對於殘差網絡(Residual Networks)的研究基本都停留在了如何加深殘差網絡的深度和編排殘差模塊的內部結構,所以作者就提出能否通過增大網絡結構的width來改善網絡的性能的假設。也就是說希望通過使用更淺層的網絡來獲得跟跟深度網絡媲美的准確度。

簡單點說ResNet存在的問題有如下:

  • He Kaiming大神設計的ResNet卷積神經網絡是通過不斷增加層數的傳統疊加式的卷積神經網絡,即使在這值終引入了bottleneck block來減少參數;
  • 在訓練的過程中,模型中可能只有部分模塊具備很好的表征能力,這就相當於減弱了特征復用的情況; 

 

圖 1 不同的Residual Blocks

ResNet的典型Residual Block是由兩個conv 3x3構成的或者conv 1x1 -> conv 3x3 -> conv 1x1 (參看上圖左邊兩個小圖)。而WRNs則通過增加作用於同一個輸入的通道數(channels)來構建模型,除此之外有一個很重要的點需要注意:WRNs的作者重新定義了如何使用Dropout來正則化繼而防止模型過擬合。增加通道數獲取更多的特征圖跟增加層數一樣都會增加網絡模型種的參數量,所以需要借助一定的正則化方法(BatchNorm或者Dropout)來防止過擬合。以往的卷積神經網絡Dropout都是放在一層網絡的所有卷積操作之后,但是在這個實驗中作者將Dropout放到了兩個conv 3x3的卷積中間,並經過測試驗證如此的結構設計所帶來的效果要比以前的設計模式所帶來的效果更好(作者之所以沒使用BN(BatchNorm)是因為覺得它需要有數據增強的輔助,這點我查找了些資料並沒有看到出自哪里,有朋友了解的話勞煩留言告知一下。文中提到的另外一點說BN也並不是大多數時候都需要的,這點估計指的是可能受限於Batch大小的選擇原因,這點倒是可以說得通,這可以看我關於BN的分析的博客,但是放在這里說不用可能會有點牽強。),當然作者並不是完全沒有使用BN,而是Dropout和BN都用了,BN主要放在Residual Block之間(BN-ReLU-Conv,注意這里跟以往的結構也是不一樣,以往的結構都是Conv-BN-ReLU)

圖 2 WRNs網絡結構

從上述的網絡結構中看三個超參數:l (小寫的L)、k、N。網絡深度l、通道系數k、一組中有N個Residual Block。為什么要看這幾個超參數呢?因為它主要影響了模型中的參數總量。假設保持某卷積層的通道數(也就是所謂的width of the network)不變,增加N層操作將會增加參數的量為:N * (kernel_size * kernel_size) * #channels。那么如果此時增加通道數,也就是k的值,那么參數的量就會呈平方增加:N * (kernel_size * kernel_size) * # channels * 2 (k=2)。咋一看就會覺得這哪里有減少計算量,反而計算量成倍的增長啊。但是作者強調GPU計算適合並行計算,所以總體來說還是computational efficiency。 

圖 3 k對網絡結構的影響(圖片來源:Understanding Wide Residual Networks

結果比對:從圖3的CIFAR-10實驗結果可以看出一些ResNet-1202有10.2M個參數,error為7.93,反觀WRN-40-4的結果要好很多,參數量也稍微少點。當然從Paper中另外一幅圖也可以看出WRN的訓練速度要比更深的網絡ResNet-1004要快得多(快8倍的速度)。

圖 4 基於CIFAR-10和CIFAR-100的結果比對

 

圖 5 訓練速度比對

論文的主要幾個貢獻點:

  • 重新定義了如何使用Dropout;
  • 確實不一定要更深的網絡(thin and deeper)來訓練模型,WRN也可以達到相同的效果;
  • BN-ReLU-CONV訓練的速度要比CONV-BN-ReLU的快,且准確度更好(其實BN放在哪里一直有爭議,所以持懷疑態度!);

這里談談幾點個人觀點(純粹討論,有能解決我疑惑的朋友歡迎指出)

  • Wide ResNet的貢獻點並不是很能說服人,我個人更認為它是簡化版的GoogLeNet(參考Inception Module);
  • 上述的貢獻的最后一點,我也說了BN放在哪里一直比較有爭議,我當初做課題研究的時候也有過這個疑惑,個人認為BN的位置並不是決定訓練速度的重要觀點;
  • WRN的實驗設置個人覺得比較有問題,其實對於ResNet普通版本(這里指非1000層以上的)來說性能比WRN沒差多少,但是參數量和速度比WRN要好(這里指K>4),所以並沒有太大的一個優勢存在,這里從作者本身的論文可以看出。當然作者的重點是為了強調“深層網絡(幾百到1000)”這樣子的網絡其實是沒必要的,通過增加通道數(number of feature maps)也可以達到相應的效果;
  • 個人對於Dropout的新的使用方法比較認可;

原文鏈接地址:Sergey Zagoruyko and Nikos Komodakis, Wide Residual Networks, arXiv:1605.07146v4


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM