王俊杰
(北京工業(yè)大學(xué) 北京100124)
優(yōu)化BP神經(jīng)網(wǎng)絡(luò)在手寫體數(shù)字識(shí)別中的性能研究
王俊杰
(北京工業(yè)大學(xué) 北京100124)
為了提高基于BP神經(jīng)網(wǎng)絡(luò)的手寫體數(shù)字識(shí)別分類器的準(zhǔn)確率與訓(xùn)練速度,針對(duì)基于BP神經(jīng)網(wǎng)絡(luò)的手寫體數(shù)字識(shí)別分類器,從代價(jià)函數(shù)、權(quán)值初始化、正則方法消除過擬合幾個(gè)方面對(duì)BP神經(jīng)網(wǎng)絡(luò)算法進(jìn)行了改進(jìn)。并使用MNIST數(shù)據(jù)集對(duì)分類器進(jìn)行訓(xùn)練、驗(yàn)證、測試等實(shí)驗(yàn)。實(shí)驗(yàn)表明,改進(jìn)后的手寫體數(shù)字識(shí)別分類器的性能得到了優(yōu)化。
神經(jīng)網(wǎng)絡(luò);BP算法;數(shù)字識(shí)別;分類器
神經(jīng)網(wǎng)絡(luò)具有大規(guī)模并行處理、分布式信息存儲(chǔ)以及良好的自組織自學(xué)習(xí)能力等特點(diǎn)。因此神經(jīng)網(wǎng)絡(luò)被稱為有史以來發(fā)明的最美麗的編程范式之一。在傳統(tǒng)的編程中,我們告訴計(jì)算機(jī)做什么,怎么做,將大問題分成很多小問題逐一解決。但是使用神經(jīng)網(wǎng)絡(luò),我們不需要告訴計(jì)算機(jī)該怎么做,它會(huì)自己從觀測到的數(shù)據(jù)中獲悉,自己找出問題的解決辦法。在這其中,BP神經(jīng)網(wǎng)絡(luò)算法應(yīng)用最為廣泛[1],但是在實(shí)際應(yīng)用該算法的時(shí)候發(fā)現(xiàn)該算法也存在很多的不足之處,訓(xùn)練速度慢,網(wǎng)絡(luò)訓(xùn)練失敗可能性大,訓(xùn)練結(jié)果局部收斂等[2-5]。文中通過改進(jìn)型的BP算法,提高學(xué)習(xí)速率,改善神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)性能,并用改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)來識(shí)別MNIST數(shù)據(jù)集,結(jié)果顯示識(shí)別效果顯著提升。
BP神經(jīng)網(wǎng)絡(luò)能夠進(jìn)行誤差反向傳播,通常與諸如梯度下降法等最優(yōu)化方法進(jìn)行結(jié)合使用,這個(gè)方法計(jì)算出網(wǎng)絡(luò)中的權(quán)重對(duì)于損失函數(shù)的梯度,將該梯度反饋給最優(yōu)化方法,用最優(yōu)化方法求得最小值,然后進(jìn)行權(quán)重的更新。BP神經(jīng)網(wǎng)絡(luò)算法是一種有監(jiān)督的訓(xùn)練方法,且激活函數(shù)為非線性可導(dǎo)的[6-8]。
1.1 使用交叉熵代價(jià)函數(shù)代替常用的方差代價(jià)函數(shù)
神經(jīng)網(wǎng)絡(luò)作為一個(gè)分類器模型應(yīng)當(dāng)有一個(gè)衡量分類結(jié)果的評(píng)判標(biāo)準(zhǔn),以此來評(píng)判預(yù)測和實(shí)際結(jié)果之間的吻合程度,這個(gè)標(biāo)準(zhǔn)就被稱為損失函數(shù)[9-10]。并不是所有函數(shù)都能作為損失函數(shù)的,損失函數(shù)需要滿足兩個(gè)條件:首先,需要滿足非負(fù)性,因?yàn)槲覀兊哪繕?biāo)是要最小化損失函數(shù)。其次,我們的最終目標(biāo)是,當(dāng)真實(shí)輸出a與期望輸出y越接近時(shí),損失函數(shù)的函數(shù)值能越小。
方差代價(jià)函數(shù):
通過公式推導(dǎo),可得權(quán)值w和偏向b關(guān)于方差代價(jià)函數(shù)的更新公式:
顯然,權(quán)值w和偏向b的更新取決于σ′(z)。
交叉熵代價(jià)函數(shù):
通過公式推導(dǎo),得權(quán)值w和偏向b關(guān)于交叉熵代價(jià)函數(shù)的更新公式:
顯然,權(quán)值w和偏向b的更新與σ′(z)沒有關(guān)系,不在受到σ′(z)的影響,只與σ(z)-y有關(guān),這樣一來,誤差大的時(shí)候會(huì)加快學(xué)習(xí)速度。
1.2 使用正則化方法消除過擬合
神經(jīng)網(wǎng)絡(luò)與傳統(tǒng)的統(tǒng)計(jì)中的線性分類器相比,擁有強(qiáng)大的擬合能力,但是往往容易造成過擬合現(xiàn)象。在神經(jīng)網(wǎng)絡(luò)分類器訓(xùn)練過程中,過擬合是這樣一種情況:一個(gè)模型在訓(xùn)練數(shù)據(jù)上能夠獲得非常好的擬合效果,但是在訓(xùn)練數(shù)據(jù)以外的數(shù)據(jù)集上擬合數(shù)據(jù)就沒有那么好的效果。此時(shí)我們就叫這個(gè)模型出現(xiàn)了過擬合的現(xiàn)象。過擬合現(xiàn)象的出現(xiàn)的主要原因是進(jìn)行訓(xùn)練模型的數(shù)據(jù)中存在噪音或者訓(xùn)練數(shù)據(jù)非常的少。
文中消除過擬合的方法是一種使權(quán)重衰減的方法,簡單來說就是在代價(jià)函數(shù)后加一個(gè)正則項(xiàng):
通過推導(dǎo)求得權(quán)值w的更新公式:
w的系數(shù)是一個(gè)小于1的數(shù)。這樣會(huì)使得權(quán)值w得到衰減,不至于過大,因?yàn)闄?quán)值過大會(huì)使得網(wǎng)絡(luò)復(fù)雜度變大,局部的噪音也會(huì)對(duì)結(jié)果產(chǎn)生比較大的影響。所以采用正則化方法對(duì)消除過擬合還是會(huì)產(chǎn)生比較好的效果。
1.3 對(duì)初始權(quán)重的優(yōu)化
一般在網(wǎng)絡(luò)訓(xùn)練開始之前,需要進(jìn)行權(quán)值w和偏向b的初始化工作。初始權(quán)值的選擇一般在區(qū)間(-1,1)之間,這是因?yàn)樾‰S機(jī)數(shù)可以保證網(wǎng)絡(luò)不會(huì)進(jìn)入飽和狀態(tài),而權(quán)值過大則不然[11-13]。而且各權(quán)值最好不要相同。這是因?yàn)?,神?jīng)網(wǎng)絡(luò)訓(xùn)練過程并不受人為控制,所以沒有辦法得知神經(jīng)網(wǎng)絡(luò)的權(quán)重變化的具體情況,但是權(quán)值如果都相同,會(huì)造成所有的神經(jīng)元計(jì)算出相同的結(jié)果,然后在反向傳播中有一樣的梯度結(jié)果,因此誤差修正的結(jié)果也一樣,這就意味著構(gòu)建的神經(jīng)網(wǎng)絡(luò)模型的權(quán)重沒有辦法差異化,相當(dāng)于沒有辦法進(jìn)行學(xué)習(xí)。在實(shí)際的場景中,通常會(huì)把初始權(quán)值設(shè)定為盡可能小的數(shù),并且正負(fù)數(shù)量盡量相等[14-15]。這樣,初始化的時(shí)候權(quán)重都是不相等的很小的隨機(jī)數(shù),然后迭代過程中不會(huì)再出現(xiàn)結(jié)果一致的情況。標(biāo)準(zhǔn)正態(tài)分布恰好滿足上面的條件,所以初始化權(quán)值的時(shí)候只要使其滿足標(biāo)準(zhǔn)正態(tài)分布。但是根據(jù)激活函數(shù)sigmoid函數(shù)的圖像,越接近0時(shí)學(xué)習(xí),變化越大,即學(xué)習(xí)越快。所以初始化值能盡量落在距離0比較近的位置,開始的訓(xùn)練速度就會(huì)比較快,對(duì)于整個(gè)訓(xùn)練過程來說,相當(dāng)于加快了訓(xùn)練速度。一般在標(biāo)準(zhǔn)正態(tài)分布的基礎(chǔ)上將結(jié)果除以一個(gè)輸入個(gè)數(shù)的開平方就能達(dá)到這樣的效果。
2.1 確定輸入輸出的數(shù)據(jù)個(gè)數(shù)
將MNIST中的圖像歸一化為28×28的數(shù)據(jù)信息,即輸入層的單元個(gè)數(shù)應(yīng)該確定為784個(gè)。因?yàn)檩敵鰧訛?到9這10個(gè)數(shù),所以將輸出層設(shè)定為10個(gè)單元。
2.2 網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)
網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)主要做的工作是確定中間層的層數(shù)以及中間節(jié)點(diǎn)個(gè)數(shù)。文中采用3層結(jié)構(gòu),即只有一層隱含層。至于節(jié)點(diǎn)個(gè)數(shù),太少預(yù)測精度不夠,太多的話泛化能力會(huì)下降,需要在具體試驗(yàn)中調(diào)試確定,通過實(shí)驗(yàn)本文采用30個(gè)中間單元。
2.3 使用交叉驗(yàn)證的方法進(jìn)行訓(xùn)練
具體的做法是把數(shù)據(jù)集分成n份,每次拿出其中的1份做驗(yàn)證,其他n-1份做訓(xùn)練,n次的結(jié)果的均值作為對(duì)算法精度的估計(jì)。
設(shè)計(jì)的分類器模型如圖1所示。
實(shí)驗(yàn)采用MNIST數(shù)據(jù)集,該數(shù)據(jù)集分為兩部分,60 000個(gè)手寫體訓(xùn)練集圖像,和10 000個(gè)測試集圖像。在文中使用交叉驗(yàn)證的方式,人為地將60 000幅圖分為兩部分,其中50 000作為訓(xùn)練集,剩下10 000作為交叉驗(yàn)證集。
圖1 BP神經(jīng)網(wǎng)絡(luò)分類器框圖
經(jīng)過試驗(yàn)訓(xùn)練和驗(yàn)證得出以下性能比較:
1)使用交叉熵代價(jià)函數(shù)與方差代價(jià)函數(shù)的識(shí)別準(zhǔn)確率對(duì)比
在輸入層設(shè)定為784個(gè)節(jié)點(diǎn),采用3層結(jié)構(gòu),且中間層節(jié)點(diǎn)采用30個(gè)節(jié)點(diǎn),每一批量大小為1000,訓(xùn)練30個(gè)epochs的條件下,分別使用交叉熵代價(jià)函數(shù)和方差代價(jià)函數(shù)進(jìn)行訓(xùn)練、驗(yàn)證、測試,得到如上的數(shù)據(jù)結(jié)果比較折線圖,由上圖可以很明顯的看到,使用了交叉熵代價(jià)函數(shù)的識(shí)別準(zhǔn)確率明顯高于使用方差代價(jià)函數(shù)的識(shí)別準(zhǔn)確率。
圖2 交叉熵代價(jià)函數(shù)與方差代價(jià)函數(shù)的準(zhǔn)確率對(duì)比圖
2)使用正則化消除過擬合
在輸入層設(shè)定為784個(gè)節(jié)點(diǎn),采用3層結(jié)構(gòu),且中間層節(jié)點(diǎn)采用30個(gè)節(jié)點(diǎn),每一批量大小為100,訓(xùn)練30個(gè)epochs的條件下,出現(xiàn)過擬合現(xiàn)象,在上述條件相同的情況下,進(jìn)行兩次試驗(yàn)。如圖所示,實(shí)驗(yàn)一所使用的代價(jià)函數(shù)沒有進(jìn)行正則化處理,識(shí)別的準(zhǔn)確率在80%左右即達(dá)到收斂。實(shí)驗(yàn)二所使用的代價(jià)函數(shù)是經(jīng)過正則化處理的代價(jià)函數(shù),識(shí)別的準(zhǔn)確率在95%左右達(dá)到收斂。由此證明,該正則化方式對(duì)消除過擬合有效。
3)使用優(yōu)化的初始權(quán)重方法
在輸入層設(shè)定為784個(gè)節(jié)點(diǎn),采用3層結(jié)構(gòu),且中間層節(jié)點(diǎn)采用30個(gè)節(jié)點(diǎn),每一批量大小為1 000,訓(xùn)練30個(gè)epochs的條件下,分別使用標(biāo)準(zhǔn)正態(tài)分布的初始化方式和經(jīng)過優(yōu)化的方法,即在標(biāo)準(zhǔn)正態(tài)分布的基礎(chǔ)上進(jìn)行了改進(jìn)的方法,進(jìn)行初始化,實(shí)驗(yàn)數(shù)據(jù)如上圖所示。顯然通過新的方法進(jìn)行初始化后從一開始準(zhǔn)確率就比老方法的高,因?yàn)閮纱卧囼?yàn)的其他條件相同,證明新的初始化方法的收斂速度要快于老的初始化方法的收斂速度。
圖3 過擬合時(shí)的準(zhǔn)確率
圖4 沒有過擬合時(shí)候的準(zhǔn)確率
圖5 初始化權(quán)重新老方法準(zhǔn)確率對(duì)比圖
從實(shí)驗(yàn)結(jié)果上看,改進(jìn)代價(jià)函數(shù)提高了識(shí)別準(zhǔn)確率、改進(jìn)初始化方法加快了訓(xùn)練速度、使用正則化方法一定程度上避免了過擬合。在實(shí)驗(yàn)數(shù)據(jù)有限,超參數(shù)設(shè)定的嘗試次數(shù)有限的情況下能得到比較理想的結(jié)果,說明優(yōu)化的網(wǎng)絡(luò)模型是有效的模型,如果能應(yīng)用到更大的數(shù)據(jù)集上,且超參數(shù)調(diào)試到最好的情況下,預(yù)計(jì)能有更好的效果。
[1]秦鑫,張昊.基于BP人工神經(jīng)網(wǎng)絡(luò)的手寫體數(shù)字識(shí)別[J].計(jì)算機(jī)與數(shù)字工程,2015(2):223-225.
[2]顏培玉,張國棟.基于人工神經(jīng)網(wǎng)絡(luò)的手寫體數(shù)字識(shí)別方法[J].沈陽航空工業(yè)學(xué)院學(xué)報(bào),2008,25(2):66-69.
[3]王婷,江文輝,肖南峰.基于改進(jìn)BP神經(jīng)網(wǎng)絡(luò)旳數(shù)字識(shí)別[J].電子設(shè)計(jì)工程,2011,19(3):108-112.
[4]劉文杰,吳剛.基于ARM9旳手寫體數(shù)字識(shí)別技術(shù)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2013,41(9): 1498-1510.
[5]蔣宗禮.人工神經(jīng)網(wǎng)絡(luò)導(dǎo)論[M].北京:高等教育出版社,2001.
[6]韓立群.人工神經(jīng)網(wǎng)絡(luò)教程[M].北京:北京郵電大學(xué)出版社,2006.
[7]袁曾任.人工神經(jīng)網(wǎng)絡(luò)及其應(yīng)用[M].北京:清華大學(xué)出版社,1999.
[8]張充,史青苗,苗秀芬,等.基于BP神經(jīng)網(wǎng)絡(luò)的手寫體數(shù)字識(shí)別 [J].計(jì)算機(jī)技術(shù)與發(fā)展,2008,18(6):128-130,163.
[9]許宜申,顧濟(jì)華,陶智,等.基于改進(jìn)BP神經(jīng)網(wǎng)絡(luò)的手寫體數(shù)字識(shí)別[J].通信技術(shù),2011(5):106-109,118.
[10]樊振宇.BP神經(jīng)網(wǎng)絡(luò)模型與學(xué)習(xí)算法[J].軟件導(dǎo)刊,2011(7):66-68.
[11]張景陽,潘光友.多元線性回歸與BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型對(duì)比與運(yùn)用研究[J].昆明理工大學(xué)學(xué)報(bào),2013,38(6):61-67.
[12]劉鯖潔,陳桂明,劉小方,等.BP神經(jīng)網(wǎng)絡(luò)權(quán)重和閾值初始化方法研究 [J].西南師范大學(xué)學(xué)報(bào),2010,35(6):137-141.
[13]劉威,劉尚,周璇.BP神經(jīng)網(wǎng)絡(luò)子批量學(xué)習(xí)方法研究[J].智能系統(tǒng)學(xué)報(bào),2016,11(2):1-7.
[14]劉吆和,陳睿,彭偉,等.一種BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)率的優(yōu)化設(shè)計(jì)[J].湖北工業(yè)大學(xué)學(xué)報(bào),2007,22(3): 1-3.
[15]賈立山,談志明,王知.基于隨機(jī)參數(shù)調(diào)整的改進(jìn)返向傳播學(xué)習(xí)算法 [J].同濟(jì)大學(xué)學(xué)報(bào),2011,39(5):751-757.
Research on performance optimization of BP neural network in handwritten numeral recognition
WANG Jun-jie
(Beijing University of Technology,Beijing 100124,China)
In order to improve the accuracy and training speed of handwritten numeral recognition classifier based on BP neural network,for handwritten numeral recognition classifier based on BP neural network,We improve the algorithm from the following aspects,such as cost function、initialization of weights、regularization method.And we use MNIST data set classifier to train,validate,and test.Experiments show that the handwritten digit recognition classifier improved performance has been optimized.
neural network;BP algorithm;digit recognition;classifier
TN919.82
:A
:1674-6236(2017)06-0027-04
2016-03-29稿件編號(hào):201603390
王俊杰 (1988—),男,山西忻州人,碩士研究生。研究方向:嵌入式與物聯(lián)網(wǎng)技術(shù)。