ResNet有多大威力?最近又有了哪些變體?一文弄清
GIF/1.7M
原文來源:Medium
作者:Vincent Fung
「機器人圈」編譯:嗯~阿童木呀、多啦A亮
自從AlexNet在LSVRC2012分類比賽中取得勝利之後,深度殘差網路(deep Residual Network)可以說成為過去幾年中,在計算機視覺、深度學習社區領域中最具突破性的成果了。ResNet可以實現高達數百,甚至數千個層的訓練,且仍能獲得超贊的性能。
得益於其強大的表徵能力,許多計算機視覺應用在圖像分類以外領域的性能得到了提升,如對象檢測和人臉識別。
自從2015年ResNet進入人們的視線,並引發人們思考之後,許多研究界人員已經開始研究其成功的秘訣,並在架構中納入了許多新的改進。本文分為兩部分,第一部分我將為那些不熟悉ResNet的人提供一些相關的背景知識,第二部分我將回顧一些我最近讀過的關於ResNet架構的不同變體及其論文的相關闡述。
重新審視ResNet
根據泛逼近性原理(universal approximation theorem),我們知道,如果給定足夠的容量,一個具有單層的前饋網路足以表示任何函數。然而,該層可能是巨大的,且網路可能容易過度擬合數據。因此,研究界有一個共同的趨勢,即我們的網路架構需要更深。
自從AlexNet投入使用以來,最先進的卷積神經網路(CNN)架構越來越深。雖然AlexNet只有5層卷積層,但VGG網路和GoogleNet(代號也為Inception_v1)分別有19層和22層。
但是,如果只是通過簡單地將層疊加在一起,增加網路深度並不會起到什麼作用。由於有著臭名昭著的梯度消失問題,深層網路是難以進行訓練的,因為梯度反向傳播到前層,重複乘法可能使梯度無窮小,而造成的結果就是,隨著網路的深層,其性能趨於飽和,或者甚至開始迅速退化。
增加網路深度導致性能下降
其實早在ResNet之前,已經有過好幾種方法來處理梯度消失問題,例如,在中間層增加輔助損失作為額外的監督,但遺憾的是,似乎沒有一個方法可以真正解決這個問題。
ResNet的核心思想是引入所謂的「身份近路連接(identity shortcut connection)」,可以跳過一層或多層,如下圖所示:
殘差塊
《用於圖像識別的深度殘差學習》(arXiv:1512.03385,2015)的作者認為,堆積層不應該降低網路性能,因為我們可以簡單地在當前網路上堆積身份映射(層不做任何事情),並且所得到的架構將執行相同的操作。這表明,較深的模型所產生的訓練誤差不應該比較淺的模型高。他們假設讓堆積層適應殘差映射比使它們直接適應所需的底層映射要容易得多。上圖的殘差塊可以明確地使它做到這一點。
ResNet架構
事實上,ResNet並不是第一個利用近路連接、Highway Networks引入門控近路連接的。這些參數化門控制允許多少信息流過近路(shortcut)。類似的想法可以在長短期記憶網路(LSTM)單元中找到,其中存在參數化的忘記門,其控制多少信息將流向下一個時間步。因此,ResNet可以被認為是Highway Networks的一種特殊情況。
然而,實驗表明,Highway Networks的性能並不如ResNet,因為Highway Networks的解決方案空間包含ResNet,因此它應該至少表現得像ResNet一樣好。這就表明,保持這些「梯度公路」乾淨簡潔比獲取更大的解決方案空間更為重要。
照著這種直覺,《用於圖像識別的深度殘差學習》的作者改進了殘差塊,並提出了一個殘差塊的預激活變體,其中梯度可以暢通無阻地通過快速連接到任何其他的前層。事實上,在《用於圖像識別的深度殘差學習》中表明,使用原始的殘差塊,訓練1202層ResNet所展示的性能比其訓練110層對等物要差得多。
殘差塊的變體
《深度殘差網路中的身份映射》的作者通過實驗證明,他們現在可以訓練一種1001層的深度ResNet,以超越其較淺層的對手。 由於其令人信服的結果,ResNet迅速成為各種計算機視覺任務中最流行的架構之一。
ResNet的最新變體和闡述
隨著ResNet在研究界越來越受歡迎,其架構獲得大量研究。在本節中,我將首先介紹幾種基於ResNet的新架構,然後介紹一篇論文,闡述一下將ResNet作為許多小型網路的集合的緣由。
ResNeXt
S. Xie,R. Girshick,P. Dollar,Z. Tu和 K. He在《深度神經網路的聚集殘差變換》中提出了一個代號為ResNeXt的ResNet變體,它具有以下構建塊:
左:《用於圖像識別的深度殘差學習》中所提及的構建塊,右圖: ResNeXt構建塊 基數=32
這可能看起來很熟悉,因為它非常類似於《IEEE計算機視覺與模式識別會議論文集》中《Going deeper with convolutions》的Inception模塊,它們都遵循「拆分-轉換-合并」範式,除了在這個變體中,不同路徑的輸出通過將它們相加在一起而被合并,而在《Going deeper with convolutions》中它們是深度連接的。另一個區別是,在《Going deeper with convolutions》中,每個路徑彼此互不相同(1x1,3x3和5x5卷積),而在此架構中,所有路徑共享相同的拓撲。
作者介紹了一個稱為 「基數(cardinality)」的超參數——獨立路徑的數量,以提供調整模型容量的新方式。實驗表明,可以通過增加基數,而不是深度或寬度,來更加有效地獲得準確度。作者指出,與Inception相比,且只有一個超參數被調整,而Inception卻具有許多超參數(如每個路徑中卷積層內核大小)待調整。
這個新穎的構建塊有如下三種等效形式:
實際上,「分割-變換-合并」通常是通過點分組卷積層來完成的,它將其輸入分成特徵映射組,並分別執行正常卷積,其輸出被深度級聯,然後饋送到1x1卷積層。
Densely Connected CNN
Huang 等在《密集卷積網路》中提出了一種稱為DenseNet的新型架構,進一步利用近路連接的效果—將所有層直接互連在一起。在這種新穎的架構中,每層的輸入由所有較早層的特徵映射組成,其輸出傳遞給每個後續層。特徵映射與深度級聯聚合。
《深度神經網路的聚集殘差變換》的作者除了應對梯度消失問題外,還認為這種架構還鼓勵特徵重用,從而使得網路具有高度的參數效率。一個簡單的解釋是,在《用於圖像識別的深度殘差學習》和《深度殘差網路中的身份映射》中,身份映射的輸出被添加到下一個塊,如果兩層的特徵映射具有非常不同的分布,這可能會阻礙信息流。因此,級聯特徵映射可以保留所有特徵映射並增加輸出的方差,從而鼓勵特徵重用。
遵循這個範式,我們知道第l層將具有k *(l-1)+ k_0個輸入特徵映射,其中k_0是輸入圖像中的通道數。作者使用一個稱為增長率(k)的超參數,防止網路生長過寬,他們還使用1x1卷積瓶頸層,以減少昂貴的3x3卷積之前的特徵映射的數量。整體結構如下表所示:
ImageNet的DenseNet架構
具有隨機深度的深度網路
儘管ResNet在許多應用中已被證明很強大,但它的主要的缺點是,更深層的網路通常需要幾周的時間進行訓練,而這在實際應用中幾乎不可行。為了解決這個問題,G. Huang、Y. Sun、 Z. Liu、D. Sedra和K. Q. Weinberger引入了一種在訓練過程中隨機丟棄圖層的反直覺方法,同時使用完整的網路進行推理。
作者使用殘差塊作為其網路的構建塊,因此,在訓練期間,當特定殘差塊被啟用時,它的輸入在身份近路和權重層流動,否則,輸入只在身份近路流動。在訓練時間內,每層都有「生存概率」,隨機下降。在測試時間內,所有的塊都保持活動狀態,並在測試期間根據其生存概率進行重新校準。
形式上,設定H_l是第l個殘差塊的輸出,f_l是由第l塊的加權映射定義的映射,b_l是在訓練期間只有1或0(表示塊是否有效)的伯努利隨機變數:
當b_l = 1時,該塊成為正常的殘差塊,當b_l = 0時,上述公式為:
由於我們知道H_(l-1)是ReLU的輸出,它已經是非負的,所以上述方程減少到只將輸入傳遞到下一層的身份層:
令p_l是訓練期間l層的生存概率,在測試期間,我們有:
作者將線性衰減規則應用於每個層的生存概率,他們認為,由於前層提取將被稍後使用的低級特徵,因此不應太頻繁地丟棄,所以得到的規則變為:
其中L表示塊的總數,因此p_L是最後一個殘差塊的生存概率,並且在實驗中固定為0.5。 另請注意,在此設置中,輸入被視為第一層(l = 0),因此不會丟棄。隨機深度訓練的總體框架如下圖所示。
類似於Dropout,訓練具有隨機深度的深層網路可以被視為訓練許多較小ResNets的合集。不同之處在於,該方法隨機丟棄整個圖層,而Dropout在訓練期間僅將一部分隱藏單元下降。
實驗表明,訓練具有隨機深度的110層ResNet會比訓練恆定的110層ResNet得到更好的性能,同時大大減少了訓練時間。這表明ResNet中的一些層(路徑)可能是冗餘的。
ResNet作為小型網路的組合
《具有隨機深度的深度網路》提出了一種反直覺的方式,訓練一個非常深層的網路,通過在訓練期間隨機丟棄它的層,並在測試時間內使用完整的網路。Veit等人有一個更反直覺的發現:我們實際上可以刪除一些已訓練的ResNet的一些層,但仍然具有可比性能。這使得ResNet架構更加有趣,該論文亦降低了VGG網路的層,並大大降低了其性能。
該論文首先提供了ResNet的一個簡單的視圖,使事情更清晰。在我們展開網路架構之後,這是很顯而易見的,具有i個殘差塊的ResNet架構具有2 ** i個不同的路徑(因為每個殘差塊提供兩個獨立的路徑)。
鑒於上述發現,我們很容易發現為什麼在ResNet架構中刪除幾層,對於其性能影響不大——架構具有許多獨立的有效路徑,在我們刪除了幾層之後,它們大部分保持不變。相反,VGG網路只有一條有效的路徑,所以刪除一層是唯一的途徑。
作者還進行了實驗,表明ResNet中的路徑集合具有集合行為。他們是通過在測試時間刪除不同數量的層,然後查看網路的性能是否與已刪除層的數量平滑相關,這樣的方式做到的。結果表明,網路確實表現得像集合,如下圖所示:
最後,作者研究了ResNet中路徑的特點:
很明顯,所有可能的路徑長度的分布都遵循二項式分布,如(a)所示。大多數路徑經過19到35個殘差塊。
調查路徑長度與經過其的梯度大小之間的關係,同時獲得長度為k的路徑的梯度幅度,作者首先將一批數據饋送給網路,隨機抽取k個殘差塊。當反向傳播梯度時,它們僅傳播到採樣殘餘塊的權重層。(b)表明隨著路徑變長,梯度的大小迅速下降。
我們現在可以將每個路徑長度的頻率與其預期的梯度大小相乘,以了解每個長度的路徑對於訓練有多少幫助,如(c)所示。令人驚訝的是,大多數貢獻來自長度為9至18的路徑,但它們僅佔總路徑的一小部分,如(a)所示。這是一個非常有趣的發現,因為它表明ResNet並沒有解決長路徑上的梯度消失問題,而是通過縮短其有效路徑,ResNet實際上能夠實現訓練非常深度的網路。
結論
在本文中,我們重新回顧了ResNet架構,簡要介紹了其最新取得的成就。之後,我介紹了一些有趣的ResNet的變體的相關論文,同時給出了相關解釋。我希望這篇文章能夠幫助到你理解ResNet。
本文中的所有數字均摘自參考文獻中的原始文獻。
※無人駕駛目標檢測會遭到對抗樣本干擾?也許你的擔心是多餘的!
※伯克利與OpenAI通過最新「模仿學習」技術為機器人「賦能」
※智慧計算將對AI起到多大助力?
※萬字「全文」詳解谷歌神經網路機器翻譯NMT
※Chainer-GAN庫發布,實現多種GAN及特徵匹配去噪
TAG:機器人圈 |
※一文簡述ResNet及其多種變體
※一文看懂.NET的各種變體
※強拆變體,強刪review!亞馬遜小賣抬不起頭,大賣卻在增加?
※瑜伽鴿子式的5種變體,你能Hold住第幾個?
※硬體資訊:其實這是為了幫助AMD!Intel修復幽靈熔斷變體4性能將損失最多8%
※為什麼MobileNet及其變體如此之快?
※71大師神奇不在 NB多變體系碾壓Mineski
※Baby難道是「易變體」,換個髮型就像換了個人一樣
※魔法紙幣也變身,快回家找找看有沒有這樣的變體票!
※這項亞馬遜新政將導致銷量銳減?變體Review該何去何從...
※虛假殺毒軟體竊取設備存儲信息,竟是兩種 Android RAT 變體
※瑜伽斜板式高級變體,你能Hold住幾個?
※你不相信奇蹟?那麼你是一個突變體
※這 10 個瑜伽體式,竟可以這樣變體(Gif)
※聽說你瑜伽練了很久了,那這幾個鴿子式變體你能做到第幾個?
※淺析用於挖掘虛擬幣的惡意軟體變體CoinMiner-FOZU!
※Playarts改變體版本鐳射眼新品
※生完娃就不會痛經了?坐月子能改變體質?真相是這一個
※17種GAN變體的Keras實現請收好
※微軟和谷歌發現「Specter」漏洞新變體