金姝含,張華欽,徐 濱,吳宇航
(1. 華北理工大學(xué)理學(xué)院,河北 唐山 063210;2. 華北理工大學(xué)機(jī)械工程學(xué)院,河北 唐山 063210;3. 華北理工大學(xué)數(shù)學(xué)建模創(chuàng)新實(shí)驗(yàn)室,河北 唐山 063210;4. 河北省數(shù)據(jù)科學(xué)與應(yīng)用重點(diǎn)實(shí)驗(yàn)室,河北 唐山 063210;5. 唐山市數(shù)據(jù)科學(xué)重點(diǎn)實(shí)驗(yàn)室,河北 唐山 063210)
當(dāng)前,光學(xué)字符識(shí)別技術(shù)即OCR技術(shù)。由于其應(yīng)用的廣泛性,受到越來越多的關(guān)注。在印刷體的英文字符識(shí)別[1]當(dāng)中,條形碼的識(shí)別、車牌照的識(shí)別、圖像的識(shí)別,成為眾多學(xué)者探究的重要課題。本文將利用公開的光學(xué)字符數(shù)據(jù)集,研究26個(gè)英文大寫字符的識(shí)別。對(duì)于英文字符的識(shí)別,現(xiàn)有的識(shí)別方法有很多,例如基于使用模糊推理的方法,基于神經(jīng)網(wǎng)絡(luò)的方法等等。查閱文獻(xiàn)得到[2],研究學(xué)者提出了人工神經(jīng)網(wǎng)絡(luò)算法來進(jìn)行英文字符的識(shí)別,但由于神經(jīng)網(wǎng)絡(luò)算法有時(shí)不收斂,或陷入局部震蕩,這就導(dǎo)致了識(shí)別率的下降。為此,本文研究了一種基于改進(jìn)粒子群優(yōu)化的 BP神經(jīng)網(wǎng)絡(luò)算法用于英文字符的識(shí)別[3]。這種算法利用改進(jìn)后粒子群算法來優(yōu)化BP神經(jīng)網(wǎng)絡(luò)中的閾值和權(quán)值,避免了陷入局部最優(yōu)的狀況,加快了收斂的速度,提高了識(shí)別率的準(zhǔn)確性。
本文首先研究了神經(jīng)網(wǎng)絡(luò)算法用于英文字符的識(shí)別,然后研究了將蒙特卡洛方法用于粒子群,尋找全局最優(yōu)值。再將改進(jìn)后粒子群優(yōu)化BP神經(jīng)網(wǎng)絡(luò)權(quán)值和閥值,并利用改進(jìn)后的BP神經(jīng)網(wǎng)絡(luò),用于26個(gè)大寫字母的識(shí)別實(shí)驗(yàn),實(shí)驗(yàn)表明,本文的研究方法具有準(zhǔn)確的字符識(shí)別效果。
BP神經(jīng)網(wǎng)絡(luò)是一種誤差前向傳播的多層前饋網(wǎng)絡(luò)。傳統(tǒng)的三層 BP神經(jīng)網(wǎng)絡(luò)[4]的拓?fù)浣Y(jié)構(gòu)如圖 1所示,有輸入層、隱含層、輸出層組成。輸入、輸出轉(zhuǎn)移函數(shù)由層間的轉(zhuǎn)移函數(shù)所決定。層間轉(zhuǎn)移函數(shù)由網(wǎng)絡(luò)參數(shù)即單元的權(quán)值所決定,網(wǎng)絡(luò)參數(shù)通過學(xué)習(xí)訓(xùn)練確定。
圖1 神經(jīng)網(wǎng)絡(luò)的拓?fù)鋱DFig.1 Topology diagram of neural network
假設(shè)輸入層含n個(gè)節(jié)點(diǎn),隱含層含p個(gè)節(jié)點(diǎn),輸出層含m個(gè)節(jié)點(diǎn),輸入層到隱含層的權(quán)重記為ω>ij,偏置記為aj,隱含層到輸出層的權(quán)重記為ωjk,偏置記為kb,學(xué)習(xí)速率為η,激勵(lì)函數(shù)為g(x)。其中激勵(lì)函數(shù)g(x)取Sigmoid函數(shù):
隱含層輸出記為Hj:
輸出層輸出記為Ok:
期望輸出記為Yk,令Yk-Ok=ek,誤差記為E:
BP神經(jīng)網(wǎng)絡(luò)在傳遞過程當(dāng)中,具有信號(hào)前向傳遞、誤差反向傳播的特點(diǎn),倘若在傳遞過程中,輸出層沒有達(dá)到期望的輸出值,則自動(dòng)轉(zhuǎn)入反向傳播,網(wǎng)絡(luò)自身會(huì)根據(jù)預(yù)測(cè)出來的誤差對(duì)閾值和權(quán)值進(jìn)行調(diào)整,從而使神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)值不斷地逼近期望的輸出值[5]。在誤差反向傳播的過程當(dāng)中,要盡可能得使誤差函數(shù)達(dá)到期望的最小值,即minE,權(quán)值的更新公式為:
偏置更新公式為:
在上述變量及公式的基礎(chǔ)上,建立BP神經(jīng)網(wǎng)絡(luò)識(shí)別模型,設(shè)定學(xué)習(xí)速率及訓(xùn)練次數(shù),使輸出層不斷逼近期望輸出值,當(dāng)相鄰兩次迭代之間的誤差小于指定值時(shí),則說明達(dá)到識(shí)別結(jié)果,迭代停止。
粒子群優(yōu)化算法[6]是由Kennedy博士和Eberhart博士于1995年提出的一種以族群動(dòng)力學(xué)為基礎(chǔ)的進(jìn)化計(jì)算科學(xué)技術(shù)。它的基本概念來源于社會(huì)行為的模擬,每一個(gè)個(gè)體的行為不但會(huì)受到過去經(jīng)驗(yàn)、認(rèn)知的影響,同時(shí)也會(huì)受到整體社會(huì)行為的影響。
對(duì)應(yīng)每一個(gè)個(gè)體在搜尋空間中各自擁有其方向和速度時(shí),并根據(jù)自我過去的經(jīng)驗(yàn)與群體行為進(jìn)行搜尋策略的調(diào)整。其主要的優(yōu)勢(shì)體現(xiàn)在,粒子的收斂性快,算法易于實(shí)現(xiàn),不受目標(biāo)函數(shù)的梯度信息等影響,并且也沒有許多參數(shù)要進(jìn)行調(diào)整。
(1)初始化設(shè)置微粒群的各項(xiàng)參數(shù),隨機(jī)選擇初始粒子,計(jì)算各粒子的誤差。
(2)比較群體中各個(gè)微粒的當(dāng)前最小誤差和群體歷史最小誤差,若當(dāng)前誤差更小,則令當(dāng)前粒子位置為歷史全局最優(yōu)位置。
(3)比較群體中各個(gè)微粒的當(dāng)前位置和群體歷史最優(yōu)的位置,保存誤差小的成為歷史全局最優(yōu)位置。
(4)用(8)、(9)式對(duì)每個(gè)個(gè)體的位置、速度進(jìn)行迭代。
式中d表示第i個(gè)微粒所經(jīng)歷的歷史最佳位置,Vi表示每個(gè)微粒的飛行速度,Pg表示在整個(gè)微粒群中,所記錄的最佳解位置。參數(shù)c1以及c2分別是自我認(rèn)知和社會(huì)模式的學(xué)習(xí)率。
(5)若系統(tǒng)的適應(yīng)值誤差達(dá)到設(shè)定的適應(yīng)值誤差限[7],訓(xùn)練結(jié)束。輸出歷史全局最優(yōu)位置即為所求神經(jīng)網(wǎng)絡(luò)的最佳權(quán)值和最優(yōu)閾值。
為了避免粒子群算法陷入局部最優(yōu)解,使用蒙特卡洛方法進(jìn)行改進(jìn)[8]。在粒子群算法得到最小值之后,擴(kuò)大權(quán)值和閾值的搜索范圍,重新選擇初始點(diǎn)進(jìn)行尋優(yōu)。為了找到全局最優(yōu)解,新的初始點(diǎn)盡量避開當(dāng)前最優(yōu)解,為達(dá)到該目的,按照卡方分布選取新初始點(diǎn)。
卡方分布的均值等于自由度,且隨自由度的升高卡方分布逐漸接近正態(tài)分布。將卡方分布的這種特性用于粒子群初始點(diǎn)的選取,將卡方分布進(jìn)行拉伸平移變換,使最優(yōu)解對(duì)應(yīng)卡方分布的均值,最大或最小值對(duì)應(yīng)卡方分布的上分位點(diǎn)。各維度的變換公式如下。
其中,xchi是服從卡方分布的隨機(jī)值;k是卡方分布的均值;p(α)是卡方分布的上α分位點(diǎn);是該維度的極值,隨機(jī)選取為最大值或最小值;xbest是當(dāng)前最優(yōu)點(diǎn)在該維度的值。
比較兩個(gè)BP神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)誤差,選擇誤差小的作為當(dāng)前最優(yōu)解[9]。如果新網(wǎng)絡(luò)為最優(yōu)解,將自由度a重置為初始自由度a0,再次選取初始點(diǎn)搜索最優(yōu)解。如果舊網(wǎng)絡(luò)仍為最優(yōu)解,則使a增加1,再次選取初始點(diǎn)搜索最優(yōu)解,這樣,新的初始點(diǎn)的概率分布與上次不同,增大變異性,在自由度a達(dá)到最大自由度amax后,認(rèn)為當(dāng)前最優(yōu)值即為全局最優(yōu)值,結(jié)束算法。
(1)首先將神經(jīng)網(wǎng)絡(luò)的各個(gè)連接權(quán)值和閾值作為粒子群的位置向量,也就是說,將每一個(gè)神經(jīng)網(wǎng)絡(luò)的連接權(quán)值和閾值作為一個(gè)粒子群[10],可用一個(gè) T維的參數(shù)表示,則粒子群優(yōu)化算法中的搜索空間維數(shù)為:
(2)給出一個(gè)BP神經(jīng)網(wǎng)絡(luò)進(jìn)化的參數(shù),將3.2.1得到的微粒ωi對(duì)BP神經(jīng)網(wǎng)絡(luò)的權(quán)值與閾值進(jìn)行賦值,將訓(xùn)練樣本輸入,進(jìn)行網(wǎng)絡(luò)訓(xùn)練,得到一個(gè)神經(jīng)網(wǎng)絡(luò)的一個(gè)輸出值j,則種群ω中個(gè)體ωi的適應(yīng)值fiti可以定義為:
(3)在迭代過程中,根據(jù)(7)式和(8)式通過個(gè)體的極值和全局的極值,更新粒子自身的位置和速度,并引入蒙特卡洛的隨機(jī)模擬,在粒子每次更新后以一定的概率初始化粒子。計(jì)算每個(gè)粒子的適應(yīng)度值,根據(jù)新種群粒子的適應(yīng)度值,更新粒子個(gè)體的極值和群體的極值。
(4)當(dāng)滿足最大迭代次數(shù)時(shí),利用改進(jìn)后粒子群算法[11]得到的最優(yōu)粒子對(duì) BP神經(jīng)網(wǎng)絡(luò)的連接權(quán)值和閾值分別進(jìn)行賦值。將訓(xùn)練后的 神經(jīng)網(wǎng)絡(luò)識(shí)別模型進(jìn)行26個(gè)英文大寫字符的識(shí)別。
步驟1初始化各項(xiàng)參數(shù)。隨機(jī)生成BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值與閾值n組,作為粒子群的初始點(diǎn)。
步驟2按照(7)式和(8)式尋找最優(yōu)點(diǎn),誤差合格或達(dá)到最大迭代次數(shù)后停止尋找,得到當(dāng)前最優(yōu)解
步驟3將t的值增加1,按根據(jù)(9)式變換后的自由度為a的卡方分布隨機(jī)生成BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值與閾值n組,作為新粒子群的初始點(diǎn),進(jìn)行步驟2。
步驟4比較兩個(gè)最優(yōu)解的誤差,若當(dāng)前最優(yōu)解的誤差更小,則淘汰新最優(yōu)解,自由度a的值增加1;若新最優(yōu)解的誤差更小,則將新最優(yōu)解的值賦予當(dāng)前最優(yōu)解,自由度a的值重置為初始自由度a0。
步驟 5重復(fù)步驟 3步驟 4,直到自由度后,認(rèn)為當(dāng)前最優(yōu)解即為全局最優(yōu)解,停止重復(fù),按當(dāng)前最優(yōu)解對(duì)BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值進(jìn)行賦值。
使用UCI的光學(xué)字符識(shí)別數(shù)據(jù)集對(duì)改進(jìn)粒子群優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)識(shí)別模型進(jìn)行測(cè)試。 UCI的光學(xué)字符識(shí)別數(shù)據(jù)集包含20000個(gè)樣本,每個(gè)樣本包含16個(gè)自變量和1個(gè)目標(biāo)變量,隨機(jī)選取2000個(gè)樣本作為訓(xùn)練集,100個(gè)樣本作為測(cè)試集。對(duì)比改進(jìn)PSO-BP與BP神經(jīng)網(wǎng)絡(luò)和PSO-BP的測(cè)試結(jié)果,測(cè)試結(jié)果如下表。
表1 測(cè)試結(jié)果比較Tab.1 Comparison of test results
可見,改進(jìn)后算法的準(zhǔn)確率升高。表明算法的局部最優(yōu)解問題得到了解決。如果對(duì)數(shù)據(jù)集進(jìn)行降維處理,縮小搜索范圍,會(huì)使準(zhǔn)確率進(jìn)一步提高。
本文對(duì)蒙特卡洛算法、粒子群算法和BP神經(jīng)網(wǎng)絡(luò)算法三者結(jié)合用來對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)訓(xùn)練的方法進(jìn)行了研究,并與BP神經(jīng)網(wǎng)絡(luò)算法和PSO-BP進(jìn)行了比較。仿真實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的PSO-BP算法準(zhǔn)確率最高,該改進(jìn)大大降低了神經(jīng)網(wǎng)絡(luò)模型陷入局部極小值的可能、提高了模型的收斂速度和識(shí)別精度。改進(jìn)后的粒子群優(yōu)化算法作為一種有廣泛適應(yīng)性和具大潛力的優(yōu)化算法可以在更多的領(lǐng)域得到應(yīng)用。