殘差網路 是什麼?
ResNet:殘差網路 的完整解釋
ResNet是一種深度學習模型,透過引入殘差連接解決深度神經網路訓練時的梯度消失問題,允許網路學習殘差映射而非直接映射。
容易混淆
ResNet vs 殘差網路
ResNet 是具體模型家族名稱 殘差網路是更通用的架構概念 最關鍵的區別是家族名稱和概念範圍。
ResNet vs DenseNet
ResNet 透過相加保留資訊 DenseNet 透過串接保留資訊 最關鍵的區別是殘差加法和密集串接。
記住這句就好
ResNet 就是把「改一點就好」做成深網路。
實際案例
ImageNet 分類 ResNet-50 這類模型常被拿來當影像分類的強基線,因為它夠深又好訓練。
遷移學習 很多影像專案會直接拿預訓練的 ResNet 當特徵抽取器,再接自己的分類頭。
算法與應用
ResNet 的核心是 residual block,常見版本有 18、34、50、101、152 層。 較深版本常搭配 bottleneck block,先降維再升維,降低計算量。 它之所以經典,是因為把訓練深網路的門檻大幅拉低。
殘差區塊怎麼運作
ResNet 的核心是殘差區塊(residual block),結構只有一個改動:
輸出 = F(x) + xF(x) 是那幾層卷積算出來的東西,x 是這個區塊的輸入。輸入直接跳過那幾層加到輸出上,這條路徑叫捷徑連接(shortcut connection)或恆等映射(identity mapping)。
這個改動看起來很小,效果卻是決定性的。原本每一層要學的是「完整的映射 H(x)」,現在只要學「跟輸入的差距 F(x) = H(x) − x」,也就是殘差。
為什麼這樣比較好學:如果某一層其實不需要做任何事,原本要讓好幾層卷積湊出一個恆等映射,那很難;現在只要讓 F(x) 趨近 0 就好,權重往 0 壓是最佳化很容易做到的事。
它解決的是退化問題,不是過擬合
這一點常被誤解。ResNet 論文指出的現象是:把 20 層的網路加深到 56 層,訓練誤差也變高了。訓練誤差變高代表這不是過擬合,而是深網路變得難以最佳化,這叫退化問題(degradation problem)。
捷徑連接同時解決了兩件事。
梯度可以直接回傳。 反向傳播時梯度沿著捷徑那條路是原封不動傳回去的,不會被中間層層層衰減,所以幾百層也訓練得動。
深網路至少不會比淺網路差。 多出來的層只要學成恆等映射就等於不存在,理論上加深不會傷害效能。
這個設計的影響遠超過影像領域。Transformer 每個子層外面包的那個殘差連接(加上層正規化),用的就是同一個想法。可以說現代所有深層網路都建立在這條捷徑上。
實作上的兩個細節。 輸入與輸出通道數不同時,捷徑上要加一個 1×1 卷積調整維度。較深的版本(ResNet-50 以上)用瓶頸結構(bottleneck),先用 1×1 降維、做 3×3 卷積、再用 1×1 升維,這樣參數量小很多。
情境判斷
Q1(直覺題):如果你要拿一個成熟的影像 backbone 來做轉移學習,ResNet 為什麼常被選?
→ 因為它穩定、成熟,而且有很多預訓練權重可直接用。
Q2(判斷題):ResNet 的深度增加後,一定比淺層版本好嗎?
→ 不一定。更深通常更有表現潛力,但也更吃資料和算力,結果要看任務。
相關術語
常見問題
ResNet 的殘差塊是什麼?
A:就是把輸入直接加回去,讓模型學的是「修正量」而不是從零開始。
ResNet 有哪些常見變體?
A:常見有 ResNet-18、34、50、101、152,差在層數與 block 設計。
ResNet 為什麼影響這麼大?
A:因為它讓深層網路的訓練變得可操作,後來很多架構都沿用殘差思想。