李 翔,朱全銀
(淮陰工學(xué)院計算機工程學(xué)院,江蘇 淮安223003)
反向傳播BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò),是目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)模型之一[1]。BP神經(jīng)網(wǎng)絡(luò)具有較高的預(yù)測精度、較好的通用性、較強的非線性映射能力等優(yōu)點。但是,BP神經(jīng)網(wǎng)絡(luò)也存在一些缺陷,主要表現(xiàn)為容易陷入局部極小值、算法收斂速度較慢、隱含單元的數(shù)目選擇尚無一般性指導(dǎo)原則、新加入的學(xué)習(xí)樣本對已學(xué)完樣本的學(xué)習(xí)結(jié)果影響較大等問題。
針對以上問題,提出了很多BP網(wǎng)絡(luò)改進方法。文獻[2,3]提出通過采用附加動量法和變學(xué)習(xí)率改進BP網(wǎng)絡(luò)。附加動量法有助于使網(wǎng)絡(luò)從誤差曲面的局部極小值中跳出,但對于絕大多數(shù)實際應(yīng)用問題,該方法訓(xùn)練速度仍然較慢。變學(xué)習(xí)率方法根據(jù)誤差變化自適應(yīng)調(diào)整,使權(quán)系數(shù)調(diào)整向誤差減少的方向變化,但該方法仍然存在權(quán)值修正量較小的問題,導(dǎo)致學(xué)習(xí)率降低。文獻[4,5]提出使用粒子群算法優(yōu)化BP網(wǎng)絡(luò),使網(wǎng)絡(luò)訓(xùn)練收斂到全局的最優(yōu),已解決了BP算法易陷入局部極小值的問題,但該算法只能有限提高原有BP神經(jīng)網(wǎng)絡(luò)的預(yù)測精度,并不能把預(yù)測誤差較大的BP神經(jīng)網(wǎng)絡(luò)優(yōu)化為能夠準(zhǔn)確預(yù)測的BP網(wǎng)絡(luò),且對樣本數(shù)量少、樣本分布不均勻而造成預(yù)測誤差大的問題,優(yōu)化后的網(wǎng)絡(luò)預(yù)測能力一般得不到明顯提高。文獻[6]提出將Adaboost算法應(yīng)用到BP網(wǎng)絡(luò),但選用的數(shù)據(jù)記錄僅有11條,預(yù)測結(jié)果可信度不足。
本文針對上述問題,提出BP神經(jīng)網(wǎng)絡(luò)結(jié)合Adaboost算法組成的強預(yù)測器的方法,并用UCI數(shù)據(jù)庫中的數(shù)據(jù)集進行仿真實驗,證明本文所提方法的有效性。
BP神經(jīng)網(wǎng)絡(luò)是一種有監(jiān)督學(xué)習(xí)多層前饋神經(jīng)網(wǎng)絡(luò),其主要特點是信號前向傳遞、誤差反向傳播[7]。在信號前向傳遞過程中,輸入信號從輸入層進入,經(jīng)過隱含層處理,到達輸出層。每一層的神經(jīng)元狀態(tài)只影響下一層的神經(jīng)元狀態(tài)。判斷輸出層的結(jié)果是否為期望輸出,如果不是,則轉(zhuǎn)入反向傳播,然后根據(jù)預(yù)測誤差調(diào)整網(wǎng)絡(luò)權(quán)值和閾值,從而使BP神經(jīng)網(wǎng)絡(luò)預(yù)測輸出不斷逼近期望輸出[8]。BP神經(jīng)網(wǎng)絡(luò)的拓撲結(jié)構(gòu)如圖1所示。
Figure 1 Topological structure of BP neural network圖1 BP神經(jīng)網(wǎng)絡(luò)拓撲結(jié)構(gòu)圖
圖1 中,x1,x2,…,xn是BP神經(jīng)網(wǎng)絡(luò)的輸入值,y1,…,ym是BP神經(jīng)網(wǎng)絡(luò)的預(yù)測值,ωij和ωjk為BP神經(jīng)網(wǎng)絡(luò)權(quán)值。
Adaboost是一種迭代算法,通過對弱學(xué)習(xí)算法的加強而得到強學(xué)習(xí)算法,即通過一個包含關(guān)鍵特征的弱分類器集合,構(gòu)建出具有理想分類能力的強分類器[9]。Adaboost算法的優(yōu)點在于它使用加權(quán)后選取的訓(xùn)練數(shù)據(jù)代替隨機選取的訓(xùn)練樣本,將弱分類器聯(lián)合起來,使用加權(quán)的投票機制代替平均投票機制[10]。
本文通過對BP神經(jīng)網(wǎng)絡(luò)選取不同參數(shù)來構(gòu)造多類BP弱預(yù)測器,然后使用Adaboost算法將得到的多個弱預(yù)測器組成新的強預(yù)測器。
BP神經(jīng)網(wǎng)絡(luò)在Matlab中的構(gòu)造函數(shù)為:net=newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF),其中,P為輸入數(shù)據(jù)矩陣,T為輸出數(shù)據(jù)矩陣,S為隱含層節(jié)點數(shù),TF為節(jié)點傳遞函數(shù),BTF為訓(xùn)練函數(shù),BLF為網(wǎng)絡(luò)學(xué)習(xí)函數(shù),PF為性能分析函數(shù),IPF為輸入處理函數(shù),OPF為輸出處理函數(shù),DDF為驗證數(shù)據(jù)劃分函數(shù)。一般通過設(shè)置S、TF、BTF、BLF幾個參數(shù)來改變BP神經(jīng)網(wǎng)絡(luò)性能,可選擇值如表1所示。
Table 1 Function parameters of BP neural network表1 BP神經(jīng)網(wǎng)絡(luò)函數(shù)參數(shù)
通過newff函數(shù)及S、TF、BTF、BLF等參數(shù)的調(diào)整,可以構(gòu)造出不同類型的BP弱預(yù)測器。
本文提出的基于Adaboost算法的BP神經(jīng)網(wǎng)絡(luò)預(yù)測算法流程如圖2所示。
Figure 2 Prediction algorithm flowchart of BP neural network with Adaboost圖2 基于Adaboost算法的BP神經(jīng)網(wǎng)絡(luò)預(yù)測算法流程圖
算法詳細步驟如下:
步驟1 樣本數(shù)據(jù)選擇及網(wǎng)絡(luò)初始化。令迭代次數(shù)t=1時,權(quán)值分布 [)=],i=1,2,…,n,其中n為訓(xùn)練集樣本的數(shù)量,令初始誤差率εt=0。根據(jù)樣本輸入輸出維數(shù)設(shè)計網(wǎng)絡(luò)結(jié)構(gòu),并對BP網(wǎng)絡(luò)權(quán)值和閾值(0<<1)進行初始化設(shè)置。
步驟2 樣本數(shù)據(jù)預(yù)處理。
步驟3 BP弱預(yù)測器預(yù)測。通過選取不同BP神經(jīng)網(wǎng)絡(luò)函數(shù)構(gòu)造不同類別BP弱預(yù)測器。對于t=1,…,T進行迭代,在訓(xùn)練第t個弱預(yù)測器時,使用BP神經(jīng)網(wǎng)絡(luò)對訓(xùn)練數(shù)據(jù)進行訓(xùn)練,建立回歸模型gt(x)→y。
計算gt(x)的誤差率εt:
步驟4 測試數(shù)據(jù)權(quán)重調(diào)整。令βt=,更新權(quán)重如下,式中Bt為標(biāo)準(zhǔn)化因子:
步驟5 輸出強預(yù)測器函數(shù)。
UCI數(shù)據(jù)庫是美國加州大學(xué)歐文分校(University of California Irvine)提供的用于機器學(xué)習(xí)的著名數(shù)據(jù)庫,該庫目前共有220個數(shù)據(jù)集,并且其數(shù)目還在不斷增加。本實驗選擇UCI數(shù)據(jù)庫中的 Computer Hardware、Concrete Compressive Strength兩個數(shù)據(jù)集進行回歸預(yù)測,數(shù)據(jù)集下載地址為http://archive.ics.uci.edu/ml/datasets/。
Computer Hardware數(shù)據(jù)集包含209條計算機CUP性能數(shù)據(jù),該數(shù)據(jù)集共有10個屬性,分別為 VendorName(P1)、Model Name(P2)、MYCT(P3)、MMIN(P4)、MMAX(P5)、CACH(P6)、CHMIN(P7)、CHMAX(P8)、PRP(Z9)、ERP(Z10),其中PRP為硬件廠商公布的性能,ERP為預(yù)測性能。從中隨機選取169組數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),40組數(shù)據(jù)作為測試數(shù)據(jù),選取P3~P8作為訓(xùn)練屬性,選取Z9作為實際輸出,Z10供參考。Computer Hardware數(shù)據(jù)集原始數(shù)據(jù)如表2所示。
Table 2 Computer hardware dataset表2 Computer Hardware數(shù)據(jù)集
Concrete Compressive Strength數(shù)據(jù)集包含1 030條混凝土抗壓強度數(shù)據(jù),該數(shù)據(jù)集共有9個屬性Cement(P1)、Blast Furnace Slag(P2)、Fly Ash(P3)、Water(P4)、Superplasticizer(P5)、Coarse Aggregate(P6)、Fine Aggregate(P7)、Age(P8)、Concrete(Z9),其中,Concrete(Z9)為輸出的混凝土抗壓強度。從中隨機選取1000組數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),30組數(shù)據(jù)作為測試數(shù)據(jù)。Concrete Compressive Strength數(shù)據(jù)集原始數(shù)據(jù)如表3所示。
使用10個BP神經(jīng)網(wǎng)絡(luò)構(gòu)成弱預(yù)測器序列,這10個BP神經(jīng)網(wǎng)絡(luò)的S、TF、BTF、BLF參數(shù)選擇如表4所示。
Table 4 Parameter selection of BP weak predictor表4 BP弱預(yù)測器參數(shù)選擇
Computer Hardware和 Concrete Compressive Strength數(shù)據(jù)集的強預(yù)測器預(yù)測誤差絕對值和弱預(yù)測器預(yù)測平均誤差絕對值圖分別如圖3和圖4所示。
Computer Hardware和 Concrete Compressive Strength數(shù)據(jù)集的網(wǎng)絡(luò)訓(xùn)練過程中誤差均方下降曲線分別如圖5和圖6所示。
Computer Hardware 和 Concrete Compressive Strength數(shù)據(jù)集的網(wǎng)絡(luò)訓(xùn)練回歸狀態(tài)圖分別如圖7和圖8所示。
Table 3 Concrete compressive strength dataset表3 Concrete Compressive Strength數(shù)據(jù)集
Computer Hardware數(shù)據(jù)集測預(yù)誤差如表5所示,Concrete Compressive Strength數(shù)據(jù)集預(yù)測誤差如表6所示,預(yù)測結(jié)果平均誤差絕對值對比如表7所示。
Figure 8 Regression state of Concrete Compressive Strength圖8 Concrete Compressive Strength回歸狀態(tài)圖
Table 7 Contrast between mean error absolute value of prediction results表7 預(yù)測結(jié)果平均誤差絕對值對比
使用相關(guān)系數(shù)R來表示擬合的好壞,R的取值范圍為[0 1],R越接近1,表明方程的變量對y的解釋能力越強,這個模型對數(shù)據(jù)擬合得也較好。
從圖3可以看出,Computer Hardware數(shù)據(jù)集預(yù)測誤差值中,強預(yù)測器預(yù)測誤差明顯小于弱預(yù)測器預(yù)測誤差,強預(yù)測器整體預(yù)測誤差較小,預(yù)測結(jié)果較好。從圖5可以看出,Computer Hardware數(shù)據(jù)集訓(xùn)練的誤差均方下降曲線收斂速度較快,在第四步時達到最好的驗證集效果為0.005 5,誤差曲線開始趨于平緩,誤差值基本不再發(fā)生變化,效果較好。從圖7可以看出,強預(yù)測器預(yù)測的訓(xùn)練集R=0.984 2,驗 證 集 R = 0.986 3,測 試 集R=0.914 1,總體R=0.969 0,回歸預(yù)測結(jié)果很好。
從 圖 4 可 以 看 出,Concrete Compressive Strength數(shù)據(jù)集預(yù)測誤差值中,強預(yù)測器預(yù)測誤差明顯小于弱預(yù)測器預(yù)測誤差,強預(yù)測器整體預(yù)測誤差較小,預(yù)測結(jié)果較好。從圖6可以看出,Concrete Compressive Strength數(shù)據(jù)集訓(xùn)練的誤差均方下降曲線在第15步時達到最好的驗證集效果為0.002 1,誤差曲線開始趨于平緩,誤差值基本不再發(fā)生變化,效果較好。從圖8可以看出,強預(yù)測器預(yù)測的訓(xùn)練集R=0.932 5,驗證集R=0.921 4,測試集R=0.919 4,總體R=0.928 8,回歸預(yù)測結(jié)果較好。
Table 5 Prediction error values of computer hardware表5 Computer Hardware數(shù)據(jù)集預(yù)測誤差表
Table 6 Prediction error values of concrete compressive strength表6 Concrete Compressive Strength數(shù)據(jù)集預(yù)測誤差表
從表7可以看出,基于Adaboost算法的BP強預(yù)測器在 Computer Hardware和 Concrete Compressive Strength兩個數(shù)據(jù)集中的平均誤差絕對值減少了近50%。
通過上述數(shù)據(jù)集的驗證實驗,說明本文提出的將Adaboost算法應(yīng)用到BP神經(jīng)網(wǎng)絡(luò)的強預(yù)測器預(yù)測方法取得了良好的預(yù)測效果,是一種可行的改進BP神經(jīng)網(wǎng)絡(luò)預(yù)測精度的方法。
BP神經(jīng)網(wǎng)絡(luò)已廣泛應(yīng)用于分類、回歸領(lǐng)域,取得了較好的應(yīng)用效果,但仍存在易陷入局部極小值等問題。本文通過對傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)選取不同參數(shù)構(gòu)成弱預(yù)測器序列,然后結(jié)合Adaboost算構(gòu)造出新的強預(yù)測器,有效降低了傳統(tǒng)BP神經(jīng)容易陷入局部極小的影響,提高了預(yù)測精度,為BP神經(jīng)網(wǎng)絡(luò)的應(yīng)用提供了借鑒。
[1] Shen Xue-li,Zhang Ji-suo.Research of intrusion detection based on the BP networks and the improved PSO algorithm[J].Computer Engineering &Science,2010,32(6):34-36.(in Chinese)
[2] Li Zuo,Zhou Bu-xiang,Lin Nan.Classification of daily load characteristics curve and forecasting of short-term load based on fuzzy clustering and improved BP algorithm [J].Power System Protection and Control,2012,40(3):56-60.(in Chinese)
[3] Zhang Rui,Xu Zong-ben,Huang Guang-bin,et al.Global convergence of online BP training with dynamic learning rate[J].IEEE Transactions on Neural Networks and Learning Systems,2012,23(2):330-341.
[4] Zhang Dan,Han Sheng-ju,Li Jian,et al.BP algorithm based on improved particle swarm optimization [J].Computer Simulation,2011,28(2):147-150.(in Chinese)
[5] Bashir Z A ,Hawary M E.Applying wavelets to short-term load forecasting using PSO based neural networks[J].IEEE Transactions on Power Systems,2009,24(1):20-27.
[6] Li Song,Xie Yong-le,Wang Wen-xu.Application of adaboost_BP neural network in prediction of railway freight volumes[J].Computer Engineering and Applications,2012,48(6):233-234.(in Chinese)
[7] Lu Yu-min,Tang Da-zhen,Xu Hao.Productivity matching and quantitative prediction of coalbed methane wells based on BP neural network[J].Science China(Technological Sciences),2011,54(5):1281-1286.
[8] Shi Feng,Wang Xiao-chuan,Yu Lei,et al.30cases analysis of Matlab neural network[M].1st Edition.Beijing:Beihang University Press,2010.(in Chinese)
[9] Cheng Feng,Li De-h(huán)ua.CUDA-based parallel implementation of the adaboost algorithm [J].Computer Engineering &Science,2011,33(2):119-123.(in Chinese)
[10] Pan Hu,Chen Bin,Li Quan-wen.Paper currency number recognition based on binary tree and adaboost algorithm[J].Journal of Computer Applications,2011,31(2):396-398.(in Chinese)
附中文參考文獻:
[1] 沈?qū)W利,張紀(jì)鎖.基于BP網(wǎng)絡(luò)與改進的PSO算法的入侵檢測研究[J].計算機工程與科學(xué),2010,32(6):34-36.
[2] 黎祚,周步祥,林楠.基于模糊聚類與改進BP算法的日負荷特性曲線分類與短期負荷預(yù)測[J].電力系統(tǒng)保護與控制,2012,40(3):56-60.
[4] 張丹,韓勝菊,李建,等.基于改進粒子群算法的BP算法的研究[J].計算機仿真,2011,28(2):147-150.
[6] 李松,解永樂,王文旭.AdaBoost_BP神經(jīng)網(wǎng)絡(luò)在鐵路貨運量預(yù)測中的應(yīng)用[J].計算機工程與應(yīng)用,2012,48(6):233-234.
[8] 史峰,王小川,郁磊,等.Matlab神經(jīng)網(wǎng)絡(luò)30個案例分析[M].第1版.北京:北京航空航天大學(xué)出版社,2010.
[9] 程峰,李德華.基于CUDA的Adaboost算法并行實現(xiàn)[J].計算機工程與科學(xué),2011,33(2):119-123.
[10] 潘虎,陳斌,李全文.基于二叉樹和Adaboost算法的紙幣號碼識別[J].計算機應(yīng)用,2011,31(2):396-398.