BP算法基础与实现
1,內(nèi)容簡介
BP算法(backpropagation,反向傳播算法)的學(xué)習(xí)過程,由信息的正向傳播和誤差的反向傳播兩個過程組成。輸入層各神經(jīng)元介紹來自外界的輸入信息,并傳遞給中間層各神經(jīng)元。中間層是內(nèi)部信息處理層,負(fù)責(zé)信息變換,根據(jù)信息變化能力的需求,中間層可以設(shè)計為單隱層或多隱層結(jié)構(gòu)。最后一個隱層傳遞到輸出層各神經(jīng)元的信息,經(jīng)過進(jìn)一步處理后,完成一次正向的傳播過程,由輸出層向外界輸出信息處理的結(jié)果。當(dāng)實(shí)際輸出與期望輸出不同時,進(jìn)入誤差的反向傳播階段。誤差通過輸出層。按誤差梯度下降的方式修正各層權(quán)值,向隱層、輸入層、逐層反傳。周而復(fù)始的信息正向傳播和誤差反向傳播過程,是各層權(quán)值不斷調(diào)整的過程,也是神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)訓(xùn)練的過程,此過程一直進(jìn)行到網(wǎng)絡(luò)輸出的誤差減少到可以接受的程度或者預(yù)先設(shè)定的學(xué)習(xí)次數(shù)為止。
2,理論推導(dǎo)
上圖是一個簡單的三層(兩個隱藏層,一個輸出層)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),假設(shè)使用這個神經(jīng)網(wǎng)絡(luò)來解決二分類問題,給這個網(wǎng)絡(luò)一個輸入樣本(x1,x2) ,通過前向運(yùn)算得到輸出 。輸出值 的值域?yàn)閇0,1] ,例如 y的值越接近0,代表該樣本是“0”類的可能性越大,反之是“1”類的可能性大
2.1 前向傳播
為了便于理解后續(xù)的內(nèi)容,需要先搞清楚前向傳播的計算過程,以上圖所示的內(nèi)容為例,輸入的樣本為:
第一層網(wǎng)絡(luò)的參數(shù)為:
第二層網(wǎng)絡(luò)的參數(shù)為:
第三層網(wǎng)絡(luò)的參數(shù)為:
2.1.1 第一層隱藏層的計算
2.1.2第二層隱藏層的計算
2.1.3輸出層的計算
輸出只有一個神經(jīng)元neu6,該層的輸入為:
即:
因?yàn)樵摼W(wǎng)絡(luò)要解決二分類問題,所以輸出層的激活函數(shù)也可以用一個Sigmoid型函數(shù),神經(jīng)網(wǎng)絡(luò)最后的輸出為f6(z6).
2.1 反向傳播
2.2 計算偏導(dǎo)數(shù)
下面將實(shí)際數(shù)據(jù)代入上面的網(wǎng)絡(luò)模型中:
我們上面提到的簡單的神經(jīng)網(wǎng)絡(luò),其中所有參數(shù)的初始值如下:
輸入的樣本為(假設(shè)其真實(shí)類標(biāo)為“1”):
第一層網(wǎng)絡(luò)的參數(shù)為:
第二層網(wǎng)絡(luò)的參數(shù)為:
第三層網(wǎng)絡(luò)的參數(shù)為:
前向傳播:
我們首先初始化神經(jīng)網(wǎng)絡(luò)的參數(shù),計算第一層神經(jīng)元:
誤差反向傳播:
接著計算第二層隱藏層的誤差項(xiàng),根據(jù)誤差項(xiàng)的計算公式有:
最后是計算第一層隱藏層的誤差項(xiàng):
更新參數(shù):
上一小節(jié)中我們已經(jīng)計算出了每一層的誤差項(xiàng),現(xiàn)在我們要利用每一層的誤差項(xiàng)和梯度來更新每一層的參數(shù),權(quán)重W和偏置b的更新公式如下:
通常權(quán)重W的更新會加上一個正則化項(xiàng)來避免過擬合,這里為了簡化計算,我們省去了正則化項(xiàng)。上式中的a 是學(xué)習(xí)率,我們設(shè)其值為0.1。參數(shù)更新的計算相對簡單,每一層的計算方式都相同,因此僅演示第一層隱藏層的參數(shù)更新:
至此,我們已經(jīng)完整介紹了BP算法的原理,并使用具體的數(shù)值做了計算示例。
參考博文地址:https://blog.csdn.net/fendouaini/article/details/79789440
總結(jié)
- 上一篇: 街角的咖啡店是哪首歌啊?
- 下一篇: 常用的色彩空间简介