大白話《Mixed Link Networks》
今天來一篇預告《Mixed Link Networks》。今天是2018年2月6日,論文原文將於2018年2月7日在arxiv見面。這篇文章非常有意思,想法大概是去年暑假在深入分析resnet和densenet共性的時候,聯想到兩者之間的一個共同的根節點—Deep Stacking
Neural Network得到的啟發。不過因為說明和篇幅等各種問題,最終我們把Deep StackingNeural Network拿掉了,直接抽絲剝繭,抽出它的核心—「Dense Topology」 密集拓撲結構。好了,我們話不多說,言歸正傳。相信作為深度學習煉丹師們對於兩個結構一定不陌生:ResNet和DenseNet。很多人可能會說(包括這兩個結構的作者),沒錯,我很清楚,ResNet提出了一種skip connection的拓撲結構,而densenet在這個基礎上進一步強化了連接的密度,形成了每一層與之前所有層都有直接通路的網路拓撲結構。這裡面看似出現了兩個網路在拓撲設計上「很不一樣」的地方—然而,較為表面的理解通常是脆弱的。實際上,ResNet表面上是skip connection的連接模式,但是這篇論文通過推導證明了ResNet本質上也是一種Dense的密集拓撲連接!換句話說,DenseNet並沒有提出新的拓撲連接模式,它和ResNet唯一的區別就是:在一個相同的「Dense Topology」的基礎上,ResNet使用了element-wise addition來連接,而DenseNet則使用了concatenation來連接。
非常簡單的說明一下怎麼推導的(將第一行skip connection不斷循環帶入第二行的feature表達式,得到第三個Dense Topology形式的等式):
為了更好的理解,這裡可以額外追溯到ResNet兩個版本的一些往事。我們知道最早一版的ResNet CVPR16,relu套在了x+F(x) 之外,其實這個版本是無法嚴格推導出「Dense Topology」的形式的,其實這也是為什麼這個版本的確存在瑕疵的原因—在ResNet v1版中,1000層的效果比154層要差。等到到了第二個版本ResNet ECCV16(也就是這篇論文推導依據的這個版本),因為具備了identity map,所以形式上ResNet可以完美推導到「Dense Topology」,也就是說,不管原作者有沒有意識到,這個版本的ResNet本身就是一個徹徹底底的密集連接模式的網路了,只是他們採用了「+」來作為連接方式【圖一(b)】。
那麼我們知道這些有什麼用呢?那自然很有用處。知道這兩個「核武器」網路結構ResNet和DenseNet本身實質上就share了一個相同的結構,那麼就能夠更好地指引我們research的方向。既然這兩個網路都非常的有效,那麼就坐實了「Dense Topology」這個拓撲結構是非常有效的關鍵。我們就可以在這個結構的基礎上,尋找更加有效的連接方式,從而進一步壓榨網路本身的效率和性能。很明顯,ResNet和DenseNet都走了兩個極端—一個只逐元素加「+」【圖一(b)】,一個只做拼接「||」【圖一(c)】。於是一個混合它們來提升的思路就非常顯而易見了【圖一(d)】。
比較有意思的是,我們最初混合的是非常自由的【圖二(a)】,但是這樣的自由帶來了一些問題。一個最主要的問題就是inner link部分的位置不知道如何自由地控制—因為這個不是一個可導的變數,隨著網路的加深,位置組合量爆炸增長,無法搜索。所以我們從前人分析ResNet和DenseNet的一些可能的缺陷出發:ResNet因為一直在同一個位置不停地疊加信息,所以可能會弱化信息流;DenseNet因為底層的raw feature太多,可能部分feature會產生冗餘信息。於是我們發現一招:只要讓inner link module的位置隨著outer link module曾廣整個feature維度的時候同步增加(大白話:與右端對齊)即可一舉兩得,同時緩解兩個方面的局限。所以我們最終拍板這種名為「unfixed」 inner link的混合結構即是我們的MixNet【圖二(e)】。
因為MixNet是一種非常泛化的結構,所以當inner link,outer link,和fixed/unfixed的這些超參數取到一些特定的值和情況的時候,我們的網路就退化成了ResNet,DenseNet以及去年360在NIPS上提出的Dual Path Network(DPN)。DPN其實是基本上完全保留了ResNet和DenseNet兩個通路分量,是我們的inner link module取fixed的一種特殊情況【圖二(d)】。
作為research,我們自然需要分析提出的一些新的東西的有效性。於是我們首先考察圖二這四種結構的參數效率。我們在CIFAR100上做了實驗,基本上儘可能保證所有網路參數量接近的情況下從小到大做了4組對比實驗,發現MixNet所使用的超參數結構很穩定,很優秀【圖三(a)】。
接下來就要從內部解剖MixNet。它的一大創新點就是inner link module的unfixed模式。我們依然在CIFAR100上比較了它與fixed模式的效率,固定住outer link module,隨著inner link size k_1的增加,unfixed逐漸顯示出明顯的優勢【圖三(c)】。所以,就它了,沒跑了!
額外,我們再看看k_2對整體的影響。固定k_1,k_2的增益隨著數值的增大越來越不明顯,所以在k_1確定的時候,如果需要一定的時間空間tradeoff,k_2不需要太大效果就基本ok了【圖三(d)】。
接下來,我們和茫茫多的baseline在CIFAR和SVHN上做了比較,比較有意思的是MixNet-100(k_1 = 12, k_2 = 12)這個模型只有1.5M,在SVHN上一跑竟然跑到了1.5+,一下與SVHN上最強的一波結果不相上下,這個讓我們非常驚訝和驚喜。
最後我們在大規模數據集ImageNet上對部分MixNet和之前一批competitive baselines做了參數效率比較,發現MixNet處於最高效率的那條底部線條上【圖三(b)】,於是我們就放心了(更多細節明日arxiv見~~~)。
這篇文章的出發點其實是一個很不錯的借鑒思路。分析一些很有效的結構的共性,保留真正work的部分,提升有改善空間的部分,不空想,不臆想。希望能夠有原來越多這樣讓人讀來不經意間露出一句「aha」的工作~ DeepInsight,Keep moving on~
-------------------------------------- 更新 ---------------------------------------------
2月7日到了,給出arxiv鏈接地址:
https://arxiv.org/pdf/1802.01808.pdf
後續code會整理好在github放出~~
推薦閱讀:
※經典模型-1:《Deep Residual Learning for Image Recognition》論文翻譯
※使用ResNet的caffe實現進行圖片分類
※TF官方的ResNet代碼詳解
※經典模型-2:手把手帶你分析、解讀ResNet源代碼
TAG:卷積神經網路CNN | 深度學習DeepLearning | ResNet |