1. 程式人生 > >WRNS:Wide Residual Networks 論文筆記

WRNS:Wide Residual Networks 論文筆記

轉載請標明出處,理解不到位的地方也希望大家批評指正,謝謝!

前言

俗話說,高白瘦才是唯一的出路。但在深度學習界貌似並不是這樣。Wide Residual Networks就要證明自己,矮胖的神經網路也是潛力股。其實從名字中就可以看出來,Wide Residual Networks(WRNS)源自於Residual Networks,也就是大名鼎鼎的ResNet,之前我們也介紹了,ResNet就是解決隨著深度增加所帶來的退化問題,它可以將網路深度提升到千層的級別,本身就是以高和瘦出名,可以說是深度學習界的高富帥。然而這一次,大神們劍走偏鋒,摒棄了ResNet高瘦的風格,開始在寬度上打起來了注意,而Wide Residual Networks也確實揚眉吐氣,從此名聲大噪。

動機

作者認為,隨著模型深度的加深,梯度反向傳播時,並不能保證能夠流經每一個殘差模組(residual block)的weights,以至於它很難學到東西,因此在整個訓練過程中,只有很少的幾個殘差模組能夠學到有用的表達,而絕大多數的殘差模組起到的作用並不大。因此作者希望使用一種較淺的,但是寬度更寬的模型,來更加有效的提升模型的效能。

模型結構

這裡寫圖片描述
看圖,其實很容易理解,(a)和(b)是MSRA提出來的ResNet,一種基本結構,一種bottleneck結構;(c)和(d)就是作者提出來的wide結構。看不出什麼來是不是,那下面這個表格就能讓你一目瞭然:
這裡寫圖片描述
有點眼熟是不是,把表格中的k變為1,是不是就是ResNet論文中,cifar-10實驗所使用的網路?還記得嗎,ResNet原文中,作者針對cifar-10所使用的的網路,包含三種Residual Block,output channel分別是16、32、64,網路的深度為6*N+2。而在這裡,作者給16、32、64之後都加了一個係數k,也就是說,作者是通過增加output channel的數量來使模型變得更wider,從而N可以保持很小的值,就可以是網路達到很好的效果。
當然他確實做到了。
這裡寫圖片描述


這裡寫圖片描述
上面結果也確實證明了,增加模型的寬度是對模型的效能是有提升的。不過也不能完全的就認為寬度比深度更好,兩者只有相互搭配,達到合適的值,才能取得更好的效果。

後話

其實這篇論文是相對比較簡單的,他驗證了寬度給模型效能帶來的提升,也給大家以後在模型效能遇到瓶頸時提供了一種思路,比如說我在做cifar-10分類任務時,僅僅是將ResNet-20的寬度由16、32、64變為32、64、128,就將分類的效能由92%提升到94%以上,在caffe下,它的caffemodel大小也就10兆出頭,和ResNet-56的大小近似,視訊記憶體佔用率也不大,訓練速度很快。當然作者文中的WRNS-28-10確實是變態極致的結構了,效能確實好,在我的訓練框架下,cifar-10的分類準確率能夠逼近97%,但是caffemodel的大小有150M左右,訓練的也是非常慢,沒記錯的話視訊記憶體應該佔用18G左右。所以如果你想在保證在一定準確率的基礎上,使得模型複雜度降低,可以從更淺、更加複雜的模型入手。另外我覺得本文還可以嘗試的東西可以從文中的另外一個表格入手:
這裡寫圖片描述


我們可以發現,其實B(3,1,3)在深度最淺、引數量最小、訓練時間最短的前提下,在cifar-10的分類錯誤率上也幾乎達到了最好的水平。由於原文中作者只研究了寬度對模型的影響, 因此並沒有對這部分內容進行解釋。因此這個也是一個可嘗試的方向。
另外對於drop-out,其實在WRNS-16-4上,也能夠帶來效能的提升。雖然dropout是舊辦法,但是依然也是好辦法,大家大膽去嘗試就對了。