論文學習:BP神經網絡

最近在學習 Long Short-Term Memery (LSTM)[1], 文獻中指出:通過遞歸反向傳播算法學習在長時間間隔內存儲信息需要花費很長的時間,這主要是由於不足、衰減的誤差反向流造成的(Learning to store information over extended time intervals via recurrent backpropagation takes a very long time, mostly due to insufficient, decaying error back flow.)。故先了解一下反向傳播算法。

一、原理

BP (back propagation)神經網絡是1986年由 Rumelhart 和 McClelland 爲首的科學家提出的概念,是一種按照誤差反向傳播算法訓練的多層前饋神經網絡(如圖1),是應用最廣泛的神經網絡。

圖1:前饋神經網絡:採用單向多層結構,分爲輸入層、隱藏層(一層或多層)和輸出層。
整個網絡中無反饋信號單向傳播。

人工神經網絡無需事先確定輸入輸出之間映射關係的數學方程(也就是連接權重 \omega _{ij} ),僅通過自身的訓練,學習某種規則,在給定輸入值時得到最接近期望輸出值的結果。作爲一種智能信息處理系統,人工神經網絡實現其功能的核心是算法。BP 神經網絡是一種按誤差反向傳播(簡稱誤差反傳)訓練的多層前饋網絡,其算法稱爲 BP 算法,它的基本思想是梯度下降法,利用梯度搜索技術,以期使網絡的實際輸出值和期望輸出值的誤差均方誤差(mean squared error)爲最小。

均方誤差

基本 BP 算法包括信號的前向傳播誤差的反向傳播兩個過程。即計算誤差輸出時按從輸入到輸出的方向進行,而調整權值和閾值則從輸出到輸入的方向進行。正向傳播時,輸入信號通過隱含層作用於輸出節點,經過非線性變換,產生輸出信號,若實際輸出與期望輸出不相符,則轉入誤差的反向傳播過程。誤差反向傳播是將輸出誤差通過隱含層向輸入層逐層反向傳播,並將誤差分攤給各層所有單元,以從各層獲得的誤差信號作爲調整各單元權值的依據。通過調整輸入節點與隱層節點的聯接強度和隱層節點與輸出節點的聯接強度以及閾值,使誤差沿梯度方向下降,經過反覆學習訓練,確定與最小誤差相對應的網絡參數(權值和閾值),訓練即告停止。此時經過訓練的神經網絡即能對類似樣本的輸入信息,自行處理輸出誤差最小的經過非線形轉換的信息[2]

二、詳述

(一)信號的前向傳播

圖2 [3]以輸入層 Input units(3個節點)、隱藏層 Hidden units H1(4個節點)、隱藏層 Hidden units H2(3個節點)和輸出層 Output units(2個節點)爲例,展示了信息的前向傳播。

圖2:信號的前向傳播

Hidden units H1 的輸入 Z_{j} 和激活 Y_{j} 是:

其中,\omega _{ij} 是輸入單元 i 到隱藏層 j 的權重矩陣,f(\cdot )=sigmoid(\cdot ) 是可微函數。

②Hidden units H2 的輸入 Z_{k} 和激活 Y_{k} 是:

 

同理,得到輸出層 l 的輸出 Y_{l} ,到此爲止信息的前向傳播已經完成。

(二)誤差的反向傳播

誤差的反向傳播是將輸出誤差通過隱含層向輸入層逐層反向傳播,並將誤差分攤給各層所有單元,以從各層獲得的誤差信號作爲調整各單元權值的依據。簡單地講就是,我們要根據每個節點對輸出誤差的“貢獻度”,來分攤誤差(貢獻度高的自然就要“承擔“更重的責任),並藉助於隨機梯度下降(SDG)方法來重新調整權重。

此處需要補充隨機梯度下降(SDG)!!!

繼圖2 給出的信息的前向傳播模型,我們這裏據需給出誤差的反向傳播模型,如圖3 。

圖3:誤差的反向傳播

首先我們得清楚一點,就是神經網絡中每個節點的處理邏輯(以 Hidden units H1 爲例,如圖2 所示):用可微函數 f(\cdot )=sigmoid(\cdot )Z_{j} 激活後得到 Y_{j} 。所以我們在誤差反向分析過程中,需要明確傳播順序。下面分別通過輸出層和隱藏層爲例,說明誤差傳播邏輯。

(1)輸出層

使用均方誤差來表述輸出層的誤差 E

①將誤差分攤到輸出節點 l 的輸出 Y_{l} 上:

②將誤差分攤到輸出節點 l 的輸入 Z_{l} 上:

③將誤差分攤到權重 \omega _{kl} 上:

 

(2)隱藏層

①將誤差分攤到隱藏節點 k 的輸出 Y_{k} 上:

 

②其他同輸出層方程相似。

三、示例

這裏通過一個簡單的神經網絡(圖4 )對 BP 進行演示。該模型對輸入 x, x\in [0, 1] 進行二分類,輸出l, l\in {0, 1}

圖4:1個輸入節點、兩個隱藏節點和兩個輸出節點

輸入 x=0.4 ,目標輸出 l=0 。初始化權重,令 \omega _{ih_{h}}=[0.2, 0.5]\omega _{h_{h}l_{l}}=[0.1, 0.7, 0.2, 0.5] ,偏項b_{n}=[0.05, 0.05]

(一)FP過程

①計算隱藏層

②計算輸出層

③均方誤差

(二)BP過程

這裏我們以更新權重 \omega _{h_{1}l_{1}} 爲例,簡述 BP 過程。

①計算 l_{1} 的均方誤差

②對 \omega _{h_{1}l_{1}} 求偏導

③對 \omega _{h_{1}l_{1}} 更新

同理,對其他權重進行修改,循環上訴過程,直到輸出值接近真值。

[1] Hochreiter, S, Schmidhuber, J. Long Short-Term Memory[J]. Neural Computation, 9(8):1735-1780.

[2] https://baike.baidu.com/item/BP神經網絡

[3] Lecun Y, Bengio Y, Hinton G. Deep learning.[J]. 2015, 521(7553):436.

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章