日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CVPR2016:ResNet 从根本上解决深度网络退化问题

發布時間:2024/9/27 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CVPR2016:ResNet 从根本上解决深度网络退化问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

深度殘差網絡(Deep residual network, ResNet)的提出是CNN圖像史上的一件里程碑事件,在2015年提出的時候便取得了五項第一,而何愷明大神也憑借這一paper斬獲CVPR 2016 Best Paper Honorable Mention。

目錄

  • 背景(深度網絡的退化問題)
  • 殘差結構
  • 殘差結構起作用的原因
  • 網絡結構
  • 實驗結果
  • 論文地址

背景(深度網絡的退化問題)

  • 對于卷積神經網絡,深度是一個很重要的因素。深度卷積網絡自然的整合了低中高不同層次的特征,特征的層次可以靠加深網絡的層次來豐富。因此在構建卷積網絡時,網絡的深度越高,可抽取的特征層次就越豐富越抽象。所以一般我們會傾向于使用更深層次的網絡結構,以便取得更高層次的特征。但是更深層的網絡結構真的帶來了更好的表現嗎?我們看下面這張圖:

  • 可以看到,擁有56層數的網絡結構表現明顯差于擁有20層數的網絡結構,造成這一現象的原因大概有:過擬合、梯度消失/爆炸和深度網絡的退化,我們來一一剖析。

過擬合

  • 對于這一點答案是顯然的,因為過擬合會讓網絡在訓練集上表現得很好,而從上圖我們可以看出,無論是在訓練集還是測試集中,擁有更深層次的網絡表現均比淺層次的網絡差,那顯然就不是過擬合導致的。

梯度消失/爆炸

  • 我們先簡單回顧一下概念:梯度消失/爆炸是因為神經網絡在反向傳播的時候,反向連乘的梯度小于1(或大于1),導致連乘的次數多了之后(網絡層數加深),傳回首層的梯度過小甚至為0(過大甚至無窮大),這就是梯度消失/爆炸的概念。
  • 但我們知道,如今我們已經習慣加入BN層(Batch Normalize),他可以通過規整數據的分布基本解決梯度消失/爆炸的問題,所以這個問題也不是導致深層網絡退化的原因。

深度網絡的退化問題

  • 我們選擇加深網絡的層數,是希望深層的網絡的表現能比淺層好,或者是希望它的表現至少和淺層網絡持平(相當于直接復制淺層網絡的特征),可實際的結果卻讓我們大吃一驚(深度網絡退化),接下來我們深究一下導致深度網絡退化的原因。
  • MobileNet V2的論文中提到,由于非線性激活函數Relu的存在,每次輸入到輸出的過程都幾乎是不可逆的,這也造成了許多不可逆的信息損失。我們試想一下,一個特征的一些有用的信息損失了,那他的表現還能做到持平嗎?答案是顯然的

  • 我們用一個直觀的例子來感受一下深層網絡與淺層網絡持平的表現:

    ?

    • 我們把右邊的網絡理解為左邊淺層網絡加深了三層(框起來的部分),假如我們希望右邊的深層網絡與左邊的淺層網絡持平,即是希望框起來的三層跟沒加一樣,也就是加的三層的輸入等于輸出。我們假設這三層的輸入為x,輸出為,那么深層網絡與淺層網絡表現持平的直觀理解即是:,這種讓輸出等于輸入的方式,就是論文中提到的恒等映射(identity mapping)
    • 所以ResNet的初衷,就是讓網絡擁有這種恒等映射的能力,能夠在加深網絡的時候,至少能保證深層網絡的表現至少和淺層網絡持平

    ?

    殘差結構

    • 通過對深度網絡退化問題的認識我們已經明白,要讓之不退化,根本原因就是如何做到恒等映射。事實上,已有的神經網絡很難擬合潛在的恒等映射函數。但如果把網絡設計為,即直接把恒等映射作為網絡的一部分,就可以把問題轉化為學習一個殘差函數.只要,就構成了一個恒等映射。 而且,擬合殘差至少比擬合恒等映射容易得多(后面第三部分會解釋)。我們看一下殘差結構與正常結構對比圖:

      ?

    • 我們可以看到,殘差結構比正常的結構多了右側的曲線,這個曲線也叫作shortcut connection通過跳接在激活函數前,將上一層(或幾層)的輸出與本層輸出相加,將求和的結果輸入到激活函數作為本層的輸出
    • 我們從數學的角度來看殘差結構,假設殘差結構的輸入為
    • ,則輸出等于:
    • 其中就是我們要學習的殘差,我們把移到等式的左側,殘差就等于,以上圖為例,殘差就是中間有一個Relu激活的雙層權重,即:
    • 其中是Relu激活函數,而是指兩個weight layer。

    ?

    ?

    ?

    ?

    殘差結構起作用的原因

    • 關于殘差結構之所以work,我想這一點也是很多讀者疑惑的地方,這里分四點和大家解釋。
  • 首先給大家一個我自己的理解:我覺得加了殘差結構后就是給了輸入x多一個選擇在神經網絡學習到這層的參數是冗余的時候它可以選擇直接走這條“跳接”曲線,跳過這個冗余層,而不需要再去擬合參數使得輸出等于。
  • 因為學習殘差的計算量比學習輸出等于輸入小。假設普通網絡為A,殘差網絡為B,輸入為2,輸出為2(輸入和輸出一樣是為了模擬冗余層需要恒等映射的情況),那么普通網絡就是,而殘差網絡就是,顯然殘差網絡中的。我們知道網絡中權重一般會初始化成0附近的數,那么我們就很容易理解,為什么讓(經過權重矩陣)擬合0會比容易了。
  • 我們知道ReLU能夠將負數激活為0,而正數輸入等于輸出。這相當于過濾了負數的線性變化,讓變得更加容易。
  • 我們知道殘差網絡可以表示成,這就說明了在求輸出對輸入的倒數(梯度),也就是在反向傳播的時候,,殘差結構的這個常數1也能保證在求梯度的時候梯度不會消失
  • ?

    ?

    ?

    網絡結構

    • 先上網絡的結構圖,左到右分別是VGG,沒有殘差的PlainNet,有殘差的ResNet,我們從這張圖也可以感受當年ResNet對VGG的統治力:

      ?

    • 細心的讀者會發現,在ResNet中有的跳接線是實線,有的跳接線是虛線。虛線的代表這些模塊前后的維度不一致,因為去掉殘差結構的Plain網絡還是和VGG一樣,也就是每隔n層進行下采樣但深度翻倍(VGG通過池化層下采樣ResNet通過卷積)。這里就有兩個情況:
    • 空間上不一致時,需要給輸入的X做一個線性的映射:
    • 深度上不一致時,有兩種解決方法,一種是在跳接過程中加一個1×1的卷積層進行升維,另一種則是直接補零(先做下采樣)。試驗后發現兩種方法都可以。
    • 針對比較深的神經網絡,作者也考慮到計算量,會先用1×1的卷積將輸入的256維降到64維,然后通過1×1恢復。這樣做的目的是減少參數量和計算量

    實驗結果

    • 作者對比了18層的神經網絡和34層的神經網絡,發現殘差結構確實解決了網絡的退化問題:

      ?

    • 作者還對比了在ImgaeNet上的測試結果,發現ResNet確實效果非常好:

    論文地址

    https://arxiv.org/pdf/1512.03385.pdf



    作者:CristianoC
    鏈接:https://www.jianshu.com/p/764cb9e5bb52
    來源:簡書
    著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

    總結

    以上是生活随笔為你收集整理的CVPR2016:ResNet 从根本上解决深度网络退化问题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。