殘差神經網路（Residual Neural Network，簡稱 ResNet）屬於深度學習模型的一種，其核心在於讓網路的每一層不直接學習預期輸出，而是學習與輸入之間的殘差關係。這種網路透過新增 跳躍連線，即跳過某些網路層的連線來實現身份對映，再與網路層的輸出相加合併。其運作機制與類似，透過極大的正偏置權重來開啟 門控。 這一設計使得擁有幾十上百層的深度學習模型可以更易於訓練，增加模型深度時還能保持甚至提高準確度。所謂的 殘差連線 即 直連跳過，這一概念也被應用於 1997 年的長短期記憶模型 LSTM、 Transformer 模型（比如 BERT 和 GPT 系列，ChatGPT 等）、AlphaGo Zero、以及 AlphaFold 等。 殘差神經網路由何愷明、張祥雨、任少卿和孫劍開發，這一成果在 2015 年的 ImageNet 大規模視覺識別挑戰賽中奪冠。 基本原理 背景介紹 2012 年，針對 ImageNet 競賽開發的 AlexNet 模型是一個包含 8 層的卷積神經網路。到了 2014 年，牛津大學的視覺幾何組（VGG）透過疊加 3x3 卷積層將網路深度增加到了 19 層。 但是，層級的增加卻導致訓練精度的迅速下降， 這種現象被稱為 效能退化 問題。 理論上，如果一個更深的網路僅僅是透過在一個較淺網路的基礎上增加額外層來構建的，那麼這個更深的網路不應該比其較淺的網路有更高的訓練損失。 如果這些額外層具有身份對映的能力，那麼更深的網路應該能夠實現與其較淺網路相同的功能。但這裡存在一個假設，即最佳化器不能有效地將這些引數化的網路層調整為身份對映。 殘差學習 在多層神經網路模型裡，設想一個包含若干層的子網路。這個子網路的函式用 H x 來表示，其中 x 是子網路的輸入。殘差學習是透過重新設定這個子網路的引數，讓引數層表達一個殘差函式 F xH xx。因此，這個子網路的輸出 y 可以表示為： begin align y F x x end align 這一原理同樣適用於 1997 年提出的長短期記憶 LSTM 單元， 在裡計算 y_t1 F x_t x_t ，簡化為 y F x x。 函式 F x 常透過矩陣乘法實現，並結合啟用函式以及規範化操作（如或層規範化）。 這類子網路被稱作 殘差塊。 透過疊加這樣的殘差塊，形成深度殘差網路。 在 y F x x 公式中的 x 操作是透過一個相當於恆等對映的跳躍連線來完成，它將殘差塊的輸入直接與輸出連線。在隨後的研究中，這種連線常被稱作 殘差連線。 訊號傳遞 身份對映的引入有利於訊號在前向傳播路徑和反向傳播路徑中的傳遞。 向前傳播 如果第 ell 個殘差塊的輸出是第 ell1 個殘差塊的輸入（這裡假設塊與塊之間沒有啟用函式），可以得到： begin align x_ell1 F x_ell x_ell end align 若遞迴應用此公式，例如， begin align x_ell2 F x_ell1 x_ell1 F x_ell1 F x_ell x_ell end align，可以推匯出： begin align x_L x_ell sum_ilL1 F x_i end align 這裡 L 表示任意後續殘差塊的索引（比如處於最末尾的塊），ell 代表任意靠前的塊對應的索引。該公式說明了總有一個訊號能夠直接從淺層塊 ell 傳遞到深層塊 L。 反向傳播 殘差學習的公式還在一定程度上緩解了梯度消失問題。然而，梯度消失並不是導致效能退化問題的根源，因為透過引入規範化層（如批次規範化）可在一定程度上解決此問題。根據上面的前向傳播過程，對 x_ell 進行求導，可以得到： begin align frac partial mathcal E partial x_ell frac partial mathcal E partial x_L frac partial x_L partial x_ell frac partial mathcal E partial x_L left 1 frac partialpartial x_ell sum_ilL1 F x_i right frac partial mathcal E partial x_L frac partial mathcal E partial x_L frac partialpartial x_ell sum_ilL1 F x_i end align 這裡 mathcal E 是最小化損失函式。以上表明，淺層的梯度計算 frac partial mathcal E partial x_ell 總會直接加上一個項 frac partial mathcal E partial x_L 。因此，由於額外項 frac partial mathcal E partial x_L 的存在，即使 F x_i 的梯度很小，總梯度 frac partial mathcal E partial x_ell 也不會消失。 殘差塊 基本殘差塊 基本殘差塊是原始 ResNet 研究中最簡單的部分。 它包括兩個序列的 3x3 卷積層以及一個殘差連線。這兩層的輸入輸出尺寸保持一致。 瓶頸殘差塊 瓶頸殘差塊包含三個串聯的卷積層和一個殘差連線。 該塊的第一層是 1x1 卷積，用於降維，比如降至輸入維度的 14；第二層是 3x3 卷積；最後一層是另一個 1x1 卷積，用於恢復維度。ResNet50、ResNet101 和 ResNet152 模型都基於瓶頸塊構建。 預啟用殘差塊 預啟用殘差塊在應用殘差函式 F 之前，先使用啟用函式，如非線性和規範化的處理。預啟用殘差塊的計算可以表述為： begin align x_ell1 F phi x_ell x_ell end align 這裡的 phi 可以是如線性整流函式等任意非線性啟用或歸一化操作。這種設計減少了殘差塊間非恆等對映的數量，被用於訓練 200 層到 1000 多層的模型。 從 GPT2 開始，Transformer 塊常被用於預啟用塊，這在 Transformer 模型的相關文獻中被稱為 預規範化。 Transformer 塊 Transformer 塊是由兩個殘差塊組成，每個殘差塊都設有一個殘差連線。 第一個殘差塊為多頭注意力塊，使用了自注意力運算，隨後連線一個線性對映層。第二個殘差塊是一個前饋式的多層感知器（MLP）塊，這個塊在某種程度上像是一個 反向 的瓶頸塊，它透過一個線性對映層（在卷積神經網路中相當於 1x1 的卷積）來擴大維度，然後透過另一個線性對映層來減少維度。 一個 Transformer 塊包含了四層線性對映。GPT3 模型擁有 96 個這樣的 Transformer 塊（在 Transformer 領域的文獻中，通常將一個 Transformer 塊稱作一個 Transformer 層）。因此，該模型包含了大約 400 層的對映層，包括 Transformer 塊內的 96x4 層，以及一些額外的層用於輸入嵌入和輸出預測。 若沒有殘差連線，訓練網路深度極高的 Transformer 模型將無法取得成功。 相關研究 1961 年，在弗蘭克羅森布拉特出版的書籍中介紹了一個含有跳躍連線的三層多層感知器（MLP）模型（詳見第 15 章，第 313 頁）。這種模型被稱作 交叉耦合系統，其跳躍連線實際上是交叉耦合連線的一種形式。 在 1994 年和 1996 年出版的書籍中提出了在前饋 MLP 模型中使用的 跳層 連線：MLP 一般允許存在多個隱藏層，並且支援從輸入直接到輸出的跳層連線（詳見第 261 頁，第 144 頁）， 這使得非線性單元能夠調整線性函式形式（詳見第 262 頁）。這種說法其實已經暗示了非線性 MLP 的表現就像是在一個線性函式上加上了一個殘差函式。 在 1991 年分析了梯度消失問題，並認為這是深度學習效果不佳的原因。 為解決這一問題，長短期記憶（LSTM）網路在每個 LSTM 單元中引入了權重為 10 的跳躍或殘差連線，計算公式為 y_t1 F x_t x_t 。在中，這個公式轉化為前饋神經網路中的殘差公式 y F x x，從而實現了深層迴圈神經網路的有效訓練。2000 年釋出的一種 LSTM 版本透過 遺忘門 來調節連線，這些門的權重不再固定為 10，而是可以學習的。在實際實驗中，遺忘門透過正偏置權重進行初始化，從而解決梯度消失問題。 2015 年，將上述原理應用於前饋神經網路，被媒體報道稱為 首個具有數百層深度的前饋神經網路。 原有的高速神經網路論文不僅提出了非常深的前饋網路的基本架構，還展示了 20 層、50 層和 100 層網路的實驗結果，並提及正在進行的深達 900 層的實驗。50 層或 100 層的網路相較於它們常用的神經網路有更低的訓練誤差，但與 20 層的訓練結果相比，誤差並無降低（詳見 MNIST 資料集中的圖 1）。在超過 19 層的網路上，並未有訓練精度的提高。然而，ResNet 的研究證明了多於 20 層以上的訓練結果同樣有效。 它指出跳躍連線中的調節可能導致前向和反向傳播中訊號的消失（詳見第 3 節）。這也解釋了為什麼 2000 年的 LSTM 的遺忘門要透過正偏置權重初始化為開啟狀態：只要門處於開啟狀態，它就如同 1997 年的 LSTM。同樣，高速神經網路如果透過強正偏置權重保持門的開啟狀態，就表現得如同 ResNet 一樣。現在的神經網路（如 Transformer）中使用的跳躍連線主要就是身份對映。 2016 年出現的 DenseNets 被設計為一種深層的神經網路，旨在將每一層與其他所有層連線。DenseNets 透過使用身份對映作為跳躍連線來實現這一目標。與 ResNet 不同，DenseNets 透過拼接而非加法將層輸出與跳躍連接合並。 利用殘差網路架構，實現了具有隨機深度的神經網路。 透過隨機丟棄一部分網路層，讓訊號透過跳躍連線進行傳播。這種做法也被稱為 路徑丟棄。這是訓練大型深層模型，如（ViT）的一種十分有效的正則化方法。 與生物學的聯絡 雖然最初的殘差網路研究並未受生物學啟發，但後來的研究卻發現殘差網路與生物學有關。 2023 年《科學》雜誌上發表的一項研究展示了果蠅幼蟲大腦的完整神經連線組。 這項研究發現了類似於人工神經網路中如 ResNet 一樣的跳躍連線。 參考文獻 Category 人工神經網路 Category 深度學習