一文簡述ResNet及其多種變體

2020-12-12 機器之心Pro

本文主要介紹了 ResNet 架構,簡要闡述了其近期成功的原因,並介紹了一些有趣的 ResNet 變體。

在 AlexNet [1] 取得 LSVRC 2012 分類競賽冠軍之後,深度殘差網絡(Residual Network, 下文簡寫為 ResNet)[2] 可以說是過去幾年中計算機視覺和深度學習領域最具開創性的工作。ResNet 使訓練數百甚至數千層成為可能,且在這種情況下仍能展現出優越的性能。

因其強大的表徵能力,除圖像分類以外,包括目標檢測和人臉識別在內的許多計算機視覺應用都得到了性能提升。

自從 2015 年 ResNet 讓人們刮目相看,研究界的許多人在深入探索所其成功的秘密,許多文獻中對該模型做了一些改進。本文分為兩部分,第一部分為不熟悉 ResNet 的人提供一些背景知識,第二部分將介紹我最近閱讀的一些論文,關於 ResNet 的不同變體和對 ResNet 架構的理解。

重新審視 ResNet

根據泛逼近定理(universal approximation theorem),只要給定足夠的容量,單層的前饋網絡也足以表示任何函數。但是,該層可能非常龐大,網絡和數據易出現過擬合。因此,研究界普遍認為網絡架構需要更多層。

自 AlexNet 以來,最先進的 CNN 架構已經越來越深。AlexNet 只有 5 個卷積層,而之後的 VGG 網絡 [3] 和 GoogleNet(代號 Inception_v1)[4] 分別有 19 層和 22 層。

但是,網絡的深度提升不能通過層與層的簡單堆疊來實現。由於臭名昭著的梯度消失問題,深層網絡很難訓練。因為梯度反向傳播到前面的層,重複相乘可能使梯度無窮小。結果就是,隨著網絡的層數更深,其性能趨於飽和,甚至開始迅速下降。

增加網絡深度導致性能下降

在 ResNet 出現之前有幾種方法來應對梯度消失問題,例如 [4] 在中間層添加了一個輔助損失作為額外的監督,但其中沒有一種方法真正解決了這個問題。

ResNet 的核心思想是引入一個所謂的「恆等快捷連接」(identity shortcut connection),直接跳過一個或多個層,如下圖所示:

殘差塊

ResNet 架構

[2] 的作者認為,堆疊層不應降低網絡性能,因為我們可以簡單地在當前網絡上堆疊恆等映射(該層不做任何事情),得到的架構將執行相同的操作。這表明較深的模型所產生的訓練誤差不應該比較淺的模型高。他們假設讓堆疊層適應殘差映射比使它們直接適應所需的底層映射要容易一些。上圖中的殘差塊明確表明,它可以做到這一點。

事實上,ResNet 並不是第一個利用快捷連接的模型,Highway Networks [5] 就引入了門控快捷連接。這些參數化的門控制流經捷徑(shortcut)的信息量。類似的想法可以在長短期記憶網絡(LSTM)[6] 單元中找到,它使用參數化的遺忘門控制流向下一個時間步的信息量。ResNet 可以被認為是 Highway Network 的一種特殊情況。

然而,實驗結果表明 Highway Network 的性能並不比 ResNet 好,這有點奇怪。Highway Network 的解空間包含 ResNet,因此它的性能至少應該和 ResNet 一樣好。這表明,保持這些「梯度高速路」(gradient highway)的暢通比獲取更大的解空間更為重要。

按照這種思路,[2] 的作者改進了殘差塊,並提出了一種殘差塊的預激活變體 [7],梯度可以在該模型中暢通無阻地通過快速連接到達之前的任意一層。事實上,使用 [2] 中的原始殘差塊訓練一個 1202 層的 ResNet,其性能比 110 層的模型要差。

殘差塊的變體

[7] 的作者在其論文中通過實驗表明,他們可以訓練出 1001 層的深度 ResNet,且性能超越較淺層的模型。他們的訓練成果卓有成效,因而 ResNet 迅速成為多種計算機視覺任務中最流行的網絡架構之一。

ResNet 的最新變體以及解讀

隨著 ResNet 在研究界的不斷普及,關於其架構的研究也在不斷深入。本節首先介紹幾種基於 ResNet 的新架構,然後介紹一篇論文,從 ResNet 作為小型網絡集合的角度進行解讀。

ResNeXt

Xie et al. [8] 提出 ResNet 的一種變體 ResNeXt,它具備以下構建塊:

左:[2] 中 ResNet 的構建塊;右:ResNeXt 的構建塊,基數=32

ResNext 看起來和 [4] 中的 Inception 模塊非常相似,它們都遵循了「分割-轉換-合併」的範式。不過在 ResNext 中,不同路徑的輸出通過相加合併,而在 [4] 中它們是深度級聯(depth concatenated)的。另外一個區別是,[4] 中的每一個路徑互不相同(1x1、3x3 和 5x5 卷積),而在 ResNeXt 架構中,所有的路徑都遵循相同的拓撲結構。

作者在論文中引入了一個叫作「基數」(cardinality)的超參數,指獨立路徑的數量,這提供了一種調整模型容量的新思路。實驗表明,通過擴大基數值(而不是深度或寬度),準確率得到了高效提升。作者表示,與 Inception 相比,這個全新的架構更容易適應新的數據集或任務,因為它只有一個簡單的範式和一個需要調整的超參數,而 Inception 需要調整很多超參數(比如每個路徑的卷積層內核大小)。

這個全新的結構有三種等價形式:

在實際操作中,「分割-變換-合併」範式通常通過「逐點分組卷積層」來完成,這個卷積層將輸入的特徵映射分成幾組,並分別執行正常的卷積操作,其輸出被深度級聯,然後饋送到一個 1x1 卷積層中。

密集連接卷積神經網絡

Huang 等人在論文 [9] 中提出一種新架構 DenseNet,進一步利用快捷連接,將所有層直接連接在一起。在這種新型架構中,每層的輸入由所有之前層的特徵映射組成,其輸出將傳輸給每個後續層。這些特徵映射通過深度級聯聚合。

除了解決梯度消失問題,[8] 的作者稱這個架構還支持特徵重用,使得網絡具備更高的參數效率。一個簡單的解釋是,在論文 [2] 和論文 [7] 中,恆等映射的輸出被添加到下一個模塊,如果兩個層的特徵映射有著非常不同的分布,那麼這可能會阻礙信息流。因此,級聯特徵映射可以保留所有特徵映射並增加輸出的方差,從而促進特徵重用。

遵循該範式,我們知道第 l 層將具有 k *(l-1)+ k_0 個輸入特徵映射,其中 k_0 是輸入圖像的通道數目。作者使用一個叫作「增長率」的超參數 (k) 防止網絡過寬,他們還用了一個 1*1 的卷積瓶頸層,在昂貴的 3*3 卷積前減少特徵映射的數量。整體架構如下表所示:

用於 ImageNet 的 DenseNet 架構

深度隨機的深度網絡

儘管 ResNet 的強大性能在很多應用中已經得到了證實,但它存在一個顯著缺點:深層網絡通常需要進行數周的訓練時間。因此,把它應用在實際場景的成本非常高。為了解決這個問題,G. Huang 等作者在論文 [10] 中引入了一種反直覺的方法,即在訓練過程中隨機丟棄一些層,測試中使用完整的網絡.

作者使用殘差塊作為他們網絡的構建塊。因此在訓練期間,當特定的殘差塊被啟用,它的輸入就會同時流經恆等快捷連接和權重層;否則,就只流過恆等快捷連接。訓練時,每層都有一個「生存概率」,每層都有可能被隨機丟棄。在測試時間內,所有的塊都保持被激活狀態,並根據其生存概率進行重新校準。

從形式上來看,H_l 是第 l 個殘差塊的輸出結果,f_l 是由第 l 個殘差塊的加權映射所決定的映射,b_l 是一個伯努利隨機變量(用 1 或 0 反映該塊是否被激活)。在訓練中:

當 b_l=1 時,該塊為正常的殘差塊;當 b_l=0 時,上述公式為:

既然我們已經知道了 H_(l-1) 是 ReLU 的輸出,而且這個輸出結果已經是非負的,所以上述方程可簡化為將輸入傳遞到下一層的 identity 層:

令 p_l 表示是第 l 層在訓練中的生存概率,在測試過程中,我們得到:

作者將線性衰減規律應用於每一層的生存概率,他們表示,由於較早的層提取的低級特徵會被後面的層使用,所以不應頻繁丟棄較早的層。這樣,規則就變成:

其中 L 表示塊的總數,因此 p_L 就是最後一個殘差塊的生存概率,在整個實驗中 p_L 恆為 0.5。請注意,在該設置中,輸入被視為第一層 (l=0),所以第一層永遠不會被丟棄。隨機深度訓練的整體框架如下圖所示:

訓練過程中,每一層都有一個生存概率

與 Dropout [11] 類似,訓練隨機深度的深度網絡可被視為訓練許多較小 ResNet 的集合。不同之處在於,上述方法隨機丟棄一個層,而 Dropout 在訓練中只丟棄一層中的部分隱藏單元。

實驗表明,同樣是訓練一個 110 層的 ResNet,隨機深度訓練出的網絡比固定深度的性能要好,同時大大減少了訓練時間。這意味著 ResNet 中的一些層(路徑)可能是冗餘的。

作為小型網絡集合的 ResNet

[10] 提出一種反直覺的方法,即在訓練中隨機丟棄網絡層,並在測試中使用完整的網絡。[14] 介紹了一種更加反直覺的方法:我們實際上可以刪除已訓練 ResNet 的部分層,但仍然保持相對不錯的性能。[14] 還用同樣的方式移除 VGG 網絡的部分層,其性能顯著降低,這使得 ResNet 架構更加有趣。

[14] 首先介紹了一個 ResNet 的分解圖來使討論更加清晰。在我們展開網絡架構之後,很明顯發現,一個有著 i 個殘差塊的 ResNet 架構有 2**i 個不同路徑(因為每個殘差塊提供兩個獨立路徑)。

根據上述發現,顯然移除 ResNet 架構中的部分層對其性能影響不大,因為架構具備許多獨立有效的路徑,在移除了部分層之後大部分路徑仍然保持完整無損。相反,VGG 網絡只有一條有效路徑,因此移除一個層會對該層的唯一路徑產生影響。(如 [14] 中的實驗所揭示的。)

作者的另一個實驗表明,ResNet 中不同路徑的集合有類似集成的行為。他們在測試時刪除不同數量的層,測試網絡性能與刪除層的數量是否平滑相關。結果表明,網絡行為確實類似集成,如下圖所示:

當被刪除的層數增加時,誤差值隨之增長

最終,作者研究了 ResNet 中路徑的特徵:

很明顯,路徑的可能長度分布遵循二項分布,如下圖 (a) 所示。大多數路徑流經 19 到 35 個殘差塊。

為了研究路徑長度與經過路徑的梯度大小之間的關係,得到長度為 k 的路徑的梯度大小,作者首先向網絡輸入了一批數據,並隨機採樣 k 個殘差塊。當梯度被反向傳播時,它們在採樣殘差塊中僅通過權重層進行傳播。(b) 表明隨著路徑長度的增加,梯度大小迅速下降。

現在將每個路徑長度的頻率與其期望的梯度大小相乘,以了解每個長度的路徑在訓練中起到多大作用,如圖 (c) 所示。令人驚訝的是,大多數貢獻來自於長度為 9 到 18 的路徑,但它們只佔所有路徑的一小部分,如 (a) 所示。這是一個非常有趣的發現,它表明 ResNet 並沒有解決長路徑的梯度消失問題,而是通過縮短有效路徑的長度訓練非常深層的 ResNet 網絡。

結論

本文主要介紹了 ResNet 架構,簡要闡述了其近期成功的原因,並介紹了幾篇論文,它們敘述了一些有趣的 ResNet 變體,或提供了富有洞察力的解釋。希望這篇文章有助於大家理解這項開創性的工作。

本文所有的圖表均來自於參考文獻中的原始論文。

References:

[1]. A. Krizhevsky, I. Sutskever, and G. E. Hinton. Imagenet classification with deep convolutional neural networks. In Advances in neural information processing systems,pages1097–1105,2012.

[2]. K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. arXiv preprint arXiv:1512.03385,2015.

[3]. K. Simonyan and A. Zisserman. Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556,2014.

[4]. C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan, V. Vanhoucke, and A. Rabinovich. Going deeper with convolutions. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,pages 1–9,2015.

[5]. R. Srivastava, K. Greff and J. Schmidhuber. Training Very Deep Networks. arXiv preprint arXiv:1507.06228v2,2015.

[6]. S. Hochreiter and J. Schmidhuber. Long short-term memory. Neural Comput., 9(8):1735–1780, Nov. 1997.

[7]. K. He, X. Zhang, S. Ren, and J. Sun. Identity Mappings in Deep Residual Networks. arXiv preprint arXiv:1603.05027v3,2016.

[8]. S. Xie, R. Girshick, P. Dollar, Z. Tu and K. He. Aggregated Residual Transformations for Deep Neural Networks. arXiv preprint arXiv:1611.05431v1,2016.

[9]. G. Huang, Z. Liu, K. Q. Weinberger and L. Maaten. Densely Connected Convolutional Networks. arXiv:1608.06993v3,2016.

[10]. G. Huang, Y. Sun, Z. Liu, D. Sedra and K. Q. Weinberger. Deep Networks with Stochastic Depth. arXiv:1603.09382v3,2016.

[11]. N. Srivastava, G. Hinton, A. Krizhevsky, I. Sutskever and R. Salakhutdinov. Dropout: A Simple Way to Prevent Neural Networks from Overfitting. The Journal of Machine Learning Research 15(1) (2014) 1929–1958.

[12]. A. Veit, M. Wilber and S. Belongie. Residual Networks Behave Like Ensembles of Relatively Shallow Networks. arXiv:1605.06431v2,2016.

相關焦點

  • ResNet有多大威力?最近又有了哪些變體?一文弄清
    本文分為兩部分,第一部分我將為那些不熟悉ResNet的人提供一些相關的背景知識,第二部分我將回顧一些我最近讀過的關於ResNet架構的不同變體及其論文的相關闡述。 重新審視ResNet 根據泛逼近性原理(universal approximation theorem),我們知道,如果給定足夠的容量,一個具有單層的前饋網絡足以表示任何函數。
  • 一文看懂,變體/ASIN違規申訴不再難。
    02 變體/ASIN違規是怎麼回事?       ASIN是每個產品的身份證,變體是多個ASIN聚合在一起。因此ASIN違規是listing創建過程違反亞馬遜規定,變體違規是組合方式出現錯誤。兩者不是一回事。但是由於兩種問題經常交叉出現,出於習慣,我將它們放在一起。
  • 來聊聊ResNet及其變種
    四年過去,這一論文的被引量已超 40000 次.。我們知道,增加網絡深度後,網絡可以進行更加複雜的特徵提取,因此更深的模型可以取得更好的結果。但事實並非如此,人們發現隨著網絡深度的增加,模型精度並不總是提升,並且這個問題顯然不是由過擬合(overfitting)造成的,因為網絡加深後不僅測試誤差變高了,它的訓練誤差竟然也變高了。
  • 解讀「卍」(卐)字符及其不同變體的文化表徵意義
    人類諸文明創製了多種文化符號,怕些符號這些符號都各有深意,然而,就昭顯「和諧」精義而論,皆無出於「卍」(卐)字符及其不同變體之右者。而「十」和「卍」(卐)字符崇拜則是生命和祖先崇拜的靜態和動態表現形式,其寓意陰陽和諧、日月生輝和生命輪迴。其中,「卍」(卐)字符使用頻率最高。
  • 深度學習第19講:CNN經典論文研讀之殘差網絡ResNet及其keras實現
    個人公眾號:機器學習實驗室 (微信ID:louwill12)前文傳送門:深度學習筆記1:利用numpy從零搭建一個神經網絡深度學習筆記2:手寫一個單隱層的神經網絡深度學習筆記3:手動搭建深度神經網絡(DNN)深度學習筆記4:深度神經網絡的正則化深度學習筆記5:正則化與dropout
  • 亞馬遜變體怎麼玩?分享亞馬遜拆分/合併變體的科學玩法
    當賣家在亞馬遜上出售一個包含多個變體(如不同數量、尺寸、顏色或式樣)的產品時可能會疑惑:是應該使用不同的變體?還是應該單獨列出每一個?在亞馬遜上使用變體的優缺點是什麼?為此,本文將詳細回答這些問題,了解亞馬遜變體是如何運作的?
  • 【主觀題】心智技能的形成階段&簡述維納歸因理論及其教育意義
    簡述心智技能的形成階段1.原型定向。了解原型的活動結構,從而使主體明確活動的方向,知道該做哪些動作和怎樣去完成這些動作。簡述維納歸因理論及其教育意義1.歸因理論:美國心理學家維納把人經歷過的事情的成敗歸結為六種原因,即能力、努力程度、工作難度、運氣、身體狀況、外界環境;又把上述六項因素按各自的性質,分別歸入三個維度:內部歸因和外部歸因、
  • LabVIEW編程技巧:功能強大的變體數據類型用法
    LabVIEW提供了一組函數用於操作變體數據,其位於函數面板的「編程」-->「簇、類與變體」-->「變體」子面板中,主要包括了下面幾個函數: 在上面函數中,使用「轉換為變體」和「變體至數據轉換」可以使LabVIEW常規數據與變體之間進行相互轉換。
  • VGGNet、ResNet、Inception和Xception圖像分類及對比
    classify_image("image/parrot.jpg","resnet")1.macaw:97.93%2.peacock:0.86%3.lorikeet:0.23%4.jacamar:0.12%
  • 「模型解讀」resnet中的殘差連接,你確定真的看懂了?
    如下圖上面是來自於resnet【1】的skip block的示意圖。我們可以使用一個非線性變化函數來描述一個網絡的輸入輸出,即輸入為X,輸出為F(x),F通常包括了卷積,激活等操作。當然不是,傳統的神經網絡中早就有這個概念,文【2】中則明確提出了殘差的結構,這是來自於LSTM的控制門的思想。y = H(x,WH)T(x,WT) + X(1- T(x,WT))可以看出,當T(x,WT) = 0,y=x,當T(x,WT) = 1,y= H(x,WH) 。關於LSTM相關的知識,大家可以去其他地方補。
  • 西方人名的各種來源及變體
    隨著基督教的傳播,這一名字已經成為基督教世界最為常見的男名。使用此名的著名人士不勝枚舉,而這一名字的變體也五花八門,僅英語中就有Jack、Jackie、Johnny等。之所以成為最常見的名字之一是因為耶經新約裡面的兩個聖約翰,一個是耶穌基督的預言者,一個是書寫福音啟示的使徒約翰。
  • ResNet——CNN經典網絡模型詳解(pytorch實現)
    2、ResNet詳解在ResNet網絡中有如下幾個亮點:提出residual結構(殘差結構),並搭建超深的網絡結構(突破1000層)使用Batch Normalization加速訓練(丟棄dropout)在ResNet網絡提出之前,傳統的卷積神經網絡都是通過將一系列卷積層與下採樣層進行堆疊得到的。但是當堆疊到一定網絡深度時,就會出現兩個問題。
  • 亞馬遜變體合併/拆分教程:如何將單獨Listing合併為父子變體?
    變體的拆分時機需要結合我們的推廣目的,橫向和縱向觀察各個sku點擊率和轉化率指標。下面請看變體操作的具體方法,希望對大家有所幫助。另外變體功能,請勿濫用,否則會被亞馬遜警告甚至關店。 一. 為什麼要創建變體 1.
  • 重讀經典:完全解析特徵學習大殺器ResNet
    補0.方案二:增加一個網絡層(參數為 resnet實現了在沒有增加任何參數的情況下,獲得了更低error rate,網絡更加高效。從plain/residual 18-layers的比較來看,兩者的error rate差不多,但是ResNet卻能夠收斂得更快。
  • 十屆全國人大及其常委會一年來立法工作簡述
    新華網北京3月11日電 十屆全國人大及其常委會一年來立法工作簡述全國人大常委會法制工作委員會    2006年是全面貫徹落實科學發展觀,加快構建社會主義和諧社會的重要一年,是十屆全國人大及其常委會立法工作取得新的重大進展的一年。
  • 變體造句和解釋_變體的例句有哪些 - 小孩子點讀
    變體(biàn tǐ)。因外力作用改變原有體型。變異的載體。變體參考例句:1、從轉基因水稻「克螟稻」中獲得了一個矮稈突變體。2、旋轉加工又稱為旋床,是一種十分流行的旋轉變體。3、河口英語是英語的一種變體,介於標準音和倫敦音之間。
  • 如果我們想要更好的目標分割,我們最好使用resnet-50的網絡結構
    最後經過一個residualnetwork卷積-池化層就產生一個文字框架(基於不同數據集的使用):使用fasterr-cnn和resnet的文字檢測和分割(最後部分全連接)圖像預處理經過上面的方法,基本已經看到結果了。但是,如果我們想要更好的目標分割,我們需要使用resnet-50的網絡結構。我們還可以增加一些尺度不同的錨框(使用全連接層),以獲得更好的精度,但是這個仍然是在全連接層中做的。
  • 理解並實現 ResNet(Keras)
    ResNet in Keras作者 | Priya Dwivedi @ Deep Learning Analytics翻譯 | linlh、通夜 編輯 | 鄧普斯傑弗、Pita原文連結:https://towardsdatascience.com/understanding-and-coding-a-resnet-in-keras
  • 亞馬遜如何用表格將單獨商品合併成父子變體?-雨果網
    亞馬遜上發布了一個產品,銷售一段時間後有了其它顏色,這時想要同時銷售多種顏色,這種情況下如何做父子變體呢? Tips:將獨立商品合併成父子變體,使所有商品在同一個detail page 頁面顯示。 父子變體部分填寫,如下截圖: 注意:父商品不寫:Parent SKU Relationship Type Color Size 或者其他變體主題
  • 一文了解新型結構陶瓷材料及其應用
    功能陶瓷主要基於材料的特殊功能,具有電氣性能、磁性、生物特性、熱敏性和光學特性等特點,主要包括絕緣和介質陶瓷、鐵電陶瓷、壓電陶瓷、半導體及其敏感陶瓷等;結構陶瓷主要基於材料的力學和結構用途,具有高強度、高硬度、耐高溫、耐腐蝕、抗氧化等特點,主要包括氧化物陶瓷、氮化物陶瓷、碳化物陶瓷、硼化物陶瓷等。