零基礎 看懂神經網路中的反向傳播

2022-02-05 21:07:58 字數 2454 閱讀 5677

一、序言

反向傳播在神經網路中用於優化權重w和閾值b,是神經網路優化的核心演算法。經過數日的學習終於看明白了一點反向傳播的原理,這裡作文記錄心得。

本文先介紹一下基本的數學計算方法,然後根據「損失計算公式」推導出優化引數的反向傳播方法。

二、基本數學原理

神經網路中優化引數w、b的方法稱為反向傳播,反向傳播的具體實施方法稱為「梯度下降」,梯度下降涉及兩個基本的數學知識:求導、鏈式法則。

1)求導

假設有以下式:

上式對x求導:

例項:

2)鏈式法則

鏈式法則的意義在於將z對x的求導轉化為z對y的求導和y對x的求導,示例如下:

求y對z的導數

已知:

所以:

3)求導的數學意義

如上圖所示,y對於x的導數本質上是求得x0處的斜率,若我們將x0增大一點點δx,就可求得y軸上增大了多少δy:

δy = δx*(x0處的斜率)

若我們想讓y值趨向於最小,可以用y減去δy:

y = y0-δy = y0-δx*(x0處的斜率)

其中y0、δx、x0處的斜率都是已知的,我們就可以逐步趨近最小的y值。需要注意的是δy只是乙個近似的y軸增大量,不是實際的,但我們可以通過這個方法不斷「逼近」y 的最小值。

三、損失計算

考慮乙個簡單的傳播函式:

y = wx + b

其中w是權重、b是閾值、x是輸入、y是**輸出,我們可以用**輸出減去實際輸出得到損失(**與實際之間的差異):

實際操作中我們會取誤差的平方,因為平方差使得匯出回歸線更容易。只是為了降低運算難度,使用誤差或誤差的平方來衡量損失本質上沒有區別。

實際使用時,y其實是個常數(label值),引入傳播函式(y撇)=wx+b

cost = (wx+b - y)^2

四、梯度下降

看上面的損失計算公式,會發現其實它是個拋物線,可以簡化為y = x^2:

讓**結果趨向於實際結果,本質上就是要找到乙個最小的cost,也就是使上圖中y趨向於0。有一點需要注意的是,在下式中:

cost = (wx+b - y)^2

我們期望的是找到乙個最佳的w和b來求得最小的cost,其中x和y其實都是已知的。所以我們是對w和b求導求得δw和δb。為便於計算,我們可以做以下變化:

根據鏈式法則,我們就可以得到:

所以δw = 2*error*x

類似地可以推導出δb=2*error

在實際使用時,error值、x值都是已知的所以我們可以求得δw和δb

上述反向傳播的實現**中,img即是x,y-label即是error,除以m是因為實際操作時是一次對m個進行處理,這裡求dw、db時需要取平均值所以除以m。其次實際**中我們把δw = 2*error*x的常數2忽略了,對實際操作沒有影響。

五、總結

最後在優化引數時,我們會用δw和δb乘以乙個非常小的浮點數如0.001稱為步幅(learning rate),再用w-δw、b-δb。所以本質上來說δw和δb只是指明了梯度下降的方向,比如在下面的函式圖形中,在x軸左側應當增大x值,在x軸右側則應該減小x值,我們通過斜率就可以知道具體應該減少還是增大了。

神經網路反向傳播理解

訓練神經網路的目標是 優化代價函式,使得代價函式找到乙個 全域性最小值或者區域性最小值。不管使用何種梯度下降演算法 bgd,sgd adam 都需要先算出各個引數的梯度。反向傳播的作用 就是快速算出所有引數的偏導數。求導數通常可以分為兩類,一類是直接用定義,第二類是公式法 包括鏈式法 定義法 定義法...

神經網路的正向傳播和反向傳播

顧名思義全連線神經網路便是指相鄰網路層的各神經元是全連線的,如下圖 xi 代表輸入層第i個資料 wmn jw j wmnj 代表j層第m位置和j 1層第n位置間的權重,j是第幾層網路 zij z i j zij 代表神經元的輸入和,yij y i j yij 代表第j隱藏層第i個神經元的輸出 k j...

卷積神經網路反向傳播推導

以tensorflow的卷積神經網路為例 卷積 池 卷積 池 全連線 softmax c1層 卷積神經網路的輸入是28 28的矩陣 a 經過f1 個5 5的卷積核k1 i i 1,2,f1 的卷積生成f1 個24 24大小的feature maps c1 i co nv2 a,k1 i,v alid...