完美的解釋了BP神經網路,自己要通過演算法計算一下

2021-07-27 13:42:41 字數 3197 閱讀 5045

在學習深度學習相關知識,無疑都是從神經網路開始入手,在神經網路對引數的學習演算法bp演算法,接觸了很多次,每一次查詢資料學習,都有著似懂非懂的感覺,這次趁著思路比較清楚,也為了能夠讓一些像我一樣疲於各種查詢資料,卻依然懵懵懂懂的孩子們理解,參考了梁斌老師的部落格bp演算法**(error back-propagation)

(為了驗證梁老師的結果和自己是否正確,自己python實現的初始資料和梁老師定義為一樣!),進行了梳理和python**實現,一步一步的幫助大家理解bp演算法!

為了方便起見,這裡我定義了三層網路,輸入層(第0層),隱藏層(第1層),輸出層(第二層)。並且每個結點沒有偏置(有偏置原理完全一樣),啟用函式為sigmod函式(不同的啟用函式,求導不同),符號說明如下:

下面我們看如何反向傳播

根據公式,我們有:

(在這裡我們可以看到不同啟用函式求導是不同的,所謂的梯度消失,梯度**如果了解bp演算法的原理,也是非常容易理解的!)

同理有

到此我們已經算出了最後一層的引數偏導了.我們繼續往前面鏈式推導:

我們現在還需要求

則最終的結果為:

而這個值比原來的0.19要小,則繼續迭代,不斷修正權值,使得代價函式越來越小,**值不斷逼近0.5.我迭代了100次的結果,error為5.92944818e-07(已經很小了,說明**值與真實值非常接近了),最後的權值為:

好了,bp過程可能差不多就是這樣了,可能此文需要你以前接觸過bp演算法,只是還有疑惑,一步步推導後,會有較深的理解。

---------------------------------------2023年1月29日更新----------------------------------------

應大量知友要求,給出分享鏈結

i 密碼:e7do

下面給出我學習bp時候的好的部落格

backpropagation

(裡面的插圖非常棒,不過好像有點錯誤,歡迎討論~)

a neural network in 11 lines of python (part 1)

(非常贊的部落格,每個**一行一行解釋)

neural networks and deep learning

上面實現的python**如下:

import

numpy

asnp

defnonlin(x

,deriv

=false

):if

(deriv

==true

):returnx*

(1-x

)#如果deriv為true,求導數

return1/

(1+np

.exp(-

x))x=

np.array

([[0.35

],[0.9

]])#輸入層y=

np.array

([[0.5

]])#輸出值np.

random

.seed(1

)w0=np

.array

([[0.1

,0.8

],[0.4

,0.6

]])w1=np

.array

([[0.3

,0.9

]])print

'original ',w0

,'\n'

,w1forj

inxrange

(100

):l0=x

#相當於文章中x0l1=

nonlin(np

.dot(w0

,l0))#相當於文章中y1l2=

nonlin(np

.dot(w1

,l1))#相當於文章中y2

l2_error=y

-l2error=1

/2.0*(

y-l2)

**2print

"error:"

,error

l2_delta

=l2_error

*nonlin(l2

,deriv

=true

)#this will backpack

#print 'l2_delta=',l2_delta

l1_error

=l2_delta*w1

;#反向傳播

l1_delta

=l1_error

*nonlin(l1

,deriv

=true)w1

+=l2_delta*l1

.t;#修改權值

w0+=l0.

t.dot(

l1_delta

)printw0,

'\n',

w1

BP神經網路

基本bp神經網路演算法包括 訊號的前向傳播 誤差的反向傳播 也即計算實際輸出時按照輸入到輸出的方向進行,權值閾值調整則相反。bp是一種多層前饋神經網路,由輸入層 隱含層和輸出層組成。層與層之間有兩種訊號在流動 一種是從輸入流向輸出的工作訊號,是輸入和權值的函式 另一種是輸入流向輸出的訊號,即誤差。隱...

BP神經網路

x 為輸入向量,y為隱藏層的神經元,z 為輸出層,d為目標真實值,本文預設 z 不經過sigmod處理。x y的權重為 w,y z的權重為 v yj ix iwij 1 oyi f y j 2 其中激勵函式f x 1 1 e x f x f x 1 f x 3 z k j f yj vjk 此時系統...

BP神經網路

bp是back propagation bp神經網路主要的演算法在於誤差反向傳播error backpropagation 有三層 輸入層 input 隱含層 hidden 輸出層 output 輸入層 n個神經元 隱含層 p個神經元 輸出層 q個神經元 輸入向量 x x1,x2,x n 隱含層輸入...