此時就出現了反向傳播這個過程。而配合反向傳播的就是梯度下降法了。
現在很多同學可能會很暈,當時我第一次看的時候也很暈。
為了容易理解梯度下降法,建議去看ng的斯坦福網課第二節,非常清楚。比我寫的清楚多了。
梯度下降法是求(區域性)最好的w。
設誤差函式為: j=
12(y
−o)2
=12(
y−f(
∑wix
i))2
y為實際結果,o為**結果。
設啟用函式f(x)為sigmoid函式,此時就可以很方便的求出其導數了(其他啟用函式也是一樣) f′
(x)=
f(x)
(1−f
(x))
所以我們要求的就是
j 最小的時候wi
的值。a
是變化的速率。下式就可以比作從山頂走到山底的過程,而
a表示行走的步長或者是速率。 wi
=wi−
a∂j∂
wi ∂
j∂wi
=(y−
o)∗f
′(σw
ixi)
)∗(σ
wixi
)′ =
(y−o
)∗f(
σwix
i)(1
−f(σ
wixi
))∗x
i 此時可以發現每一項都是可以求出的,則經過多次運算,可以求出好的wi
一般我們把前兩項作為 de
lta=
(y−o
)∗f(
σwix
i)(1
−f(σ
wixi
))此時我們可以發現 ∂j
∂wi=
後一層的delta
∗ 前一層的xi
。上邊介紹完了梯度下降,現在再說反向傳播理由。其實很簡單了。它用的就是鏈式法則。我們第一步是前向傳播,進行一系列運算得到了**結果o。為了使用梯度下降法,我們需要得到,上邊需要的delta,也就是說 j 這個誤差函式。因為實際結果我們知道,而啟用函式的導數我們也知道怎麼運算。所以我們得到**結果o時,delta就可以求出來。而delta屬於輸出層的運算,再乘以輸入層的xi就能得到
∂ wi,進一步更新wi。
很明顯可以看出整個一輪的運算是:
前向傳播:
輸入層—-w—》輸出層(sigmoid)—-》**結果
後向傳播:
誤差—》輸出層(sigmoid)求導—-》輸入層—–》更新wi
換句話說,bp演算法就是提供了給梯度下降法所需要的所有值。
由鏈式法則可知,如果網路層數為3層以上時也可以得到每層的delta。
用python**來說:
layer_n_delta = layer_n+1_delta.dot((w_n_n+1).t)
(w_n_n+1) += (xn).t.dot(layer_n+1_delta)
神經網路 梯度下降
優化問題newton s method 牛頓法 least squares method最小二乘法 gradient descent梯度下降法 當 cost對w的梯度最小 斜率最小 時,誤差最小。我們從圖中可以看出,cost 誤差最小的時候正是這條 cost 曲線最低的地方,不過在藍點的 w 卻不知...
BP神經網路(二) 為何梯度反方向函式下降
常看到很多地方說梯度的反方向是函式下降最快的方向,為何?這裡給出詳 細的解釋和理解過程。首先來說說梯度 梯度的本意是乙個向量 向量 表示某一函式在該點處的方向導數沿著某個方向可以使方向導數取得最大值,即函式在該點處沿著某方向 梯度的方向 變化最快,梯度的模為方向導數的最大值。沿某一方向變化,是用方向...
BP神經網路演算法
bp神經網路是一種基於有監督的學習,使用非線性可導函式作為傳遞函式的前饋神經網路。一 模型 bp神經網路由輸入層 隱含層 輸出層組成。訓練過程分為網路輸入訊號正向傳播和誤差訊號反向傳播,按有監督學習方式進行訓練。1 相鄰層之間結點的連線有乙個權重wij,其值在 1,1 之間 2 每乙個神經單元都有一...