什么是神經網絡:反向傳播如何更新網絡參數
f=w*x+b,再經由sigmoid(f)或者softmax(f)得到的概率與樣本實際值y(x)是有偏差的,怎樣能使預測值無限接近樣本實際值呢?這時就需要用到反向傳播來更新神經網絡參數。反向傳播主要是通過計算損失函數對網絡參數的梯度,然后利用梯度下降等優化方法來更新參數,從而使網絡逐步優化,降低預測誤差。。
反向傳播流程如下所示:
1. 前向傳播(Forward Propagation)
首先,對輸入數據進行前向傳播計算,得到網絡的輸出。這包括以下步驟:
- 輸入層:將輸入數據傳遞給網絡。
- 隱藏層:通過激活函數對輸入進行加權和求和,生成隱藏層的輸出。
- 輸出層:將隱藏層的輸出再次進行加權和求和再次通過激活函數,生成最終的輸出。
2. 計算損失(Compute Loss)
使用損失函數(Loss Function)計算模型預測值與真實標簽之間的誤差。簡單介紹一下幾個損失函數:?
1) 均方誤差(Mean Squared Error,MSE)
均方誤差是用于回歸任務的常見損失函數,計算預測值與真實值之間的平方差,然后取平均值。
2) 交叉熵損失(Cross-Entropy Loss)
交叉熵損失通常用于分類任務,特別是在多類別分類問題中。對于二分類問題,交叉熵損失定義如下:
Binary Cross-Entropy=?1?∑?=1?[??log?(?^?)+(1???)log?(1??^?)]
損失=損失函數(?預測,?真實)
3. 反向傳播(Backward Propagation)
反向傳播是計算損失函數對網絡中各層各個參數的梯度,從輸出層向輸入層逐層傳播梯度的過程。我們的目的就是讓損失函數盡可能地小,這樣預測值才會無限逼近真實值,怎樣讓損失函數盡可能地小?求導求梯度,利用梯度下降法,沿著損失函數梯度的負方向更新網絡參數,以減小損失函數的值。?????????
3.1 計算輸出層的梯度
首先計算輸出層的梯度,即損失函數對輸出的梯度。其實這里我們說的梯度就是公式里分母對分子的影響程度:
3.2 播梯度至隱藏層
利用鏈式法則,將輸出層的梯度向后傳播至隱藏層,計算隱藏層的梯度:
?損失?隱藏層輸出=?損失?輸出×?輸出?隱藏層輸出
3.3 計算參數梯度
根據隱藏層的梯度,計算網絡中所有參數的梯度,包括權重和偏置項。以權重為例,梯度的計算方式如下:
?損失?權重=?損失?隱藏層輸出×?隱藏層輸出?權重
?4. 參數更新
利用計算得到的參數梯度,使用梯度下降等優化算法更新網絡參數,減小損失函數的值,使得模型更加接近真實數據分布。
新參數=舊參數?學習率×參數梯度
其中,學習率(Learning Rate)是一個超參數,控制每次更新的步長,避免更新過大或過小。學習率過大可能直接跨過梯度最低點,學習率過小迭代次數又會過多影響學習效率。?
5. 重復迭代
以上步驟構成了一次迭代。重復進行多次迭代,直到損失函數收斂或達到預設的停止條件,訓練過程結束。
本文轉載自???人工智能訓練營??,作者:小A學習
