iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
AI/ ML & Data

Web仔從數學角度學習 AI/ ML & Data系列 第 13

Day 13 - Web仔從數學角度學習 卷積神經網路 反向傳播算法

  • 分享至 

  • xImage
  •  

註:本文同步更新在Notion!(數學公式會比較好閱讀)

卷積神經網路(Convolutional Neural Network, CNN)中反向傳播算法(Backpropagation)及如何進行參數更新。CNN 的反向傳播是訓練過程的關鍵,它使得網路中的權重得以更新,最終讓模型學會正確地從數據中提取特徵和進行分類。

反向傳播的核心目標是通過誤差函數(Loss Function)計算出每個層的參數(如卷積核、權重矩陣)對最終誤差的影響,並且通過計算梯度來更新這些參數。整個過程依賴於微積分中的鏈式法則,通過逐層計算梯度,從輸出層往輸入層反向傳遞。

對於卷積層,參數更新的步驟與全連接層略有不同,因為卷積層的權重是共享的,且卷積操作涉及多維數據。因此,反向傳播的數學推導在卷積層中有點難。


CNN 中的梯度下降法(Gradient Descent)

CNN 的訓練過程依賴於梯度下降法來最小化損失函數。基本思想是對損失函數 $L$ 對網路中每個參數進行微分,然後沿著負梯度的方向更新參數,使損失逐步減小。參數更新的公式如下:
https://ithelp.ithome.com.tw/upload/images/20240925/20168898KKzuHqN8jw.png


CNN 中的反向傳播原理

反向傳播算法在 CNN 中的分成兩個部分:

  1. 前向傳播:輸入數據通過網路層逐層傳遞,並最終產生預測結果 y_pred。
  2. 反向傳播:通過計算每個層的梯度,將誤差從輸出層反向傳遞到輸入層,並更新權重參數。

1. 前向傳播

在 CNN 中,前向傳播涉及以下幾個步驟:

  • 輸入數據通過卷積層,進行局部特徵提取
  • 經過激活函數,如 ReLU,使得數據進一步非線性化
  • 經過池化層,對特徵進行降維
  • 最後,經過全連接層進行分類或預測

2. 反向傳播中的梯度計算

反向傳播的關鍵在於計算每一層的參數對損失函數的偏導數。這些偏導數可以通過微積分來推導,利用鏈式法則逐層進行。具體到 CNN 中的卷積層,梯度計算較為複雜,因為它涉及到對卷積核的多維張量進行求導。
https://ithelp.ithome.com.tw/upload/images/20240925/20168898qiuLnAE5ia.png
這裡,我們需要通過將反向傳播的誤差傳遞到每個卷積核,並計算每個卷積核的貢獻來完成參數更新。


具體步驟:卷積層的反向傳播

  1. 計算輸出層的誤差

    首先,我們從輸出層開始計算誤差。假設我們的損失函數是均方誤差(Mean Squared Error, MSE)
    https://ithelp.ithome.com.tw/upload/images/20240925/20168898UI95v5X57w.png
    對於輸出層,我們需要計算損失對於輸出激活值的偏導數:
    https://ithelp.ithome.com.tw/upload/images/20240925/20168898CB5RAl1K8K.png

  2. 逐層傳遞誤差

    接下來,我們通過逐層傳遞誤差,計算每個層的梯度。對於卷積層,假設激活函數是 ReLU,我們的誤差傳遞公式為:
    https://ithelp.ithome.com.tw/upload/images/20240925/20168898EEk1zLSuD4.png

  3. 更新卷積核
    https://ithelp.ithome.com.tw/upload/images/20240925/20168898blRv7dUQE0.png
    最終,根據梯度下降法更新參數:
    https://ithelp.ithome.com.tw/upload/images/20240925/20168898WsyC9G0bBv.png


梯度下降與參數更新

CNN 的參數更新過程遵循梯度下降法。方法包括:

  1. 隨機梯度下降(SGD):每次僅使用一個或少量樣本進行參數更新。
    https://ithelp.ithome.com.tw/upload/images/20240925/20168898XgpuK34sjQ.png
  2. 動量法(Momentum):在梯度下降的基礎上,考慮過去梯度的動量,解決震盪問題。
    https://ithelp.ithome.com.tw/upload/images/20240925/20168898qi72xAu5tR.png
  3. Adam 優化器:結合了動量法和 RMSProp,通過自適應地調整學習率,常用於訓練深層網路。
    https://ithelp.ithome.com.tw/upload/images/20240925/20168898YtthTS5g44.png

卷積神經網路中的反向傳播算法是訓練過程的重點,利用鏈式法則逐層計算誤差的梯度,並通過梯度下降法來更新網路的參數。每一層的權重都根據對損失函數的影響來進行更新,從而最終達到模型的收斂。不同的優化方法在反向傳播中發揮了不同的作用,如 SGD、Momentum 和 Adam 都在深度學習的訓練中有著廣泛應用。
https://ithelp.ithome.com.tw/upload/images/20240925/20168898NYT1Astznl.png


上一篇
Day 12 - Web仔從數學角度學習 卷積神經網路CNN
下一篇
Day 14 - Web仔從數學角度學習 卷積神經網路 數值
系列文
Web仔從數學角度學習 AI/ ML & Data30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言