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