什麼是 殘差網路(Residual Network)?
殘差網路 (ResNet) 是一種深度神經網路架構,透過引入殘差連接來解決深度網路的梯度消失問題,允許訓練非常深的網路。
核心概念
殘差網路(Residual Network,ResNet)是深度學習領域的一項突破性創新,它有效地解決了深度神經網路訓練中的梯度消失和梯度爆炸問題,使得構建和訓練非常深的網路成為可能。ResNet 的核心思想是引入了殘差連接(Residual Connection),也稱為跳躍連接(Skip Connection)或快捷連接(Shortcut Connection)。
傳統深度網路的困境:
在傳統的深度神經網路中,隨著網路深度的增加,梯度在反向傳播過程中會逐漸消失或爆炸,導致網路難以訓練。這是因為梯度需要經過多層的權重矩陣相乘,如果權重矩陣的特徵值小於 1,則梯度會逐漸衰減;如果權重矩陣的特徵值大於 1,則梯度會逐漸增大。這種現象使得深度網路的訓練變得非常困難,甚至無法收斂。
殘差連接的解決方案:
ResNet 通過引入殘差連接來解決這個問題。殘差連接允許網路學習殘差映射(Residual Mapping),而不是直接學習底層映射。具體來說,假設我們想要學習一個映射 H(x),其中 x 是輸入,H(x) 是輸出。ResNet 並不直接學習 H(x),而是學習一個殘差映射 F(x) = H(x) - x。然後,將殘差映射 F(x) 與輸入 x 相加,得到 H(x) = F(x) + x。這個過程可以用以下公式表示:
y = F(x, {Wᵢ}) + x
其中,x 是輸入,F(x, {Wᵢ}) 是殘差映射,{Wᵢ} 是一組可學習的權重,y 是輸出。
殘差塊(Residual Block):
ResNet 的基本 building block 是殘差塊。一個殘差塊通常包含兩個或三個卷積層,以及一個殘差連接。殘差連接將輸入直接添加到卷積層的輸出上。這樣,即使卷積層的權重矩陣導致梯度消失,梯度也可以通過殘差連接直接傳播到前面的層,從而避免了梯度消失問題。
恆等映射(Identity Mapping):
理想情況下,如果網路已經學到了最佳的映射,那麼殘差映射 F(x) 應該接近於零。這意味著殘差塊可以近似於一個恆等映射,即 y ≈ x。恆等映射可以保證網路的性能不會隨著深度的增加而下降。實際上,ResNet 的性能隨著深度的增加而提高,這表明殘差連接不僅可以避免梯度消失,還可以幫助網路學習更好的特徵表示。
運作原理
ResNet 的運作原理基於以下兩個關鍵點:
- 殘差學習: 學習殘差映射比直接學習底層映射更容易。這是因為殘差映射只需要學習輸入和輸出之間的差異,而不需要學習整個映射。例如,如果輸入和輸出非常相似,那麼殘差映射將接近於零,網路可以更容易地學習到這個映射。
- 梯度傳播: 殘差連接允許梯度直接傳播到前面的層,從而避免了梯度消失問題。即使卷積層的權重矩陣導致梯度消失,梯度也可以通過殘差連接直接傳播到前面的層,從而保證了網路的訓練。
數學解釋:
假設我們有一個 L 层的 ResNet。第 l 层的激活值 aₗ 可以表示为:
aₗ = f(Wₗaₗ₋₁) + aₗ₋₁
其中,f 是激活函数,Wₗ 是第 l 层的权重矩阵。在反向传播过程中,梯度可以表示为:
∂L/∂aₗ₋₁ = ∂L/∂aₗ * (∂aₗ/∂aₗ₋₁) = ∂L/∂aₗ * (Wₗ'f'(Wₗaₗ₋₁) + 1)
可以看到,梯度中包含一个恒等项 1,这保证了梯度可以有效地传播到前面的层。即使 Wₗ'f'(Wₗaₗ₋₁) 很小,梯度也不会消失。
實際應用
ResNet 在許多電腦視覺任務中都取得了state-of-the-art的結果,包括:
- 圖像分類: ResNet 在 ImageNet 圖像分類挑戰賽中取得了優異的成績,並成為了許多其他圖像分類模型的基礎。
- 物體檢測: ResNet 可以作為物體檢測模型的 backbone,用於提取圖像的特徵。例如,Faster R-CNN 和 Mask R-CNN 等物體檢測模型都使用了 ResNet 作為 backbone。
- 語義分割: ResNet 可以用於語義分割任務,將圖像中的每個像素分類到不同的類別。例如,DeepLab 等語義分割模型都使用了 ResNet 作為 backbone。
- 人臉識別: ResNet 可以用於人臉識別任務,提取人臉圖像的特徵,並將其與數據庫中的人臉圖像進行比較。
- 自然語言處理: 雖然 ResNet 最初是為電腦視覺任務設計的,但它也可以應用於自然語言處理任務。例如,ResNet 可以用於文本分類和機器翻譯等任務。
具體例子:
- 醫學影像分析: ResNet 可以用於醫學影像分析,例如檢測肺癌、乳腺癌等疾病。通過訓練 ResNet 模型,可以自動分析醫學影像,並幫助醫生做出診斷。
- 自動駕駛: ResNet 可以用於自動駕駛系統,例如識別交通標誌、行人、車輛等。通過訓練 ResNet 模型,可以提高自動駕駛系統的安全性。
- 安防監控: ResNet 可以用於安防監控系統,例如識別人臉、檢測異常行為等。通過訓練 ResNet 模型,可以提高安防監控系統的效率。
常見誤區
- ResNet 只是簡單地增加了網路的深度: 雖然 ResNet 可以構建非常深的網路,但它並不僅僅是簡單地增加了網路的深度。殘差連接是 ResNet 的核心創新,它有效地解決了梯度消失問題,使得訓練非常深的網路成為可能。
- 殘差連接總是能提高網路的性能: 雖然殘差連接通常可以提高網路的性能,但在某些情況下,它可能會降低網路的性能。例如,如果網路的深度不夠,或者殘差連接的權重設置不合理,則殘差連接可能會導致網路的性能下降。因此,在使用 ResNet 時,需要仔細調整網路的結構和參數。
- ResNet 只能用於電腦視覺任務: 雖然 ResNet 最初是為電腦視覺任務設計的,但它也可以應用於其他領域,例如自然語言處理和語音識別。只要將 ResNet 的輸入和輸出進行適當的調整,就可以將其應用於不同的任務。
- 所有 ResNet 都是相同的: 存在許多不同版本的 ResNet,例如 ResNet-18、ResNet-34、ResNet-50、ResNet-101 和 ResNet-152。這些不同版本的 ResNet 具有不同的深度和複雜度,適用於不同的任務。選擇哪個版本的 ResNet 取決於具體的需求。
總之,ResNet 是一種非常重要的深度學習架構,它有效地解決了深度神經網路訓練中的梯度消失問題,使得構建和訓練非常深的網路成為可能。ResNet 在許多電腦視覺任務中都取得了state-of-the-art的結果,並成為了許多其他深度學習模型的基礎。
相關術語
常見問題
延伸學習
想看 殘差網路 的完整影片教學?前往 美第奇 AI 學院