封丹丹+宋曉晶
摘 要 BP神經(jīng)網(wǎng)絡(luò)是人工智能網(wǎng)絡(luò)中的一個典型算法,而且它本身具有很強的非線性映射能力,解決一些非線性問題和模式識別更是它最突出的一環(huán)。BP神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)簡單,具有較高的誤差精度,并且它易于編程實現(xiàn),還具有很強的可操作性,是數(shù)據(jù)挖掘領(lǐng)域中的最重要的算法之一。
關(guān)鍵詞 BP神經(jīng)網(wǎng)絡(luò) 數(shù)據(jù)挖掘 最速下降法 函數(shù)逼近 模式識別
中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:A
1研究背景
BP神經(jīng)網(wǎng)絡(luò)是一種多層的前饋網(wǎng)絡(luò)而且它的學(xué)習(xí)算法是一種誤差逆向傳播算法。BP神經(jīng)網(wǎng)絡(luò)是目前研究最為成熟、應(yīng)用最為廣泛的人工神經(jīng)網(wǎng)絡(luò)模型之一。由于其結(jié)構(gòu)簡單、可操作性強、具有較好的自學(xué)習(xí)能力、能夠有效地解決非線性目標(biāo)函數(shù)的逼近問題等優(yōu)點,因此被廣泛應(yīng)用于自動控制、模式識別、圖像識別、信號處理、預(yù)測、函數(shù)擬合、系統(tǒng)仿真等學(xué)科和領(lǐng)域中。
2 BP神經(jīng)網(wǎng)絡(luò)原理
2.1概述
BP神經(jīng)網(wǎng)絡(luò)是一種反向傳播誤差算法然后訓(xùn)練的一個多層前饋網(wǎng)絡(luò),簡稱為BP算法,它應(yīng)用在已被開發(fā)出來的神經(jīng)網(wǎng)絡(luò)中,到目前為止是應(yīng)用最為廣泛的網(wǎng)絡(luò)模型之一。BP神經(jīng)網(wǎng)絡(luò)可以學(xué)習(xí)并且存儲非常多的輸入模式與輸出模式之間的映射關(guān)系,卻無需在學(xué)習(xí)和存儲前事先揭示并描述輸入輸出間的映射關(guān)系的一種數(shù)學(xué)方程。它使用最速下降法,通過對輸出誤差的反向傳播,獲得不斷調(diào)整網(wǎng)絡(luò)連接權(quán)系數(shù)和閾值的信息,最終使神經(jīng)網(wǎng)絡(luò)的平方誤差最小,達(dá)到期望要求。
2.2 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
BP神經(jīng)網(wǎng)絡(luò)模型是一個三層網(wǎng)絡(luò),它的拓?fù)浣Y(jié)構(gòu)可被劃分為:輸入層、輸出層、隱含層。其中輸入層與輸出層具有更重要的意義,因此它也可以為兩層網(wǎng)絡(luò)結(jié)構(gòu)(把隱含層劃入輸入層或者把隱含層去掉)。每層都由許多簡單的能夠執(zhí)行并行運算的神經(jīng)元組成,這些神經(jīng)元與生物系統(tǒng)中的那些神經(jīng)元非常類似,但其并行性并沒有生物神經(jīng)元的并行性高。BP神經(jīng)網(wǎng)絡(luò)是一個前饋網(wǎng)絡(luò),因此它具有前饋網(wǎng)絡(luò)所具有的特性:相鄰兩層之間的全部神經(jīng)元進(jìn)行互相連接,而處于同一層的神經(jīng)元不能進(jìn)行聯(lián)接。
2.3 BP算法原理
BP神經(jīng)網(wǎng)絡(luò)的基本原理是把一個輸入矢量經(jīng)過隱含層的一系列變換,然后得到一個輸出矢量,從而實現(xiàn)輸入數(shù)據(jù)與輸出數(shù)據(jù)間的一個映射關(guān)系。輸入信息的正向傳播,以及輸出誤差的反向傳播,構(gòu)成了 BP網(wǎng)絡(luò)的信息循環(huán)。BP算法根據(jù)輸出誤差來修改各神經(jīng)元連接的連接權(quán)系數(shù),其目的是使輸出誤差達(dá)到預(yù)計范圍內(nèi)。BP網(wǎng)絡(luò)需要實際輸出與期望輸出之間的誤差來確定是否要修改神經(jīng)元連接的連接權(quán)系數(shù)。其中,期望輸出便是該網(wǎng)絡(luò)意義上的“導(dǎo)師”。BP網(wǎng)絡(luò)具有對稱性的網(wǎng)絡(luò)結(jié)構(gòu),在輸出端的每一個處理單元基本上都具有一個相同的激勵函數(shù)。
BP算法由正向傳播和反向傳播兩部分組成。在正向傳播過程中,輸入信息從輸入層經(jīng)隱層單元處理后,傳至輸出層。每一層神經(jīng)元的狀態(tài)只影響下一層神經(jīng)元的狀態(tài)。如果在輸出層得不到期望輸出,就轉(zhuǎn)為反向傳播,即:把誤差信號沿連接路徑返回,并通過修改各層神經(jīng)元之間的連接權(quán)值,使誤差信號最小。
具體的算法步驟可概括如下:
第一步,選取初始權(quán)值、閾值。
第二步,重復(fù)下述過程直至滿足性能要求為止:
(1)對于學(xué)習(xí)樣本P=1到N
①計算每層各節(jié)點j的輸出yj,netj和的值(正向過程);
②對各層從M層到第二層,對每層各節(jié)點反向計算€%]j(反向過程);
(2)修改權(quán)值
具體推導(dǎo)過程見參考文獻(xiàn)4。
3基于BP神經(jīng)網(wǎng)絡(luò)設(shè)計的實例
3.1函數(shù)逼近
我們設(shè)計一個簡單的BP網(wǎng)絡(luò),實現(xiàn)對非線性函數(shù)的逼近。通過改變該函數(shù)的參數(shù)以及BP網(wǎng)絡(luò)隱層神經(jīng)元的數(shù)目,來觀察訓(xùn)練時間以及訓(xùn)練誤差的變化時間。將要逼近的非線性函數(shù)設(shè)為正弦函數(shù),其頻率參數(shù)k可以調(diào)節(jié)。假設(shè)頻率參數(shù)k=2,繪制此函數(shù)的曲線。如圖1。
(1)網(wǎng)絡(luò)建立:用MATLAB編程建立BP網(wǎng)絡(luò)結(jié)構(gòu),為二層BP神經(jīng)網(wǎng)絡(luò)。隱層神經(jīng)元數(shù)目n 可以改變,暫時設(shè)為n=10,輸出層有一個神經(jīng)元。網(wǎng)絡(luò)訓(xùn)練采用Levenberg-Marquardt算法trainlm。
分析:因為建立網(wǎng)絡(luò)時,權(quán)值和閾值的初始化是隨機的,所以網(wǎng)絡(luò)輸出結(jié)果很差,根本達(dá)不到函數(shù)逼近的目的,并且每次運行的結(jié)果也有所不同。
(2)網(wǎng)絡(luò)訓(xùn)練:在MATLAB里應(yīng)用train()函數(shù)對網(wǎng)絡(luò)進(jìn)行訓(xùn)練之前,需要預(yù)先設(shè)置訓(xùn)練參數(shù)。將訓(xùn)練時間設(shè)置為50,訓(xùn)練精度設(shè)置為0.01,其余參數(shù)用默認(rèn)值。
(3)網(wǎng)絡(luò)測試:對于訓(xùn)練好的網(wǎng)絡(luò)進(jìn)行仿真,繪制網(wǎng)絡(luò)輸出曲線,并與原始非線性函數(shù)曲線相比較,結(jié)果如下圖2。
由此可看出,得到的曲線和原始的非線性函數(shù)曲線很接近。這說明經(jīng)過訓(xùn)練后,BP網(wǎng)絡(luò)對非線性函數(shù)的逼近效果非常好。
(4)討論分析:改變非線性函數(shù)的頻率和BP網(wǎng)絡(luò)隱層神經(jīng)元的數(shù)目,對于函數(shù)逼近的效果有一定的影響。網(wǎng)絡(luò)非線性程度越高,對BP網(wǎng)絡(luò)的要求越高,則相同的網(wǎng)絡(luò)逼近效果要差一些;隱性神經(jīng)元的數(shù)目對于網(wǎng)絡(luò)逼近效果也有一定的影響,一般來說隱形神經(jīng)元數(shù)目越多,則BP網(wǎng)絡(luò)逼近非線性函數(shù)的能力越強,同時網(wǎng)絡(luò)訓(xùn)練所用的時間相對來說也要長一些。
參考文獻(xiàn)
[1] 閆志忠.BP神經(jīng)網(wǎng)絡(luò)模型的改進(jìn)及其應(yīng)用研究[D].吉林大學(xué),2003.
[2] 李友坤.BP神經(jīng)網(wǎng)絡(luò)的研究分析及改進(jìn)應(yīng)用[D].安徽理工大學(xué),2012.
[3] 吳昌友.神經(jīng)網(wǎng)絡(luò)的研究及應(yīng)用[D].東北農(nóng)業(yè)大學(xué), 2007.
[4] 賀清碧.BP神經(jīng)網(wǎng)絡(luò)及應(yīng)用研究[D].重慶交通學(xué)院 重慶交通大學(xué),2004.
[5] 張德豐.MATLAB神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計[M].北京:機械工程出版社,2009.