機器學習 神經網路及BP推導

2021-08-10 07:15:57 字數 2253 閱讀 7789

參考

這裡的推導都用矩陣和向量的形式,計算單個變數寫起來太麻煩。矩陣、向量求導可參見上面參考的部落格,個人覺得解釋得很直接很好。

前向傳播每一層的計算如下:z(

l+1)

=w(l

,l+1

)a(l

)+b(

l,l+

1)(1.1) a

(l+1

)=f(

z(l+

1))(1.2) f

是啟用函式。一般有sigmoid、tanh、relu等。

為了得到好的模型,我們要更新引數 w,

b,這裡就用到了反向傳播。

我們將神經網路的損失函式記為 j(

w,b)

,這裡的 w,

b 是指網路中所有的引數。損失函式可以是均方誤差、交叉熵等等。總之是衡量網路輸出的結果與真實標記之間的差異。

之後,就要計算 j(

w,b)

對每一層 w,

b 的梯度,對 w,

b 進行更新。所有引數更新完成後,再進行前向傳播。迴圈往復,直到達到要求為止。

反向傳播之所以和正向傳播這麼對比著說,是因為反向傳播也是一層一層地計算。首先看最後一層(假設最後一層沒有啟用):∂j

∂w(n

−1,n

)=∂j

∂z(n

)∂z(

n)∂w

(n−1

,n)(2.1) ∂

j∂b(

n−1,

n)=∂

j∂z(

n)∂z

(n)∂

b(n−

1,n)

(2.2)

我們記: δ(

n)=∂

j∂z(

n)(2.3)

通過(1.1)和(1.2)我們可以得出:∂z

(n)∂

w(n−

1,n)

=a(n

−1)(2.4) ∂

z(n)

∂b(n

−1,n

)=1(2.5)

將(2.3)-(2.5)代入(2.1)、(2.2)得:∂j

∂w(n

−1,n

)=δ(

n)a(

n−1)

t(2.6) ∂

j∂b(

n−1,

n)=δ

(n)(2.7)

下面我們看倒數第二層:∂j

∂w(n

−2,n

−1)=

∂j∂z

(n−1

)∂z(

n−1)

∂w(n

−2,n

−1)=

δ(n−

1)a(

n−2)

t(2.8) ∂

j∂b(

n−2,

n−1)

=∂j∂

z(n−

1)∂z

(n−1

)∂b(

n−2,

n−1)

=δ(n

−1)(2.9)

觀察(2.6)-(2.9)可以發現,形式都是相同的,所以問題就是, δ(

n−1)

怎麼求。還是用鏈式法則:δ(

n−1)

=∂j∂

z(n−

1)=∂

j∂z(

n)∂z

(n)∂

a(n−

1)∂a

(n−1

)∂z(

n−1)

=w(n

−1,n

)tδ(

n)⋅f

′(z(

n−1)

)(2.10)

由(2.10)可以看出,粉色部分是上輪更新後固定的,藍色部分是反向傳播時上一層計算好的,只有本層的棕色部分需要計算。

這樣,一層接著一層,直到將所有的 ∂j

∂w,∂

j∂b 都計算完畢,用負梯度更新所有的引數。再正向傳播,再反向傳播……迴圈……直到達到要求。

同時也可以看出,在計算梯度的時候,(2.10)中棕色的部分是導數,如果這個導數部分過大,則會產生所謂的「梯度**」的問題,如果過小,則會出現「梯度瀰散」的問題。比如

f 取 sigmoid函式,其導數值最大是0.25,如果網路很深,那導數項連乘,就會使得梯度變得很小,引數更新不動,這就是梯度瀰散。

BP神經網路模型及演算法推導

一,什麼是bp bp back propagation 網路是1986年由rumelhart和mccelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。bp網路能學習和存貯大量的輸入 輸出模式對映關係,而無需事前揭示描述這種對映關係的數學...

BP神經網路演算法推導

1 前饋神經網路 反饋神經網路 bp網路等,他們之間的關係 前饋型神經網路 取連續或離散變數,一般不考慮輸出與輸入在時間上的滯後效應,只表達輸出與輸入的對映關係 在此種神經網路中,各神經元從輸入層開始,接收前一級輸入,並輸入到下一級,直至輸出層。整個網路中無反饋,可用乙個有向無環圖表示。常見的前饋神...

BP神經網路演算法推導

目錄正向計算 反向傳播 設損失函式為f vec 則f vec delta f vec nabla cdot delta 其中 nabla 是 f vec 的梯度 所以當 delta eta nabla f vec eta 0 時,下降速率最快 即 delta eta frac 設當前啟用函式為f x...