热门问题
时间线
聊天
视角
殘差神經網路
来自维基百科,自由的百科全书
Remove ads
殘差神經網路(Residual Neural Network,簡稱ResNet)[1]屬於深度學習模型的一種,其核心在於讓網路的每一層不直接學習預期輸出,而是學習與輸入之間的殘差關係。這種網路通過添加「跳躍連接」,即跳過某些網路層的連接來實現身分對映,再與網路層的輸出相加合併。其運作機制與高速神經網路類似,通過極大的正偏置權重來打開「門控」。[2] 這一設計使得擁有幾十上百層的深度學習模型可以更易於訓練,增加模型深度時還能保持甚至提高準確度。所謂的「殘差連接」即「直連跳過」,這一概念也被應用於1997年的長短期記憶模型LSTM、[3] Transformer模型(比如BERT和GPT系列,ChatGPT等)、AlphaGo Zero、AlphaStar以及AlphaFold等。

殘差神經網路由何愷明、張祥雨、任少卿和孫劍開發,這一成果在2015年的ImageNet大規模視覺辨識挑戰賽中奪冠。[4][5]
Remove ads
基本原理
2012年,針對ImageNet競賽開發的AlexNet模型是一個包含8層的卷積神經網路。到了2014年,牛津大學的視覺幾何組(VGG)通過疊加3x3卷積層將網路深度增加到了19層。[6] 但是,層級的增加卻導致訓練精度的迅速下降,[7] 這種現象被稱為「效能退化」問題。[1]
理論上,如果一個更深的網路僅僅是通過在一個較淺網路的基礎上增加額外層來構建的,那麼這個更深的網路不應該比其較淺的網路有更高的訓練損失。[1] 如果這些額外層具有身分對映的能力,那麼更深的網路應該能夠實現與其較淺網路相同的功能。但這裡存在一個假設,即最佳化器不能有效地將這些參數化的網路層調整為身分對映。
在多層神經網路模型里,設想一個包含若干層的子網路絡。這個子網路絡的函式用來表示,其中是子網路絡的輸入。殘差學習是通過重新設定這個子網路絡的參數,讓參數層表達一個殘差函式。因此,這個子網路絡的輸出可以表示為:
這一原理同樣適用於1997年提出的長短期記憶LSTM單元,[3] 在隨時間反向傳播里計算,簡化為。
函式常通過矩陣乘法實現,並結合激勵函數以及規格化操作(如批次規格化或層規格化)。
這類子網路絡被稱作「殘差塊」。[1] 通過疊加這樣的殘差塊,形成深度殘差網路。
在""公式中的""操作是通過一個相當於恆等對映的跳躍連接來完成,它將殘差塊的輸入直接與輸出連接。在隨後的研究中,這種連接常被稱作「殘差連接」。[8]
身分對映的引入有利於訊號在前向傳播路徑和反向傳播路徑中的傳遞。[9]
如果第個殘差塊的輸出是第個殘差塊的輸入(這裡假設塊與塊之間沒有激勵函數),可以得到:[9]
若遞迴應用此公式,例如,,可以推導出:
這裡表示任意後續殘差塊的索引(比如處於最末尾的塊),代表任意靠前的塊對應的索引。該公式說明了總有一個訊號能夠直接從淺層塊傳遞到深層塊。
殘差學習的公式還在一定程度上緩解了梯度消失問題。然而,梯度消失並不是導致效能退化問題的根源,因為通過引入規格化層(如批次規格化)可在一定程度上解決此問題。根據上面的前向傳播過程,對進行求導,可以得到:[9]
這裡 是最小化損失函式。以上表明,淺層的梯度計算總會直接加上一個項。因此,由於額外項的存在,即使的梯度很小,總梯度也不會消失。
Remove ads
殘差塊

基本殘差塊是原始ResNet研究中最簡單的部分。[1] 它包括兩個串行的3x3卷積層以及一個殘差連接。這兩層的輸入輸出尺寸保持一致。
瓶頸殘差塊包含三個串聯的卷積層和一個殘差連接。[1] 該塊的第一層是1x1卷積,用於降維,比如降至輸入維度的1/4;第二層是3x3卷積;最後一層是另一個1x1卷積,用於恢復維度。ResNet-50、ResNet-101和ResNet-152模型都基於瓶頸塊構建。[1]
預啟用殘差塊[9]在應用殘差函式之前,先使用激勵函數,如非線性和規格化的處理。預啟用殘差塊的計算可以表述為:
這裡的可以是如線性整流函式等任意非線性啟用或歸一化操作。這種設計減少了殘差塊間非恆等對映的數量,被用於訓練200層到1000多層的模型。[9]
從GPT-2開始,Transformer塊常被用於預啟用塊,這在Transformer模型的相關文獻中被稱為「預規格化」。[10]

Transformer塊是由兩個殘差塊組成,每個殘差塊都設有一個殘差連接。
第一個殘差塊為多頭注意力塊,使用了自注意力運算,隨後連接一個線性對映層。第二個殘差塊是一個前饋式的多層感知器(MLP)塊,這個塊在某種程度上像是一個「反向」的瓶頸塊,它通過一個線性對映層(在卷積神經網路中相當於1x1的卷積)來擴大維度,然後通過另一個線性對映層來減少維度。
一個Transformer塊包含了四層線性對映。GPT-3模型擁有96個這樣的Transformer塊(在Transformer領域的文獻中,通常將一個Transformer塊稱作一個「Transformer層」)。因此,該模型包含了大約400層的對映層,包括Transformer塊內的96x4層,以及一些額外的層用於輸入嵌入和輸出預測。
若沒有殘差連接,訓練網路深度極高的Transformer模型將無法取得成功。[11]
相關研究
1961年,在弗蘭克·羅森布拉特出版的書籍中介紹了一個含有跳躍連接的三層多層感知器(MLP)模型(詳見第15章,第313頁[12])。這種模型被稱作「交叉耦合系統」,其跳躍連接實際上是交叉耦合連接的一種形式。[12]
在1994年[13]和1996年[14]出版的書籍中提出了在前饋MLP模型中使用的「跳層」連接:「MLP一般允許存在多個隱藏層,並且支援從輸入直接到輸出的『跳層』連接」(詳見第261頁[13],第144頁[14]),「...這使得非線性單元能夠調整線性函式形式」(詳見第262頁[13])。這種說法其實已經暗示了非線性MLP的表現就像是在一個線性函式上加上了一個殘差函式。
塞普·霍赫賴特在1991年分析了梯度消失問題,並認為這是深度學習效果不佳的原因。[15] 為解決這一問題,長短期記憶(LSTM)網路[3]在每個LSTM單元中引入了權重為1.0的跳躍或殘差連接,計算公式為。在隨時間反向傳播中,這個公式轉化為前饋神經網路中的殘差公式,從而實現了深層迴圈神經網路的有效訓練。2000年[16]發布的一種LSTM版本通過「遺忘門」來調節連接,這些門的權重不再固定為1.0,而是可以學習的。在實際實驗中,遺忘門通過正偏置權重進行初始化,從而解決梯度消失問題。[16]
2015年,高速神經網路[2][17]將上述原理應用於前饋神經網路,被媒體報道稱為「首個具有數百層深度的前饋神經網路」。[18] 原有的高速神經網路論文[2]不僅提出了非常深的前饋網路的基本架構,還展示了20層、50層和100層網路的實驗結果,並提及正在進行的深達900層的實驗。50層或100層的網路相較於它們常用的神經網路有更低的訓練誤差,但與20層的訓練結果相比,誤差並無降低(詳見MNIST資料集中的圖1[2])。在超過19層的網路上,並未有訓練精度的提高[2]。然而,ResNet的研究證明了多於20層以上的訓練結果同樣有效。[9] 它指出跳躍連接中的調節可能導致前向和反向傳播中訊號的消失(詳見第3節[9])。這也解釋了為什麼2000年的LSTM[16]的遺忘門要通過正偏置權重初始化為開啟狀態:只要門處於開啟狀態,它就如同1997年的LSTM。同樣,高速神經網路如果通過強正偏置權重保持門的開啟狀態,就表現得如同ResNet一樣。現在的神經網路(如Transformer)中使用的跳躍連接主要就是身分對映。
2016年出現的DenseNets[19]被設計為一種深層的神經網路,旨在將每一層與其他所有層連接。DenseNets通過使用身分對映作為跳躍連接來實現這一目標。與ResNet不同,DenseNets通過拼接而非加法將層輸出與跳躍連接合併。
利用殘差網路架構,實現了具有隨機深度的神經網路。[20] 通過隨機丟棄一部分網路層,讓訊號通過跳躍連接進行傳播。這種做法也被稱為「路徑丟棄」。這是訓練大型深層模型,如視覺Transformer(ViT)的一種十分有效的正則化方法。
與生物學的聯絡
雖然最初的殘差網路研究並未受生物學啟發,但後來的研究卻發現殘差網路與生物學有關。[21][22]
2023年《科學》雜誌上發表的一項研究展示了果蠅幼蟲大腦的完整神經連接組。[23] 這項研究發現了類似於類神經網路中如ResNet一樣的跳躍連接。
參考文獻
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads