註:本文同步更新在Notion!(數學公式會比較好閱讀)
卷積神經網路(Convolutional Neural Network, CNN)中的反向傳播算法(Backpropagation)及如何進行參數更新。CNN 的反向傳播是訓練過程的關鍵,它使得網路中的權重得以更新,最終讓模型學會正確地從數據中提取特徵和進行分類。
反向傳播的核心目標是通過誤差函數(Loss Function)計算出每個層的參數(如卷積核、權重矩陣)對最終誤差的影響,並且通過計算梯度來更新這些參數。整個過程依賴於微積分中的鏈式法則,通過逐層計算梯度,從輸出層往輸入層反向傳遞。
對於卷積層,參數更新的步驟與全連接層略有不同,因為卷積層的權重是共享的,且卷積操作涉及多維數據。因此,反向傳播的數學推導在卷積層中有點難。
CNN 的訓練過程依賴於梯度下降法來最小化損失函數。基本思想是對損失函數 $L$ 對網路中每個參數進行微分,然後沿著負梯度的方向更新參數,使損失逐步減小。參數更新的公式如下:
反向傳播算法在 CNN 中的分成兩個部分:
在 CNN 中,前向傳播涉及以下幾個步驟:
反向傳播的關鍵在於計算每一層的參數對損失函數的偏導數。這些偏導數可以通過微積分來推導,利用鏈式法則逐層進行。具體到 CNN 中的卷積層,梯度計算較為複雜,因為它涉及到對卷積核的多維張量進行求導。
這裡,我們需要通過將反向傳播的誤差傳遞到每個卷積核,並計算每個卷積核的貢獻來完成參數更新。
計算輸出層的誤差
首先,我們從輸出層開始計算誤差。假設我們的損失函數是均方誤差(Mean Squared Error, MSE):
對於輸出層,我們需要計算損失對於輸出激活值的偏導數:
逐層傳遞誤差
接下來,我們通過逐層傳遞誤差,計算每個層的梯度。對於卷積層,假設激活函數是 ReLU,我們的誤差傳遞公式為:
更新卷積核
最終,根據梯度下降法更新參數:
CNN 的參數更新過程遵循梯度下降法。方法包括:
卷積神經網路中的反向傳播算法是訓練過程的重點,利用鏈式法則逐層計算誤差的梯度,並通過梯度下降法來更新網路的參數。每一層的權重都根據對損失函數的影響來進行更新,從而最終達到模型的收斂。不同的優化方法在反向傳播中發揮了不同的作用,如 SGD、Momentum 和 Adam 都在深度學習的訓練中有著廣泛應用。