文章目錄
- 前言
- 一、什么是ResNet網絡
- 二、傳統卷積神經網絡存在的問題
- 1、梯度消失和梯度爆炸
- 2、退化問題
- 三、如何解決問題
- 四、殘差結構
- 五、18層殘差網絡
- 1、解釋
- 2、隔層相加優點
- 3、隔層相加數值增大問題
- 六、18層殘差網絡以外的表格示例
- 七、BN層(Batch Normalization)
- 1、定義以及操作原理:
- 2、主要作用
- 總結
前言
在ResNet之前,VGG、AlexNet等模型通過增加網絡深度提升性能,但人們發現:當網絡層數超過20層后,模型的訓練誤差和測試誤差反而會不降反升。這一現象被稱為“網絡退化”(Degradation),并非由過擬合導致,而是因為深層網絡難以優化。
一、什么是ResNet網絡
- 2015年,微軟研究院的何愷明團隊提出了ResNet(Residual NeuralNetwork),這一模型以3.57%的Top-5錯誤率首次在ImageNet圖像識別競賽中超越人類水平,并成為深度學習歷史上的里程碑。ResNet的核心創新在于殘差學習(Residual Learning),通過引入“跳級連接”(Shortcut Connection)解決了深度網絡訓練中的梯度消失和網絡退化問題。
- ResNet網絡與傳統的神經網絡的區別在于其獨特的殘差結構和批次歸一化處理,而這也是其最大的兩個特點。
二、傳統卷積神經網絡存在的問題
- 卷積神經網絡都是通過卷積層和池化層的疊加組成的。
- 在實際的試驗中發現,隨著卷積層和池化層的疊加,學習效果不會逐漸變好,反而出現2個問題:
1、梯度消失和梯度爆炸
- 梯度消失:若每一層的誤差梯度小于1,反向傳播時,網絡越深,梯度越趨近于0
- 梯度爆炸:若每一層的誤差梯度大于1,反向傳播時,網絡越深,梯度越來越大
2、退化問題
- 上圖表示即為當網路是20層和56層時的錯誤率,可以發現層數越多反而錯誤率更高
三、如何解決問題
- 為了解決梯度消失或梯度爆炸問題,通過數據的預處理以及在網絡中使用 BN(Batch Normalization)層來解決。
- 為了解決深層網絡中的退化問題,可以人為地讓神經網絡某些層跳過下一層神經元的連接,隔層相連,弱化每層之間的強聯系。這種神經網絡被稱為 殘差網絡 (ResNets)。
四、殘差結構
-
殘差結構(Residual Block)是ResNet(殘差網絡)的核心組成部分,解決深層神經網絡訓練中的退化問題。
-
其主要特點是通過引入跳躍連接(SkipConnection)來實現殘差學習,允許網絡學習輸入和輸出之間的殘差(即差異),而不是直接學習從輸入到輸出的映射。
-
讓特征矩陣隔層相加,注意F(X)和X形狀要相同,
-
F(X)是經過兩次卷積層得到的結果,X是原始特征矩陣
-
所謂相加是特征矩陣相同位置上的數字進行相加。
-
相加之后的矩陣作為輸入,可以有效解決深層網絡退化問題,提高網絡的深度
五、18層殘差網絡
1、解釋
上圖為18層的卷積神經網絡,現傳入圖片,圖片格式為3 * 244 * 244,首先傳入到第一層卷積核,卷積核的大小為7 * 7,一共有64個小卷積核,移動步長為2,將圖片四周填充3層0值,將其處理完使圖片大小變為112 * 112,一共有64張,然后將這么多的特征圖進行最大池化,池化層大小為3 * 3,移動步長為2,填充1層,然后得到新的圖片格式為64 * 56 * 56,將這些特征圖再次傳入卷積神經網絡,不改變其大小,但是此時發生了改變,這64張大小為56*56的特征圖不僅傳入下列卷積層,同時又復制一份一樣的跳過下面的卷積層,然后再將經過兩層卷積層處理過的特征圖與沒有處理的特征圖相加得到新的特征圖,此時相加的為特征圖中每個像素點對應的數值,然后再一次進行剩余同樣的操作…最終對特征圖進行全局平均池化,即將每一張圖求一個平均值并輸出單個值,將這個值當做特征圖再次進行全連接,這個全連接有1000個神經元,即輸出1000個預測結果。
2、隔層相加優點
-
通過將特征圖的數值隔層相加,可以讓信息從一層直接傳遞到另一層,而不受梯度消失的影響。這樣可以使得網絡更容易進行優化和訓練,減少了優化問題的復雜性。同時,殘差結構還能夠有效地學習到殘差的信息,即網絡輸出與輸入之間的差異,從而更好地捕捉到數據中的細微變化和特征。
-
通過隔層相加的方式,殘差結構實現了"跳躍連接",使得信息可以直接從較淺的層次直達較深的層次,消除了信息的丟失和模糊化。這樣可以提高網絡的表達能力,更好地捕捉到輸入數據的變化特征,提高了網絡的性能和準確率。
3、隔層相加數值增大問題
-
在殘差結構中,特征圖的數值隔層相加是在兩個或多個層的特征圖上進行的。這些特征圖經過卷積、激活函數等操作后,通常會引入縮放因子(scale factor)或者使用卷積核尺寸為1的卷積層進行調整,以確保兩個特征圖的通道數相同。
-
此外,殘差結構中也會使用批歸一化(Batch Normalization, BN)層來進一步調整和穩定特征圖的數值。BN層通過對每個特征圖的通道進行歸一化,將其數值范圍限制在較小的范圍內,有助于避免數值的過大或過小。BN層還引入了可學習的參數,可以根據數據的分布調整特征圖的均值和方差,從而進一步提升網絡的性能和收斂速度。
六、18層殘差網絡以外的表格示例
- 18層,34層,50層,101層,152層,及其結構
- 每種結構及其對應的權重參數個數也在上圖表示為FLOPs
七、BN層(Batch Normalization)
1、定義以及操作原理:
- BN(BatchNormalization)層在深度學習中被廣泛應用,其主要作用是對神經網絡的輸入進行歸一化,以加速網絡的訓練并提高模型的魯棒性和泛化能力。
- 如上圖所示,對每個傳入的圖片進行歸一化后,將其傳入卷積神經層進行處理后得到特征圖,然后再對這個特征圖進行歸一化處理,處理完再次進入卷積層處理,輸出的特征圖再次進行歸一化。
2、主要作用
- 減輕內部協變量偏移:通過標準化每一層的輸入,使得其均值接近0,方差接近1,從而減少了層間輸入的變化,幫助模型更快地收斂。
- 提高訓練速度:批次歸一化能夠使得更大的學習率得以使用,從而加速訓練。
- 緩解梯度消失:通過規范化輸入,有助于保持激活值的穩定性,從而在一定程度上減輕了梯度消失現象。
- 具有正則化效果:批次歸一化可以在某種程度上減少對其他正則化技術(如Dropout)的依賴,因為它引入了一定的噪聲。
- 提高模型泛化能力:通過使訓練過程更加穩定,批次歸一化有助于提高模型在未見數據上的表現。
總結
ResNet通過殘差學習重新定義了深度神經網絡的訓練方式,解決了深度神經網絡的訓練難題,成為現代深度學習模型的基石。其設計哲學“讓網絡學習變化量而非絕對值”不僅提升了模型性能,更啟發了后續諸多架構創新,是深度學習發展史上的里程碑。