┊文章閱讀:次
摘要:本文主要介紹了 ResNet 架構(gòu),簡要闡述了其近期成功的原因,并介紹了一些有趣的 ResNet 變體。
在 AlexNet [1] 取得 LSVRC 2012 分類競賽冠軍之后,深度殘差網(wǎng)絡(luò)(Residual Network, 下文簡寫為 ResNet)[2] 可以說是過去幾年中計(jì)算機(jī)視覺和深度學(xué)習(xí)領(lǐng)域最具開創(chuàng)性的工作。ResNet 使訓(xùn)練數(shù)百甚至數(shù)千層成為可能,且在這種情況下仍能展現(xiàn)出優(yōu)越的性能。
因其強(qiáng)大的表征能力,除圖像分類以外,包括目標(biāo)檢測(cè)和人臉識(shí)別在內(nèi)的許多計(jì)算機(jī)視覺應(yīng)用都得到了性能提升。
自從 2015 年 ResNet 讓人們刮目相看,研究界的許多人在深入探索所其成功的秘密,許多文獻(xiàn)中對(duì)該模型做了一些改進(jìn)。本文分為兩部分,第一部分為不熟悉 ResNet 的人提供一些背景知識(shí),第二部分將介紹我最近閱讀的一些論文,關(guān)于 ResNet 的不同變體和對(duì) ResNet 架構(gòu)的理解。
重新審視 ResNet
根據(jù)泛逼近定理(universal approximation theorem),只要給定足夠的容量,單層的前饋網(wǎng)絡(luò)也足以表示任何函數(shù)。但是,該層可能非常龐大,網(wǎng)絡(luò)和數(shù)據(jù)易出現(xiàn)過擬合。因此,研究界普遍認(rèn)為網(wǎng)絡(luò)架構(gòu)需要更多層。
自 AlexNet 以來,最先進(jìn)的 CNN 架構(gòu)已經(jīng)越來越深。AlexNet 只有 5 個(gè)卷積層,而之后的 VGG 網(wǎng)絡(luò) [3] 和 GoogleNet(代號(hào) Inception_v1)[4] 分別有 19 層和 22 層。
但是,網(wǎng)絡(luò)的深度提升不能通過層與層的簡單堆疊來實(shí)現(xiàn)。由于臭名昭著的梯度消失問題,深層網(wǎng)絡(luò)很難訓(xùn)練。因?yàn)樘荻确聪騻鞑サ角懊娴膶?,重?fù)相乘可能使梯度無窮小。結(jié)果就是,隨著網(wǎng)絡(luò)的層數(shù)更深,其性能趨于飽和,甚至開始迅速下降。
增加網(wǎng)絡(luò)深度導(dǎo)致性能下降
在 ResNet 出現(xiàn)之前有幾種方法來應(yīng)對(duì)梯度消失問題,例如 [4] 在中間層添加了一個(gè)輔助損失作為額外的監(jiān)督,但其中沒有一種方法真正解決了這個(gè)問題。
ResNet 的核心思想是引入一個(gè)所謂的「恒等快捷連接」(identity shortcut connection),直接跳過一個(gè)或多個(gè)層,如下圖所示:
殘差塊
ResNet 架構(gòu)
[2] 的作者認(rèn)為,堆疊層不應(yīng)降低網(wǎng)絡(luò)性能,因?yàn)槲覀兛梢院唵蔚卦诋?dāng)前網(wǎng)絡(luò)上堆疊恒等映射(該層不做任何事情),得到的架構(gòu)將執(zhí)行相同的操作。這表明較深的模型所產(chǎn)生的訓(xùn)練誤差不應(yīng)該比較淺的模型高。他們假設(shè)讓堆疊層適應(yīng)殘差映射比使它們直接適應(yīng)所需的底層映射要容易一些。上圖中的殘差塊明確表明,它可以做到這一點(diǎn)。
事實(shí)上,ResNet 并不是第一個(gè)利用快捷連接的模型,Highway Networks [5] 就引入了門控快捷連接。這些參數(shù)化的門控制流經(jīng)捷徑(shortcut)的信息量。類似的想法可以在長短期記憶網(wǎng)絡(luò)(LSTM)[6] 單元中找到,它使用參數(shù)化的遺忘門控制流向下一個(gè)時(shí)間步的信息量。ResNet 可以被認(rèn)為是 Highway Network 的一種特殊情況。
然而,實(shí)驗(yàn)結(jié)果表明 Highway Network 的性能并不比 ResNet 好,這有點(diǎn)奇怪。Highway Network 的解空間包含 ResNet,因此它的性能至少應(yīng)該和 ResNet 一樣好。這表明,保持這些「梯度高速路」(gradient highway)的暢通比獲取更大的解空間更為重要。
按照這種思路,[2] 的作者改進(jìn)了殘差塊,并提出了一種殘差塊的預(yù)激活變體 [7],梯度可以在該模型中暢通無阻地通過快速連接到達(dá)之前的任意一層。事實(shí)上,使用 [2] 中的原始?xì)埐顗K訓(xùn)練一個(gè) 1202 層的 ResNet,其性能比 110 層的模型要差。
殘差塊的變體
[7] 的作者在其論文中通過實(shí)驗(yàn)表明,他們可以訓(xùn)練出 1001 層的深度 ResNet,且性能超越較淺層的模型。他們的訓(xùn)練成果卓有成效,因而 ResNet 迅速成為多種計(jì)算機(jī)視覺任務(wù)中最流行的網(wǎng)絡(luò)架構(gòu)之一。
ResNet 的最新變體以及解讀
隨著 ResNet 在研究界的不斷普及,關(guān)于其架構(gòu)的研究也在不斷深入。本節(jié)首先介紹幾種基于 ResNet 的新架構(gòu),然后介紹一篇論文,從 ResNet 作為小型網(wǎng)絡(luò)集合的角度進(jìn)行解讀。
ResNeXt
Xie et al. [8] 提出 ResNet 的一種變體 ResNeXt,它具備以下構(gòu)建塊:
左:[2] 中 ResNet 的構(gòu)建塊;右:ResNeXt 的構(gòu)建塊,基數(shù)=32
ResNext 看起來和 [4] 中的 Inception 模塊非常相似,它們都遵循了「分割-轉(zhuǎn)換-合并」的范式。不過在 ResNext 中,不同路徑的輸出通過相加合并,而在 [4] 中它們是深度級(jí)聯(lián)(depth concatenated)的。另外一個(gè)區(qū)別是,[4] 中的每一個(gè)路徑互不相同(1x1、3x3 和 5x5 卷積),而在 ResNeXt 架構(gòu)中,所有的路徑都遵循相同的拓?fù)浣Y(jié)構(gòu)。
作者在論文中引入了一個(gè)叫作「基數(shù)」(cardinality)的超參數(shù),指獨(dú)立路徑的數(shù)量,這提供了一種調(diào)整模型容量的新思路。實(shí)驗(yàn)表明,通過擴(kuò)大基數(shù)值(而不是深度或?qū)挾龋?,?zhǔn)確率得到了高效提升。作者表示,與 Inception 相比,這個(gè)全新的架構(gòu)更容易適應(yīng)新的數(shù)據(jù)集或任務(wù),因?yàn)樗挥幸粋€(gè)簡單的范式和一個(gè)需要調(diào)整的超參數(shù),而 Inception 需要調(diào)整很多超參數(shù)(比如每個(gè)路徑的卷積層內(nèi)核大?。?/span>
這個(gè)全新的結(jié)構(gòu)有三種等價(jià)形式:
在實(shí)際操作中,「分割-變換-合并」范式通常通過「逐點(diǎn)分組卷積層」來完成,這個(gè)卷積層將輸入的特征映射分成幾組,并分別執(zhí)行正常的卷積操作,其輸出被深度級(jí)聯(lián),然后饋送到一個(gè) 1x1 卷積層中。
密集連接卷積神經(jīng)網(wǎng)絡(luò)
Huang 等人在論文 [9] 中提出一種新架構(gòu) DenseNet,進(jìn)一步利用快捷連接,將所有層直接連接在一起。在這種新型架構(gòu)中,每層的輸入由所有之前層的特征映射組成,其輸出將傳輸給每個(gè)后續(xù)層。這些特征映射通過深度級(jí)聯(lián)聚合。
除了解決梯度消失問題,[8] 的作者稱這個(gè)架構(gòu)還支持特征重用,使得網(wǎng)絡(luò)具備更高的參數(shù)效率。一個(gè)簡單的解釋是,在論文 [2] 和論文 [7] 中,恒等映射的輸出被添加到下一個(gè)模塊,如果兩個(gè)層的特征映射有著非常不同的分布,那么這可能會(huì)阻礙信息流。因此,級(jí)聯(lián)特征映射可以保留所有特征映射并增加輸出的方差,從而促進(jìn)特征重用。
遵循該范式,我們知道第 l 層將具有 k *(l-1)+ k_0 個(gè)輸入特征映射,其中 k_0 是輸入圖像的通道數(shù)目。作者使用一個(gè)叫作「增長率」的超參數(shù) (k) 防止網(wǎng)絡(luò)過寬,他們還用了一個(gè) 1*1 的卷積瓶頸層,在昂貴的 3*3 卷積前減少特征映射的數(shù)量。整體架構(gòu)如下表所示:
用于 ImageNet 的 DenseNet 架構(gòu)
深度隨機(jī)的深度網(wǎng)絡(luò)
盡管 ResNet 的強(qiáng)大性能在很多應(yīng)用中已經(jīng)得到了證實(shí),但它存在一個(gè)顯著缺點(diǎn):深層網(wǎng)絡(luò)通常需要進(jìn)行數(shù)周的訓(xùn)練時(shí)間。因此,把它應(yīng)用在實(shí)際場景的成本非常高。為了解決這個(gè)問題,G. Huang 等作者在論文 [10] 中引入了一種反直覺的方法,即在訓(xùn)練過程中隨機(jī)丟棄一些層,測(cè)試中使用完整的網(wǎng)絡(luò)。
作者使用殘差塊作為他們網(wǎng)絡(luò)的構(gòu)建塊。因此在訓(xùn)練期間,當(dāng)特定的殘差塊被啟用,它的輸入就會(huì)同時(shí)流經(jīng)恒等快捷連接和權(quán)重層;否則,就只流過恒等快捷連接。訓(xùn)練時(shí),每層都有一個(gè)「生存概率」,每層都有可能被隨機(jī)丟棄。在測(cè)試時(shí)間內(nèi),所有的塊都保持被激活狀態(tài),并根據(jù)其生存概率進(jìn)行重新校準(zhǔn)。
從形式上來看,H_l 是第 l 個(gè)殘差塊的輸出結(jié)果,f_l 是由第 l 個(gè)殘差塊的加權(quán)映射所決定的映射,b_l 是一個(gè)伯努利隨機(jī)變量(用 1 或 0 反映該塊是否被激活)。在訓(xùn)練中:
當(dāng) b_l=1 時(shí),該塊為正常的殘差塊;當(dāng) b_l=0 時(shí),上述公式為:
既然我們已經(jīng)知道了 H_(l-1) 是 ReLU 的輸出,而且這個(gè)輸出結(jié)果已經(jīng)是非負(fù)的,所以上述方程可簡化為將輸入傳遞到下一層的 identity 層:
令 p_l 表示是第 l 層在訓(xùn)練中的生存概率,在測(cè)試過程中,我們得到:
作者將線性衰減規(guī)律應(yīng)用于每一層的生存概率,他們表示,由于較早的層提取的低級(jí)特征會(huì)被后面的層使用,所以不應(yīng)頻繁丟棄較早的層。這樣,規(guī)則就變成:
其中 L 表示塊的總數(shù),因此 p_L 就是最后一個(gè)殘差塊的生存概率,在整個(gè)實(shí)驗(yàn)中 p_L 恒為 0.5。請(qǐng)注意,在該設(shè)置中,輸入被視為第一層 (l=0),所以第一層永遠(yuǎn)不會(huì)被丟棄。隨機(jī)深度訓(xùn)練的整體框架如下圖所示:
訓(xùn)練過程中,每一層都有一個(gè)生存概率
與 Dropout [11] 類似,訓(xùn)練隨機(jī)深度的深度網(wǎng)絡(luò)可被視為訓(xùn)練許多較小 ResNet 的集合。不同之處在于,上述方法隨機(jī)丟棄一個(gè)層,而 Dropout 在訓(xùn)練中只丟棄一層中的部分隱藏單元。
實(shí)驗(yàn)表明,同樣是訓(xùn)練一個(gè) 110 層的 ResNet,隨機(jī)深度訓(xùn)練出的網(wǎng)絡(luò)比固定深度的性能要好,同時(shí)大大減少了訓(xùn)練時(shí)間。這意味著 ResNet 中的一些層(路徑)可能是冗余的。
作為小型網(wǎng)絡(luò)集合的 ResNet
[10] 提出一種反直覺的方法,即在訓(xùn)練中隨機(jī)丟棄網(wǎng)絡(luò)層,并在測(cè)試中使用完整的網(wǎng)絡(luò)。[14] 介紹了一種更加反直覺的方法:我們實(shí)際上可以刪除已訓(xùn)練 ResNet 的部分層,但仍然保持相對(duì)不錯(cuò)的性能。[14] 還用同樣的方式移除 VGG 網(wǎng)絡(luò)的部分層,其性能顯著降低,這使得 ResNet 架構(gòu)更加有趣。
[14] 首先介紹了一個(gè) ResNet 的分解圖來使討論更加清晰。在我們展開網(wǎng)絡(luò)架構(gòu)之后,很明顯發(fā)現(xiàn),一個(gè)有著 i 個(gè)殘差塊的 ResNet 架構(gòu)有 2**i 個(gè)不同路徑(因?yàn)槊總€(gè)殘差塊提供兩個(gè)獨(dú)立路徑)。
根據(jù)上述發(fā)現(xiàn),顯然移除 ResNet 架構(gòu)中的部分層對(duì)其性能影響不大,因?yàn)榧軜?gòu)具備許多獨(dú)立有效的路徑,在移除了部分層之后大部分路徑仍然保持完整無損。相反,VGG 網(wǎng)絡(luò)只有一條有效路徑,因此移除一個(gè)層會(huì)對(duì)該層的唯一路徑產(chǎn)生影響。(如 [14] 中的實(shí)驗(yàn)所揭示的。)
作者的另一個(gè)實(shí)驗(yàn)表明,ResNet 中不同路徑的集合有類似集成的行為。他們?cè)跍y(cè)試時(shí)刪除不同數(shù)量的層,測(cè)試網(wǎng)絡(luò)性能與刪除層的數(shù)量是否平滑相關(guān)。結(jié)果表明,網(wǎng)絡(luò)行為確實(shí)類似集成,如下圖所示:
當(dāng)被刪除的層數(shù)增加時(shí),誤差值隨之增長
最終,作者研究了 ResNet 中路徑的特征:
很明顯,路徑的可能長度分布遵循二項(xiàng)分布,如下圖 (a) 所示。大多數(shù)路徑流經(jīng) 19 到 35 個(gè)殘差塊。
為了研究路徑長度與經(jīng)過路徑的梯度大小之間的關(guān)系,得到長度為 k 的路徑的梯度大小,作者首先向網(wǎng)絡(luò)輸入了一批數(shù)據(jù),并隨機(jī)采樣 k 個(gè)殘差塊。當(dāng)梯度被反向傳播時(shí),它們?cè)诓蓸託埐顗K中僅通過權(quán)重層進(jìn)行傳播。(b) 表明隨著路徑長度的增加,梯度大小迅速下降。
現(xiàn)在將每個(gè)路徑長度的頻率與其期望的梯度大小相乘,以了解每個(gè)長度的路徑在訓(xùn)練中起到多大作用,如圖 (c) 所示。令人驚訝的是,大多數(shù)貢獻(xiàn)來自于長度為 9 到 18 的路徑,但它們只占所有路徑的一小部分,如 (a) 所示。這是一個(gè)非常有趣的發(fā)現(xiàn),它表明 ResNet 并沒有解決長路徑的梯度消失問題,而是通過縮短有效路徑的長度訓(xùn)練非常深層的 ResNet 網(wǎng)絡(luò)。
結(jié)論
本文主要介紹了 ResNet 架構(gòu),簡要闡述了其近期成功的原因,并介紹了幾篇論文,它們敘述了一些有趣的 ResNet 變體,或提供了富有洞察力的解釋。希望這篇文章有助于大家理解這項(xiàng)開創(chuàng)性的工作。
本文所有的圖表均來自于參考文獻(xiàn)中的原始論文。
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.
Copyright @ 2013-2018 中國福建網(wǎng) 版權(quán)所有
聯(lián)系我們
免責(zé)聲明:本站為非營利性網(wǎng)站,部分圖片或文章來源于互聯(lián)網(wǎng)如果無意中對(duì)您的權(quán)益構(gòu)成了侵犯,我們深表歉意,請(qǐng)您聯(lián)系,我們立即刪除。