是誰在耳邊,說“信号正向傳播,誤差反向傳播” ?
夢回遙遠大三的計算智能課,三年前我可想不到居然有朝一日會重新"預習"它......
每一堂課、一本書,當時隻道是尋常,如今不經意想起,忽懷念這些瞬間。所謂成長,正是這些乏味卻又鮮活的瑣碎;所謂時光,正是這些不經意卻彌足深刻的隻言片語吧。
目錄
一. 相關概念
二. 神經網絡通用表示
1. 一個神經元模型
2. 全連接配接神經網絡
三. 前向傳播算法
四. 反向傳播算法
1. 采用批量梯度下降法獲得參數w和b的更新公式
2. 通過鍊式法則和殘差δ的定義求解代價函數的偏導
(1)對于輸出層(L層)的權重參數w的偏導
(2)對于隐藏層(l層)的權重參數w的偏導
(3)對輸出層和隐藏層的偏置參數b的偏導
(4)公式總結
3.對N個訓練樣本集用BP算法更新參數的步驟
一. 相關概念
後向傳播學習的前饋型神經網絡(Back Propagation Feed-forward Neural Network)簡稱BPNN,不嚴謹地說BP一般就是BPNN。後向傳播是一種學習方法、規則,展現網絡的訓練過程;前饋型網絡是一種結構,展現網絡架構。
後向傳播
回報型網絡。常見學習規則除了後向傳播還有梯度下降等。
- 前(正)向傳播網絡
- 後(反)向傳播網絡:反向傳播是指通過比較輸出層的實際輸出和預期的結果,得到誤差,然後通過相關的誤差方程式調整最後一個隐含層到輸出層之間的網絡權重,之後從最後一個隐含層向倒數第二隐含層進行誤差回報,調整它們之間的網絡權重,以此類推,直到輸人層與第一隐含層之間的網絡權重調整為止。
- 前饋型網絡:各神經元從輸入層開始單向傳播,隻接收前一級輸入,并輸出到下一級,直至輸出層。整個網絡中無回報,可用一個有向無環圖表示。
- 回報型網絡:輸出層中存在着一個回報回路到輸入層作為輸入層的一個輸入,也可以自己到自己,可以了解為自控系統方框圖中的回報回路,可用有向循環圖或者無向圖表示。
二. 神經網絡通用表示
1. 一個神經元模型
上圖x1,x2,⋯,xi,⋯,xn表示神經元的n個輸入,w1,w2,⋯,wi,⋯,wn表示對應輸入的權重參數(連結權重),神經元對輸入x權重w進行權重求和得到權重輸入z,也就是神經元的狀态。随後将z傳遞給激活函數f(⋅),得到激活值,對于單個神經元,也就是其輸出值y。其中激活函數f(⋅)可以為多種激活函數,且激活函數均為非線性函數。
2. 全連接配接神經網絡
- 在第 層神經元,用 表示這層神經元的個數, 。
- 為輸入,即 , 表示第 i 個輸入。
- 為期望輸出,即 , 表示第 i 個期望輸出。
- 表示第 層的權重輸出或神經元狀态, 表示第 層的第 個神經元的權重輸出。
- 表示第 層的激活輸出(實際輸出), 表示第 層的第 個神經元的激活輸出(實際輸出)。
- 是權重矩陣 中的元素,表示前一層 層第 個神經元的第 個權重
- 表示從上一層到目前層 層的偏置。 表示目前層第 層第 個神經元的偏置。
三. 前向傳播算法
第2層第1個權重輸出
第2層第1個激活值
⋯⋯
可總結出,第
層神經元的狀态及激活值為(z,a,b都是向量形式):
對于 L 層網絡,正向傳播的前饋型神經網絡傳遞過程如下:
前向傳播算法用于計算模型最終的輸出結果;後向傳播算法用于減小模型輸出結果與實際結果之前的誤差,通過調整參數權重來優化模型。是以,神經網絡,就是通過前向傳播與後向傳播算法的循環疊代來訓練模型,進而進行預測或者分類。
四. 反向傳播算法
1. 采用批量梯度下降法獲得參數 和 的更新公式
訓練方式為梯度下降法,目的是求使代價函數最小的參數值。具體方法為,一步步地循環重複将參數值更新為:上一次參數 - 代價函數對上一次參數值的導數。每一步更新都用到所有的訓練樣本叫做批量梯度下降。
- 用右上标 (k) 表示第 k 個訓練的訓練集,不表示網絡層數,那麼 個訓練集表示為 ,每個 和 都是向量表示。其中 。
- 對于第 k 個訓練樣本集的輸入,在第 層,用下标 i 表示第 i 個輸出 或期望輸出 ,其中 。 維實際輸出 , 維期望的輸出 。
對于第 k 個訓練資料
,訓練的誤差定義為,這一次的每個期望輸出
減去實際輸出
,再将這
個項求平方和。也就是說,單個訓練樣本的代價函數為:
N個樣本訓練完成之後,得到所有訓練樣本的總體(平均)代價為:
上标表示又回到第四節之前,
和
右上标
表示表示網絡層數,
仍表示為第 k 個訓練集。采用批量梯度下降算法,
層的參數
和
的更新公式為如下形式:
隻需通過BP算法求出每個訓練集的代價函數
對
和
的偏導數即可得到
和
的疊代更新公式。
2. 通過鍊式法則和殘差 的定義求解代價函數的偏導
右上标
表示表示網絡層數,并且去掉第四-1節第k個訓練資料集誤差
的上标,直接記為
,
是單個訓練資料集的誤差。
将E展開到 Layer2,有:
其中
(1)對于輸出層(L層)的權重參數w的偏導
E 對
求導,由鍊式法則形式1
,有:
E 對
求導,由鍊式法則形式2
,又有:
,即
其中,定義:
那麼,由
和
,得:
推廣到一般情況,設網絡層數為 L,有:
上兩式對應矩陣(向量形式)為:
其中矩陣哈德馬乘積
是對應位置元素分别相乘。
(2)對于隐藏層( 層)的權重參數w的偏導
由上一節,得:
向量形式為:
而由:
(
層的神經元每個
都與
有聯接,
出現了
次,每一次對應一個
)
故:
又因為其中
進而
,帶入
,得:
向量形式:
即利用
層的
來計算
層的
,稱為誤差反向傳播。
(3)對輸出層和隐藏層的偏置參數b的偏導 和
向量形式:
(4)公式總結
(其中
)
向量形式:
3.對N個訓練樣本集用BP算法更新參數的步驟
初始化參數
、
後
Step1. 根據樣本集的某個輸入樣本
,利用前向傳播算法算出每個神經元的輸出z和a,直到輸出層
Step2. 由BP算法4個公式求E對參數的偏導數
- 計算出輸出層的 (由[BP-1]),再依次計算隐藏層的 (由[BP-2])
- 然後:
Step3. 更新網絡權重和偏置
Step4. 判斷結束
對于一定的判斷結束的準則,比如每個樣本的最終輸出誤差小于可接受的範圍或疊代次數達到一定門檻值。若不滿足,疊代執行Step2、Step3繼續對目前樣本進行訓練,直到目前樣本滿足條件訓練結束。否則,目前樣本訓練完畢,選取下一樣本,轉到Step1繼續進行訓練。
如下圖所示:
參考:https://blog.csdn.net/qq_32865355/article/details/80260212