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