殘差網絡(ResNet)深度解析:如何通過“殘差”改變一切?
在人工智能的發展歷程中,總有幾個里程碑式的突破推動整個領域向前邁進。
2015年,何愷明等人提出的ResNet(殘差網絡)無疑是這樣的一個里程碑。
它不僅以3.57%的top-5錯誤率奪得ImageNet2015分類任務冠軍。
圖片
更重要的是,它解決了一個困擾深度學習社區多年的根本性問題:深度神經網絡的退化問題。
今天,就讓我們深入解析ResNet的架構設計和核心原理,看看這個簡單而巧妙的想法如何改變了深度學習的發展軌跡。
背景與核心問題
為什么需要殘差網絡?
在ResNet出現之前,深度神經網絡(如VGG)面臨一個嚴峻的問題:深度退化問題(Degradation Problem)。
注意哦!不是梯度消失/爆炸!這個問題通過 Normalized Initialization(如Xavier)和 Batch Normalization 層已經得到了很大程度的緩解。
圖片
而是性能飽和甚至下降!實驗發現,隨著網絡層數的不斷增加(比如從20層增加到56層),模型的訓練誤差和測試誤差不降反升。
這非常違反直覺,因為更深的模型至少應該能做到和淺層模型一樣好(比如讓新增的層學習恒等映射,即輸出等于輸入),但事實并非如此。
這就引出了一個核心問題:對于傳統神經網絡網絡,其思路是通過堆疊非線性層,讓網絡自己去學習一個目標映射函數 H(x)。這是一件非常困難的事情。
2015年,微軟亞洲研究院的何愷明等人提出了一個看似簡單卻極其深刻的問題:如果深層網絡難以學習目標映射H(x),那么我們是否可以讓它學習另一個更容易優化的映射?
圖片
他們的答案是:不讓網絡直接學習,而是學習殘差函數。這樣,原始映射就變成了。
這一轉變的意義極其深遠:學習殘差比學習恒等映射要容易得多。如果當前的層已經是最優的,只需要將殘差推向0即可,而不需要改變已有的良好表示。
ResNet的核心原理

殘差塊的思想

這里:
- ?
?x??:塊的輸入。 - ?
?H(x)??:塊的期望輸出(即我們最終想得到的映射)。 - ?
?F(x)??:殘差函數,是塊中需要學習的部分。 - ?
?+ x??:通過一條殘差連接(Shortcut Connection) 或跳躍連接(Skip Connection) 實現。
殘差塊的結構
殘差塊是ResNet的基本組成單位,其設計簡潔而高效。一個標準的殘差塊包含兩條路徑:
- 主路徑:包含一系列卷積層、批歸一化層和激活函數,負責學習殘差F(x)
- 殘差連接:直接將輸入 傳遞到輸出端,與主路徑的輸出相加

這種設計帶來了三個關鍵優勢:

2.緩解梯度消失:在反向傳播時,梯度不僅需要通過帶有權重的層(主路徑)反向傳播,還可以通過殘差連接這條“高速公路”直接傳回更早的層。這有效地減輕了梯度在多層傳播中的衰減問題,使得極深網絡的訓練成為可能。
3.前向傳播的信息流:特征 可以無損地傳遞到更深的層,保留了底層的特征信息,使得網絡可以同時學習到低層和高層的特征。
傳統的網絡像一個需要自己一步步爬樓的普通人,而ResNet像一個有“電梯”(殘差連接)的樓。
圖片
你可以選擇爬樓梯(主路徑學習新東西),也可以選擇坐電梯直接到達某一層(保留原始信息)。
這使得“上樓”(加深網絡)變得輕松且高效。
3.ResNet網絡架構經典ResNet網絡架構詳解
ResNet有多種深度版本,如ResNet-18、34、50、101和152,其中的數字表示權重層的深度(不包括池化層和全連接層)。
圖片
這些網絡都基于殘差塊理念,但在具體設計上有所區別。
基本殘差塊設計
1. BasicBlock(用于較淺網絡如ResNet-18/34)
BasicBlock設計簡潔,包含兩個3x3卷積層。當輸入輸出維度相同時,快捷連接直接進行恒等映射;當維度不同時(如下采樣時),使用1x1卷積進行維度匹配。
圖片
2. Bottleneck(用于深層網絡如ResNet-50/101/152)
Bottleneck采用“瓶頸”設計減少計算量:先使用1x1卷積降維,然后用3x3卷積在低維空間處理,最后再用1x1卷積升維。這種設計在保持模型表達能力的同時顯著降低了計算復雜度。
整體架構(以ResNet-34為例)
ResNet的整體架構遵循了VGG的范式,即大量使用3x3卷積,并逐漸增加通道數、減小特征圖尺寸。
圖片
1. 初始卷積層:
- ?
?7x7卷積,64通道,stride=2?? - ?
?3x3最大池化,stride=2?? - 這一部分對輸入圖像進行初步的特征提取和下采樣。
2. 卷積階段(Conv2_x, Conv3_x, Conv4_x, Conv5_x):
- 每個階段由多個殘差塊堆疊而成。
- 在每個階段的第一個殘差塊中,會進行下采樣(通常通過stride=2的卷積實現),同時特征圖通道數會翻倍。
- 例如:
??Conv2_x??:輸出尺寸 56x56, 64通道,包含3個殘差塊。
??Conv3_x??:輸出尺寸 28x28,128通道,包含4個殘差塊。(注意:第一個塊會下采樣并增加通道數)
??Conv4_x??:輸出尺寸 14x14,256通道,包含6個殘差塊。
??Conv5_x??:輸出尺寸 7x7, 512通道,包含3個殘差塊。
3. 末端:
- 全局平均池化(Global Average Pooling):將7x7的特征圖直接平均池化成1x1,得到512維的向量。
- 全連接層:根據分類任務的類別數(如ImageNet是1000類)輸出最終的分類結果。
ResNet的成功激發了一系列基于快捷連接的架構創新:
- ResNeXt:引入“基數”概念,使用分組卷積增加網絡寬度而非深度,在相同參數量下獲得更好性能
- DenseNet:將ResNet的“加性”連接發展為“拼接性”連接,每一層接收前面所有層的輸出作為輸入,極大增強了特征復用能力
- Transformer中的殘差連接:ResNet的思想被廣泛應用于Transformer架構,編碼器和解碼器的每個子層都添加了殘差連接
結語
ResNet的故事告訴我們,有時候最突破性的創新不是增加復雜性,而是通過簡化問題來找到解決方案。
正如ResNet的創始人之一何愷明所說:“我們只是讓網絡更容易學習恒等映射。”這種化繁為簡的智慧,正是科學研究的精髓所在。
本文轉載自????Fairy Girl????,作者:Fairy Girl

















