神经网络的反向传播推导实例
假設(shè),你有這樣一個(gè)網(wǎng)絡(luò)層:
第一層是輸入層,包含兩個(gè)神經(jīng)元i1,i2,和截距項(xiàng)b1;第二層是隱含層,包含兩個(gè)神經(jīng)元h1,h2和截距項(xiàng)b2,第三層是輸出o1,o2,每條線上標(biāo)的wi是層與層之間連接的權(quán)重,激活函數(shù)我們默認(rèn)為sigmoid函數(shù)。
現(xiàn)在對(duì)他們賦上初值,如下圖:
其中,輸入數(shù)據(jù) ?i1=0.05,i2=0.10;
輸出數(shù)據(jù) o1=0.01,o2=0.99;
初始權(quán)重 ?w1=0.15,w2=0.20,w3=0.25,w4=0.30;
?w5=0.40,w6=0.45,w7=0.50,w8=0.55
? ? ? ? ? ? ? ? ? ? 偏置b1=0.35,b2=0.6
目標(biāo):給出輸入數(shù)據(jù)i1,i2(0.05和0.10),使輸出盡可能與原始輸出o1,o2(0.01和0.99)接近。
?
Step 1 前向傳播
1.輸入層---->隱含層:
計(jì)算神經(jīng)元h1的輸入加權(quán)和:
神經(jīng)元h1的輸出o1:(此處用到激活函數(shù)為sigmoid函數(shù)):
同理,可計(jì)算出神經(jīng)元h2的輸出o2:
2.隱含層---->輸出層:
計(jì)算輸出層神經(jīng)元o1和o2的值:
這樣前向傳播的過程就結(jié)束了,我們得到輸出值為[0.75136079 , 0.772928465],與實(shí)際值[0.01 , 0.99]相差還很遠(yuǎn),現(xiàn)在我們對(duì)誤差進(jìn)行反向傳播,更新權(quán)值,重新計(jì)算輸出。
Step 2 反向傳播
1.計(jì)算總誤差
總誤差:(square error)
但是有兩個(gè)輸出,所以分別計(jì)算o1和o2的誤差,總誤差為兩者之和:
?
2.隱含層---->輸出層的權(quán)值更新:
以權(quán)重參數(shù)w5為例,如果我們想知道w5對(duì)整體誤差產(chǎn)生了多少影響,可以用整體誤差對(duì)w5求偏導(dǎo)求出:(鏈?zhǔn)椒▌t)
下面的圖可以更直觀的看清楚誤差是怎樣反向傳播的:
現(xiàn)在我們來分別計(jì)算每個(gè)式子的值:
計(jì)算:
計(jì)算:
(這一步實(shí)際上就是對(duì)sigmoid函數(shù)求導(dǎo),比較簡(jiǎn)單,可以自己推導(dǎo)一下)
計(jì)算:
最后三者相乘:
這樣我們就計(jì)算出整體誤差E(total)對(duì)w5的偏導(dǎo)值。
回過頭來再看看上面的公式,我們發(fā)現(xiàn):
為了表達(dá)方便,用來表示輸出層的誤差:
因此,整體誤差E(total)對(duì)w5的偏導(dǎo)公式可以寫成:
如果輸出層誤差計(jì)為負(fù)的話,也可以寫成:
最后我們來更新w5的值:
(其中,是學(xué)習(xí)速率,這里我們?nèi)?.5)
同理,可更新w6,w7,w8:
3.隱含層---->隱含層的權(quán)值更新:
方法其實(shí)與上面說的差不多,但是有個(gè)地方需要變一下,在上文計(jì)算總誤差對(duì)w5的偏導(dǎo)時(shí),是從out(o1)---->net(o1)---->w5,但是在隱含層之間的權(quán)值更新時(shí),是out(h1)---->net(h1)---->w1,而out(h1)會(huì)接受E(o1)和E(o2)兩個(gè)地方傳來的誤差,所以這個(gè)地方兩個(gè)都要計(jì)算。
?
?
計(jì)算:
先計(jì)算:
同理,計(jì)算出:
兩者相加得到總值:
再計(jì)算:
再計(jì)算:
最后,三者相乘:
?為了簡(jiǎn)化公式,用sigma(h1)表示隱含層單元h1的誤差:
最后,更新w1的權(quán)值:
同理,額可更新w2,w3,w4的權(quán)值:
?
這樣誤差反向傳播法就完成了,最后我們?cè)侔迅碌臋?quán)值重新計(jì)算,不停地迭代,在這個(gè)例子中第一次迭代之后,總誤差E(total)由0.298371109下降至0.291027924。迭代10000次后,總誤差為0.000035085,輸出為[0.015912196,0.984065734](原輸入為[0.01,0.99]),證明效果還是不錯(cuò)的。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的神经网络的反向传播推导实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tf.sequence_mask
- 下一篇: 数字图像处理:图像的频域