邢蕾+趙鵬飛
摘 要:BP神經(jīng)網(wǎng)絡(luò)是誤差反向傳播神經(jīng)網(wǎng)絡(luò)的簡(jiǎn)稱,是一種常用的人工智能算法。它具有非常高的求解精度,同時(shí)也具有很強(qiáng)的非線性。人們?cè)趯W(xué)習(xí)和理解BP神經(jīng)網(wǎng)絡(luò)時(shí),往往會(huì)忽略BP神經(jīng)網(wǎng)絡(luò)的動(dòng)力學(xué)機(jī)制和數(shù)學(xué)運(yùn)算細(xì)節(jié)。該文給出了BP神經(jīng)網(wǎng)絡(luò)的一個(gè)解析算例,剖析了算法的重要細(xì)節(jié),這有助于從事人工智能算法研究或希望應(yīng)用神經(jīng)網(wǎng)絡(luò)算法解決實(shí)際問題的初學(xué)者,更準(zhǔn)確和更全面地理解神經(jīng)網(wǎng)絡(luò)理論。
關(guān)鍵詞:BP 神經(jīng)網(wǎng)絡(luò) 解析 理論
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2016)09(a)-0090-03
因?yàn)榫哂蟹浅?qiáng)的非線性,人們?cè)趯W(xué)習(xí)BP神經(jīng)網(wǎng)絡(luò)時(shí),往往會(huì)忽略它的動(dòng)力學(xué)機(jī)制和數(shù)學(xué)運(yùn)算細(xì)節(jié),而只關(guān)注于調(diào)用相關(guān)函數(shù),盲目地用于解決一些實(shí)際問題。這個(gè)問題成為了阻礙神經(jīng)網(wǎng)絡(luò)理論發(fā)展和應(yīng)用的關(guān)鍵所在。該文將從基本理論、算法步驟、梯度下降算法的實(shí)現(xiàn)、BP神經(jīng)網(wǎng)絡(luò)的解析算例4個(gè)方面進(jìn)行論述。這有助于從事人工智能算法研究或希望應(yīng)用神經(jīng)網(wǎng)絡(luò)算法解決實(shí)際問題的初學(xué)者,更準(zhǔn)確和更全面地理解神經(jīng)網(wǎng)絡(luò)理論。
1 基本理論
神經(jīng)網(wǎng)絡(luò)是一種非常重要的人工智能算法[1]。BP神經(jīng)網(wǎng)絡(luò)是最常用的神經(jīng)網(wǎng)絡(luò)算法,是誤差反向傳播(Error Back Propagation)神經(jīng)網(wǎng)絡(luò)的簡(jiǎn)稱,是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò)[2,3]。
BP算法的基本思想是訓(xùn)練過程由信號(hào)的正向傳播和反向傳播兩個(gè)過程組成的。當(dāng)信號(hào)正向傳播時(shí),輸入樣本從輸入層傳入,經(jīng)隱層逐步處理后,傳向輸出層。如果在輸出層中實(shí)際輸出值與期望輸出值不符,則轉(zhuǎn)入誤差的方向傳播過程,并依此往復(fù)。
誤差的反向傳播是將誤差輸出給隱層,再向輸入層反傳。在整個(gè)反傳過程中,誤差分?jǐn)偟礁鲗拥乃袉卧瑥亩玫礁鲗訂卧恼`差信號(hào),并以此作為修正各單元權(quán)值的依據(jù)。權(quán)值不斷修正的過程,也就是網(wǎng)絡(luò)接受學(xué)習(xí)和訓(xùn)練的過程,當(dāng)神經(jīng)網(wǎng)絡(luò)的輸出誤差減小到某個(gè)可接受的程度,或進(jìn)行到預(yù)先規(guī)定好的學(xué)習(xí)次數(shù)時(shí),整個(gè)計(jì)算過程終止。
2 BP神經(jīng)網(wǎng)絡(luò)的算法步驟
(1)神經(jīng)網(wǎng)絡(luò)參數(shù)的初始化:給各連接權(quán)值分別賦一個(gè)區(qū)間(-1,1)內(nèi)的隨機(jī)數(shù),設(shè)定誤差函數(shù)的數(shù)學(xué)表達(dá)式E,給定計(jì)算精度和最大學(xué)習(xí)次數(shù)M;
(2)隨機(jī)選取第k個(gè)輸入樣本及對(duì)應(yīng)的期望輸出:
(3)計(jì)算隱層各神經(jīng)元的輸入和輸出;
(4)計(jì)算輸出層個(gè)神經(jīng)元的輸出(神經(jīng)網(wǎng)絡(luò)的總輸出);
(5)利用神經(jīng)網(wǎng)絡(luò)期望輸出和實(shí)際輸出,計(jì)算誤差函數(shù)對(duì)輸出層的各神經(jīng)元輸出誤差的偏導(dǎo)數(shù)
(6)利用神經(jīng)網(wǎng)絡(luò)輸出值關(guān)于隱層到輸出層的連接權(quán)值的偏導(dǎo)數(shù);
(7)同理,求得網(wǎng)絡(luò)輸出誤差關(guān)于輸入層與隱層權(quán)值的偏導(dǎo)數(shù);
(8)利用和來修正兩種連接權(quán)Tki和;
(9)計(jì)算全局誤差E,并判斷網(wǎng)絡(luò)誤差是否滿足精度要求。當(dāng)誤差達(dá)到預(yù)設(shè)精度或?qū)W習(xí)次數(shù)大于設(shè)定的最大迭代次數(shù),則結(jié)束程序;否則,返回第(3)步,選擇下一個(gè)學(xué)習(xí)樣本及對(duì)應(yīng)的期望輸出,進(jìn)入下一輪學(xué)習(xí)。
3 梯度下降算法的實(shí)現(xiàn)
結(jié)合梯度下降算法[4]的實(shí)現(xiàn)過程,我們以BP神經(jīng)網(wǎng)絡(luò)為例,詳細(xì)介紹神經(jīng)網(wǎng)絡(luò)的原理和實(shí)現(xiàn)過程。
對(duì)于一個(gè)n維值函數(shù)而言,若采用梯度下降算法計(jì)算其極小值,需要選擇一個(gè)初始點(diǎn),如果該點(diǎn)對(duì)應(yīng)的非極小值,則必須對(duì)進(jìn)行修正,并得到。
重復(fù)上述過程,在計(jì)算得到(x2,y2),直到第n步。當(dāng)或時(shí),結(jié)束循環(huán),并輸出(xn,yn)。
極小值點(diǎn)的計(jì)算精度由η的取值決定。
4 BP神經(jīng)網(wǎng)絡(luò)算法的解析算例
對(duì)于BP神經(jīng)網(wǎng)絡(luò)而言,其實(shí)現(xiàn)過程與極小值問題的梯度下降算法的本質(zhì)是一致的,區(qū)別之處只在于對(duì)初始點(diǎn)坐標(biāo)的調(diào)整過程。在梯度下降算法中,初始點(diǎn)的調(diào)整是正向的,即由初始點(diǎn)坐標(biāo)決定調(diào)整方向(該點(diǎn)處的負(fù)梯度方向);在BP神經(jīng)網(wǎng)絡(luò)中,初始點(diǎn)(初始權(quán)值)的調(diào)整是反向的,即由誤差函數(shù)關(guān)于各權(quán)變量的導(dǎo)數(shù),對(duì)權(quán)值進(jìn)行調(diào)整。
再舉一個(gè)關(guān)于BP神經(jīng)網(wǎng)絡(luò)的簡(jiǎn)單例子,給定神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)圖如圖1所示,其中,輸入層具有兩個(gè)神經(jīng)元A和B,隱層具有兩個(gè)神經(jīng)元C和D;輸入樣本為A=0.3,B=0.6,初始權(quán)值為:AC=0.1,BC=0.8,AD=0.5,BD=0.4,CE=0.4,DE=0.6。
可見,經(jīng)調(diào)整的權(quán)值可以用輸出的全局誤差減小,往復(fù)這個(gè)迭代過程,我們將得到最佳的權(quán)值。
參考文獻(xiàn)
[1] 李成.神經(jīng)網(wǎng)絡(luò)系統(tǒng)理論[M].西安電子科技大學(xué)出版社,1990.
[2] 戚德虎.BP神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),1998,19(2):48-50.
[3] Hecht-Nielsen R.Theory of the backpropagation neural network[J].Harcourt Brace &Co.,1992,1(1):593-605.
[4] 閻平凡,張長(zhǎng)水.人工神經(jīng)網(wǎng)絡(luò)與模擬進(jìn)化計(jì)算[M].清華大學(xué)出版社有限公司,2005.