天天看點

[學習筆記]BP神經網絡原理以及訓練步驟

[學習筆記]BP神經網絡原理以及訓練步驟

神經網絡由三層組成,分别是輸入層,輸出層和隐蔽層。根據需要,隐蔽層可以是一層,二層或者三層。一般來說,使用一層隐蔽層,以及輸出層使用非線性函數已經可以适用絕大數問題。多加一層隐蔽層并不會帶來結果上的明顯改進,反而會加大訓練的時間。

以下的公式均假設在BP網絡中使用logistic激活函數,輸出層也使用該激活函數。

[學習筆記]BP神經網絡原理以及訓練步驟
[學習筆記]BP神經網絡原理以及訓練步驟
[學習筆記]BP神經網絡原理以及訓練步驟

連接配接的權值:相鄰兩層節點的單元均互相連接配接。即前一層中的每一個單元均和(且隻和)後一層網絡中的每一個單元相連接配接,且該權重一般初始化為[-0.1,0.1]之間的一個随機小數,用Wij表示,即前一層的節點i與後一層的節點j之間相連接配接的權值。

輸入層:輸入層的個數以及輸入值的形式可以根據訓練資料的形式自定義。比如當輸入一個10乘以10像素的圖像時,可以定義100個輸入點,每個輸入點對應于一個像素點的值,該值可以是經過MAX-MIN歸一化後的數值。輸入層的輸出O即是他的輸入,該層網絡上不做任何計算。

隐蔽層與輸出層:隐蔽層和輸出層中每個節點均有一個門檻值,以及一個激活函數,假設均為logistic函數。隐蔽層和輸出層的淨輸入I均等于前一層的輸出Q分别乘以相連的權值,再加上該單元的門檻值,而該層的輸出則是通過計算産生的,計算方法如下:

對于本層(隐蔽層或者輸出層)中的單元j,它的淨輸入等于前一層網絡中,所有單元的輸出乘以該條連接配接權重的和,再加上單元j的門檻值。故單元j的淨輸入可以表示為:

[學習筆記]BP神經網絡原理以及訓練步驟
[學習筆記]BP神經網絡原理以及訓練步驟

而計算淨輸入之後,該層的輸出等于将logistic函數作用于淨輸入之上,即單元j的輸出為:

[學習筆記]BP神經網絡原理以及訓練步驟
[學習筆記]BP神經網絡原理以及訓練步驟

之後,該輸出繼續作為下一層網絡的輸入處理。如果目前該層網絡是輸出層,則該值就是網絡最後的輸出值。

後向誤差傳播:

通過更新權值和每個單元的門檻值,來修正目前的網絡。

對于輸出層的單元j,誤差ERROR(j)用下式計算:

[學習筆記]BP神經網絡原理以及訓練步驟
[學習筆記]BP神經網絡原理以及訓練步驟

其中,Oj是該輸出單元的實際輸出,而Tj則是預期輸出(即樣本點的實際值)。

對于隐蔽層的單元j,誤差的計算方式略有所不同,該值是

[學習筆記]BP神經網絡原理以及訓練步驟
[學習筆記]BP神經網絡原理以及訓練步驟

其中,Wkj是由下一層較高層中的單元K到單元J的連接配接權值,而ERR(k)是單元K的誤差。

是以,當計算誤差的時候,我們需要反向傳播,即先計算較高層的誤差,再計算前一層的誤差。

計算完誤差之後,需要更新權值和門檻值,該權值的改變如下:

[學習筆記]BP神經網絡原理以及訓練步驟
[學習筆記]BP神經網絡原理以及訓練步驟
[學習筆記]BP神經網絡原理以及訓練步驟
[學習筆記]BP神經網絡原理以及訓練步驟

(請注意下标)

參數l表示學習速率,一般也為(0,1)之間的一個小數。不過,該數不是随機産生的,而是指定的。

門檻值的更新如下:

[學習筆記]BP神經網絡原理以及訓練步驟
[學習筆記]BP神經網絡原理以及訓練步驟
[學習筆記]BP神經網絡原理以及訓練步驟
[學習筆記]BP神經網絡原理以及訓練步驟

網絡停止訓練的條件:

1前一周期的所有改變量均太小,小于某個指定的門檻值;

2前一周期未正确分類的樣本百分比小于某個門檻值;

3超過預先指定的周期數。

經常,網絡的收斂是不明顯的,而且往往也不知道目前網絡是否已經達到最優的狀态。是以,判斷是否停止疊代,往往采用一個更一般的做法:

将資料集分為3個獨立的資料集,訓練集,測試集,驗證集,分别為原始樣本的70% 15% 15%。網絡的訓練用訓練集,每當疊代到一定次數後(比如100次),均用測試集去測試目前網絡的誤差和。然後,我們選取誤差最小的那個網絡作為我們最終的網絡,而最後的驗證則通過驗證集去測試,即最後的測試結果。

繼續閱讀