基于Matlab平臺(tái)的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)擬合

上次討論了基于Hopfield神經(jīng)網(wǎng)絡(luò)的數(shù)字識(shí)別,BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)也可以進(jìn)行相關(guān)的數(shù)字識(shí)別如手寫數(shù)字識(shí)別等,由于BP神經(jīng)網(wǎng)絡(luò)的特性,該網(wǎng)絡(luò)需要一定的樣本進(jìn)行對網(wǎng)絡(luò)進(jìn)行訓(xùn)練、測試以及校驗(yàn)。本次不再贅述數(shù)字識(shí)別,而是將目光集中于基于BP神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)擬合。

本次所采用的神經(jīng)網(wǎng)絡(luò)為BP神經(jīng)網(wǎng)絡(luò),是一個(gè)誤差反向傳播訓(xùn)練(Error Back Propagation Training)的多層前饋網(wǎng)絡(luò),主要包含輸入層、隱含層和輸出層。數(shù)據(jù)由輸入層輸入,經(jīng)過標(biāo)準(zhǔn)化處理后,傳到第二層即隱含層,隱含層進(jìn)行輸入數(shù)據(jù)的權(quán)值計(jì)算、轉(zhuǎn)換,然后傳輸?shù)捷敵鰧樱敵鰧訉⒔o出神經(jīng)網(wǎng)絡(luò)的預(yù)測值。 由于人工神經(jīng)網(wǎng)絡(luò)不需要事先給定輸入量與輸出量之間的映射關(guān)系,BP網(wǎng)絡(luò)需要通過范例進(jìn)行學(xué)習(xí)。因此,給定一個(gè)包含了輸入量樣本以及已知的正確輸出量樣本是必須的。利用給定的示例,BP神經(jīng)網(wǎng)絡(luò)可以得知什么是所期望達(dá)到的行為并且BP算法也能支持網(wǎng)絡(luò)進(jìn)行調(diào)整來達(dá)到預(yù)期。

BP網(wǎng)絡(luò)包含正向計(jì)算和反向計(jì)算兩個(gè)過程,其學(xué)習(xí)過程是通過循環(huán)步驟來實(shí)現(xiàn)的。當(dāng)接收到范例時(shí),該網(wǎng)絡(luò)會(huì)先進(jìn)行正向計(jì)算過程,隨機(jī)輸出一些數(shù)據(jù)。這個(gè)輸出的結(jié)果將會(huì)與已知的正確樣本進(jìn)行比較,然后一個(gè)含有其均方誤差的信號將會(huì)通過建立的神經(jīng)網(wǎng)絡(luò)進(jìn)行反向傳遞。隱含層接收到信號后,會(huì)“分?jǐn)偂苯o各個(gè)神經(jīng)單元,每個(gè)單元的權(quán)值因此將根據(jù)接收到的誤差進(jìn)行相應(yīng)的調(diào)整。這個(gè)過程將會(huì)不斷循環(huán),直到誤差達(dá)到規(guī)定的閾值或完成了規(guī)定的學(xué)習(xí)次數(shù)而停止。此時(shí)該神經(jīng)網(wǎng)絡(luò)被認(rèn)為已經(jīng)學(xué)習(xí)成功,完成了訓(xùn)練過程。BP神經(jīng)網(wǎng)絡(luò)仿真雖然無法達(dá)到最理想的功能,但是其結(jié)果已經(jīng)接近了完美。

在BP算法中采用的激活函數(shù)是S型(Sigmoid)函數(shù),該函數(shù)應(yīng)用于隱含層的輸出中。S函數(shù)有效地將非線性變化引入到了神經(jīng)網(wǎng)絡(luò)中,使得每一層權(quán)值得變化呈現(xiàn)非線性趨勢而不是直接承接上一層的線性變化輸出結(jié)果。此外,S型函數(shù)具有將小信號放大、大信號縮小的特征,可以保證輸出結(jié)果在(0,1)之間,如下圖所示。然而在輸出層中,需要直接保障輸出端能接收到輸出層輸出的任何值,故采用線性函數(shù)。該特征也將在MATLAB生成網(wǎng)絡(luò)結(jié)構(gòu)視圖中體現(xiàn)。

       

1.jpg

                                                                圖1. Sigmoid函數(shù)曲線示意圖

現(xiàn)在開始使用MATLAB中的函數(shù)feedforwardnet創(chuàng)建BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。如圖2所示,綠色圖標(biāo)代表的輸入端(Input)和輸出端(Output)各為1個(gè),藍(lán)色圖標(biāo)代表著隱含層和輸出層。其中20代表著隱含層神經(jīng)元數(shù)為20,1指代輸出層只有一個(gè)神經(jīng)元。代表隱含層的方框中其中一個(gè)含有S曲線的圖標(biāo)指激活函數(shù)為S函數(shù),輸出層中的直線代表著輸出層使用的線性函數(shù)。此外,w指權(quán)值(weight,b為偏置(bias)。

2.jpg

基于Matlab平臺(tái)的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)擬合的圖3

                                                             圖2. 創(chuàng)建BP網(wǎng)絡(luò)視圖

 本次神經(jīng)網(wǎng)絡(luò)的訓(xùn)練方法采用默認(rèn)的Levenberg-Marquardt方法,誤差指標(biāo)為均方差(MSE),設(shè)置的訓(xùn)練次數(shù)為1000次,期望達(dá)到的誤差目標(biāo)為10-10。訓(xùn)練結(jié)果完成的示意圖如圖3所示。在進(jìn)展(Progress)項(xiàng)中,Epoch為訓(xùn)練次數(shù),綠色指標(biāo)顯示1000 iterations意為已經(jīng)完成了設(shè)置的1000次循環(huán)。性能指(Performance)為均方差中的最大值,藍(lán)色精度條顯示地為當(dāng)前均方差,當(dāng)該值小于設(shè)定的指標(biāo)時(shí),則停止訓(xùn)練。和性能指一樣,當(dāng)梯度值(Gradient)小于目標(biāo)值時(shí),也會(huì)停止訓(xùn)練。泛化能力檢查(Validation Checks)在訓(xùn)練中始終為0,這個(gè)是指在訓(xùn)練過程中沒有出現(xiàn)過誤差不降反升的情況,如果超過6次誤差不降反升,為防止出現(xiàn)過度擬合的情況,訓(xùn)練將會(huì)強(qiáng)行停止。

訓(xùn)練過程中生成的訓(xùn)練結(jié)果可以繪出如回歸線圖、性能指圖等來體現(xiàn)該次訓(xùn)練的特征,以及為輸出的擬合結(jié)果提供判斷可靠性的有力佐證。當(dāng)回歸率R越接近于1時(shí),則證明數(shù)據(jù)擬合效果越好。

基于Matlab平臺(tái)的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)擬合的圖4

3.jpg

基于Matlab平臺(tái)的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)擬合的圖6

                                                              圖3. 訓(xùn)練結(jié)果信息圖

本次數(shù)據(jù)擬合的結(jié)果如圖4所示,采用的樣本數(shù)據(jù)為MATLAB自帶的數(shù)據(jù)庫(simplefit_dataset),可以看出擬合曲線與樣本值的趨勢完美重合。不同于Hopfield神經(jīng)網(wǎng)絡(luò)輸出結(jié)果的不穩(wěn)定性,BP神經(jīng)網(wǎng)絡(luò)每次訓(xùn)練的迭代過程中產(chǎn)生的誤差以及權(quán)值等會(huì)變化但是輸出結(jié)果總是可靠的。除了使用MATLAB自帶的數(shù)據(jù)庫進(jìn)行數(shù)據(jù)擬合測試外,也可以自己創(chuàng)建樣本矢量,進(jìn)行對多項(xiàng)式、正余弦函數(shù)以及其他函數(shù)映射等的數(shù)據(jù)擬合分析。

4.jpg

                                                               圖4. 數(shù)據(jù)擬合結(jié)果

最后,有機(jī)器學(xué)習(xí)相關(guān)需求,歡迎通過微信公眾號聯(lián)系我們。

微信公眾號:320科技工作室。

 

登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP

4
3
6