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