殘差網路(ResNet)
ResNet是一種深度學習模型,透過引入殘差連接解決深度神經網路訓練時的梯度消失問題,允許網路學習殘差映射而非直接映射。
完整說明
核心概念
ResNet的核心概念是殘差連接。傳統的深度神經網路通常嘗試直接學習輸入到輸出的映射函數H(x)。然而,ResNet並非直接學習H(x),而是學習殘差函數F(x) = H(x) - x,其中x是輸入。然後,將殘差函數F(x)的輸出加回輸入x,得到最終的輸出H(x) = F(x) + x。這個過程稱為殘差塊(Residual Block)。
殘差連接的關鍵作用是允許梯度更容易地流經網路。在非常深的網路中,梯度在反向傳播過程中可能會逐漸消失,導致網路難以訓練。通過殘差連接,梯度可以直接從後面的層傳播到前面的層,繞過中間的非線性層,從而減輕梯度消失的問題。
運作原理
ResNet的運作原理基於殘差塊的堆疊。一個典型的ResNet架構由多個殘差塊組成,每個殘差塊包含兩個或三個卷積層,以及一個殘差連接。殘差連接將輸入直接添加到殘差塊的輸出中。
更具體地說,假設一個殘差塊的輸入是x,輸出是H(x)。殘差塊的計算過程如下:
- 計算殘差函數F(x),通常使用兩個或三個卷積層和激活函數。
- 將殘差函數F(x)的輸出加回輸入x,得到H(x) = F(x) + x。
- 將H(x)作為下一個殘差塊的輸入。
通過堆疊多個殘差塊,ResNet可以構建非常深的網路,而不會受到梯度消失問題的困擾。殘差連接允許網路學習恆等映射(Identity Mapping),即F(x) = 0。這意味著,如果網路的某些層沒有用處,它們可以簡單地學習恆等映射,而不會對網路的性能產生負面影響。
ResNet有多種不同的變體,例如ResNet-18、ResNet-34、ResNet-50、ResNet-101和ResNet-152。這些變體的主要區別在於網路的深度,即殘差塊的數量。更深的ResNet通常具有更好的性能,但也需要更多的計算資源。
實際應用
ResNet在各種電腦視覺任務中都取得了state-of-the-art的性能,包括:
- 圖像分類: ResNet在ImageNet圖像分類挑戰賽中取得了突破性的成果,大幅提高了圖像分類的準確性。
- 目標檢測: ResNet可以作為目標檢測模型的骨幹網路,用於提取圖像的特徵。
- 語義分割: ResNet可以作為語義分割模型的骨幹網路,用於將圖像中的每個像素分類到不同的類別。
- 人臉識別: ResNet可以用於人臉識別系統,用於提取人臉的特徵。
- 自然語言處理: 雖然ResNet最初是為電腦視覺任務設計的,但它也可以應用於自然語言處理任務,例如文本分類和機器翻譯。
除了上述應用之外,ResNet還被廣泛應用於其他領域,例如醫療影像分析、自動駕駛和機器人學。
常見誤區
- 誤區1:ResNet只是簡單地堆疊更多的層。
- 事實:ResNet的核心是殘差連接,它允許網路學習殘差映射,從而更容易優化極深的網路。簡單地堆疊更多的層通常會導致梯度消失問題,而ResNet通過殘差連接有效地解決了這個問題。
- 誤區2:ResNet只能用於圖像分類任務。
- 事實:ResNet可以作為各種電腦視覺任務的骨幹網路,包括目標檢測、語義分割和人臉識別。它也可以應用於其他領域,例如自然語言處理。
- 誤區3:ResNet的深度越深,性能就越好。
- 事實:ResNet的深度與性能之間並非線性關係。在某些情況下,過深的ResNet可能會導致過擬合,從而降低性能。選擇合適的ResNet深度需要根據具體的任務和數據集進行調整。
- 誤區4:殘差連接只是簡單地將輸入加到輸出上。
- 事實:殘差連接的作用是允許梯度更容易地流經網路,從而減輕梯度消失的問題。它並非簡單地將輸入加到輸出上,而是允許網路學習殘差映射,從而更容易優化極深的網路。
ResNet的成功證明了深度學習架構設計的重要性。通過引入殘差連接,ResNet有效地解決了深度神經網路訓練中的梯度消失問題,為深度學習的發展做出了重要貢獻。
相關術語
常見問題
延伸學習
延伸學習
想看 殘差網路 的完整影片教學?前往 美第奇 AI 學院