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