一、白話解釋
?梯度其實就是導數,除了用符號求導也可以用近似求導:
然后更新w=w-學習率*導數
反向傳播就是鏈式求導
向前計算:對每個節點求偏導
在前向傳播的時候,進行一次前向計算的時候就可以把每一條線的偏導數都知道
前向傳播和反向傳播是交替進行的
二、反向傳播
反向傳播全稱誤差反向傳播算法,其核心思想是通過鏈式法則(Chain Rule)將預測誤差從輸出層逐層反向傳遞至輸入層,從而計算損失函數對每個參數的梯度。這些梯度隨后被用于參數更新(如梯度下降法),以最小化模型預測誤差。
步驟
1.前向傳播
某層神經元加權輸入再激活輸出
2.計算損失
比較預測輸出與真實標簽,計算損失值(均方誤差、交叉熵)
3.反向傳播
從輸出層開始,計算損失對輸出的梯度也就是損失對激活輸出求導,然后逐層反向傳播,利用鏈式求導法則計算各層參數的梯度(導數)。
4.參數更新
用梯度下降法進行更新參數
示例:
比如計算某神經元的誤差:
然后修改權重:
PyTorch主要使用符號微分,因為有計算簡化,這樣計算量會小很多。