冒泡~周末愉快鴨渴杆!
反向傳播算法(BackPropagation)
概念
1.什么是BP 算法?
BP算法全稱叫作誤差反向傳播(error Back Propagation宪塔,或者也叫作誤差逆?zhèn)鞑?算法磁奖。BP神經(jīng)網(wǎng)絡(luò)是由一個輸入層、一個輸出層和一個或多個隱層構(gòu)成的某筐,它的激活函數(shù)采用sigmoid函數(shù)比搭。在這其中,輸入信號經(jīng)輸入層輸入南誊,通過隱層計算由輸出層輸出身诺,輸出值與標記值比較蜜托,若有誤差,將誤差反向由輸出層向輸入層傳播戚长,在這個過程中盗冷,利用梯度下降算法對神經(jīng)元權(quán)值進行調(diào)整。
2.為什么要使用BP算法同廉?直接使用梯度下降不行嗎仪糖?
不行的,縱然梯度下降神通廣大迫肖,卻不是萬能的锅劝。梯度下降可以應(yīng)對帶有明確求導(dǎo)函數(shù)的情況,或者說可以應(yīng)對那些可以求出誤差的情況蟆湖,比如邏輯回歸故爵,我們可以把它看做沒有隱層的網(wǎng)絡(luò);但對于多隱層的神經(jīng)網(wǎng)絡(luò)隅津,輸出層可以直接求出誤差來更新參數(shù)诬垂,但其中隱層的誤差是不存在的,因此不能對它直接應(yīng)用梯度下降伦仍,而是先將誤差反向傳播至隱層结窘,然后再應(yīng)用梯度下降,其中將誤差從末層往前傳遞的過程需要鏈式法則(Chain Rule)的幫助充蓝,因此反向傳播算法可以說是梯度下降在鏈式法則中的應(yīng)用隧枫。
舉個例子:
如下圖所示,這是帶有一個隱層的三層神經(jīng)網(wǎng)絡(luò)谓苟,
-小女孩→隱藏層節(jié)點
-小黃帽→輸出層節(jié)點
-哆啦A夢→誤差
小女孩左側(cè)接受輸入信號官脓,經(jīng)過隱層節(jié)點產(chǎn)生輸出結(jié)果,哆啦A夢則指導(dǎo)參數(shù)往更優(yōu)的方向調(diào)整涝焙。由于哆啦A夢可以直接將誤差反饋給小黃帽卑笨,所以與小黃帽直接相連的左側(cè)參數(shù)矩陣可以直接通過誤差進行參數(shù)優(yōu)化(實縱線);而與小女孩直接相連的左側(cè)參數(shù)矩陣由于不能得到哆啦A夢的直接反饋而不能直接被優(yōu)化(虛棕線)纱皆。但由于反向傳播算法使得哆啦A夢的反饋可以被傳遞到小女孩那進而產(chǎn)生間接誤差湾趾,所以與小女孩直接相連的左側(cè)權(quán)重矩陣可以通過間接誤差得到權(quán)重更新,迭代幾輪派草,誤差會降低到最小搀缠。(也就是說小男孩得到的是直接誤差,小女孩是間接誤差)
具體過程
接下來將用例子演示整個過程
假設(shè)有下圖這樣一個帶權(quán)值的網(wǎng)絡(luò)層近迁,第一層是輸入層艺普,包含兩個神經(jīng)元i1,i2,和截距項b1歧譬;第二層是隱含層岸浑,包含兩個神經(jīng)元h1,h2和截距項b2,第三層是輸出o1,o2瑰步,每條線上標的wi是層與層之間連接的權(quán)重矢洲,激活函數(shù)我們默認為sigmoid函數(shù)。
輸入數(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
目標:給出輸入數(shù)據(jù)i1,i2(0.05和0.10)读虏,使輸出盡可能與原始輸出o1,o2(0.01和0.99)接近。
步驟一:前向傳播
通過前向傳播我們得到輸出值為[0.75136079 , 0.772928465]袁滥,與實際值[0.01 , 0.99]相差還很遠盖桥,接下來我們對誤差進行反向傳播,更新權(quán)值题翻,重新計算輸出揩徊。
步驟二:反向傳播
進行完這一小步之后,需要先引入一個概念:鏈式法則
補充:
3.輸入層---->隱含層的權(quán)值更新:
在上文計算總誤差對w5的偏導(dǎo)時塑荒,是從out(o1)---->net(o1)---->w5,但是在隱含層之間的權(quán)值更新時,是out(h1)---->net(h1)---->w1,而out(h1)會接受E(o1)和E(o2)兩個地方傳來的誤差姜挺,所以這個地方兩個都要計算袜炕。
進入計算:
此過程具體參考感謝(https://www.cnblogs.com/charlotte77/p/5629865.html)
總結(jié)
根據(jù)BP算法的過程演示,可以得到BP算法的一般過程:
1. 正向傳播FP(求損失)
此過程中赏参,我們根據(jù)輸入的樣本志笼、給定的初始化權(quán)重值W和偏置項的值b, 計算最終輸出值以及輸出值與實際值之間的損失值。(注意:如果損失值不在給定的范圍內(nèi)則進行接下來反向傳播的過程把篓, 否則停止W,b的更新纫溃。)
2.反向傳播BP(回傳誤差)
將輸出以某種形式通過隱層向輸入層逐層反傳,并將誤差分攤給各層的所有單元,從而獲得各層單元的誤差信號,此誤差信號即作為修正各單元權(quán)值的依據(jù)韧掩。(主要為: ①隱層到輸出層的參數(shù)W的更新 ②從輸入層到隱層的參數(shù)W的更新紊浩。)
Ending~理解計算和公式還是很重要的鴨!