李建新
(廣州工商學(xué)院 計(jì)算機(jī)科學(xué)與工程系,廣州 528138)
目前,手寫體數(shù)字識(shí)別是人工智能機(jī)器學(xué)習(xí)領(lǐng)域眾多研究者關(guān)注的一個(gè)熱點(diǎn),廣泛應(yīng)用于公安、稅務(wù)、交通、金融、教育等行業(yè)的實(shí)踐活動(dòng)中。在實(shí)際應(yīng)用中,對(duì)手寫數(shù)字單字識(shí)別率的要求比手寫普通文字識(shí)別要苛刻許多,識(shí)別精度需要達(dá)到更高的水平。由于手寫數(shù)字識(shí)別沒(méi)有文字識(shí)別那樣的上下文,不存在語(yǔ)意的相關(guān)性,而數(shù)據(jù)中的每一個(gè)數(shù)字又至關(guān)重要。因此,提高手寫數(shù)字識(shí)別率,成為人工智能的重要研究領(lǐng)域。
人工神經(jīng)網(wǎng)絡(luò)是一種類似于大腦神經(jīng)突觸聯(lián)接的結(jié)構(gòu),進(jìn)行信息處理的數(shù)學(xué)模型,具有學(xué)習(xí)和記憶功能,可以讓神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)各個(gè)模式類別中的大批量訓(xùn)練樣本,記憶各個(gè)模式類別中的樣本特征。在識(shí)別樣本時(shí),將逐個(gè)與記憶中各模式類別的樣本特征相比較,從而確定樣本所屬類別。人工神經(jīng)網(wǎng)絡(luò)通過(guò)學(xué)習(xí)調(diào)整內(nèi)部大量節(jié)點(diǎn)之間相互連接的關(guān)系,可獲得眾多優(yōu)化的模型參數(shù)。
手寫體數(shù)字識(shí)別系統(tǒng)由輸入、預(yù)處理、識(shí)別等環(huán)節(jié)組成,系統(tǒng)架構(gòu)如圖1所示。
圖1 手寫體數(shù)字識(shí)別系統(tǒng)組成Fig.1 Composition of handwritten digit recognition system
輸入環(huán)節(jié)包括MNIST手寫體數(shù)據(jù)集輸入和用戶預(yù)測(cè)圖片里的手寫體數(shù)字;預(yù)處理環(huán)節(jié)主要指用戶手寫體數(shù)字預(yù)測(cè)圖片的預(yù)處理;識(shí)別環(huán)節(jié)包括卷積神經(jīng)網(wǎng)絡(luò)、分類識(shí)別器、損失函數(shù)和優(yōu)化器。卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)數(shù)字手寫體0~9特征提取,分類識(shí)別是手寫體數(shù)字識(shí)別最關(guān)鍵的部分。經(jīng)過(guò)卷積神經(jīng)網(wǎng)絡(luò)提取來(lái)的特征被送到分類器中,對(duì)其進(jìn)行分類識(shí)別。分類識(shí)別器由softmax完成,softmax得到當(dāng)前樣例中屬于不同種類的概率分布情況。
優(yōu)化器在神經(jīng)網(wǎng)絡(luò)訓(xùn)練和測(cè)試過(guò)程中,根據(jù)計(jì)算結(jié)果與損失函數(shù)要求,調(diào)節(jié)模型可變參數(shù),讓神經(jīng)網(wǎng)絡(luò)參數(shù)盡快達(dá)到理想誤差范圍。
訓(xùn)練一個(gè)卷積神經(jīng)網(wǎng)絡(luò)時(shí),需要大量的數(shù)據(jù)、設(shè)置卷積的層數(shù)、卷積核大小、池化的方式(最大、平均)、損失函數(shù)、設(shè)置目標(biāo)(如:手寫數(shù)字的識(shí)別,輸出一個(gè)10維向量)等,讓卷積神經(jīng)網(wǎng)絡(luò)通過(guò)不斷的訓(xùn)練更新參數(shù),向設(shè)置的目標(biāo)靠近,最后可以通過(guò)這些參數(shù)來(lái)預(yù)測(cè)樣本。
通常情況下,假設(shè)樣本由K個(gè)類組成,共有m個(gè),則數(shù)據(jù)集可由式(1)表示:
式中,x(i)∈R(n+1);y(i)∈{1,2,…,K},n+1為特征向量x的維度。
MNIST是機(jī)器學(xué)習(xí)中的一個(gè)數(shù)據(jù)集,包含0~9的不同人手寫數(shù)字圖片。數(shù)據(jù)集由60 000個(gè)手寫數(shù)字訓(xùn)練樣本和10 000個(gè)手寫數(shù)字測(cè)試樣本組成,每個(gè)樣本是一張28*28像素的灰度手寫數(shù)字圖片。則MNIST數(shù)據(jù)集的訓(xùn)練集m=60 000,n+1=784,K=10、MNIST數(shù)據(jù)集的測(cè)試集m=10 000,n+1=784,K=10;分別由式(2)、式(3)表示為:
機(jī)器學(xué)習(xí)模型設(shè)計(jì)時(shí),將提供大量的數(shù)據(jù)以訓(xùn)練一個(gè)手寫體數(shù)字的機(jī)器學(xué)習(xí),所得到的模型參數(shù),最終用于預(yù)測(cè)用戶圖片里面的數(shù)字。
卷積神經(jīng)網(wǎng)絡(luò)是系統(tǒng)的核心部分,是由輸入層、多個(gè)卷積層、多個(gè)池化層、多個(gè)全連接層以及輸出組成的多層感知器。卷積層為局部連接,用于提取圖像特征;池化層用于進(jìn)一步降低輸出參數(shù)數(shù)量,提高了模型的泛化能力;全連接層進(jìn)行特征關(guān)系和權(quán)重值計(jì)算,完成分類處理。手寫體數(shù)字識(shí)別卷積神經(jīng)網(wǎng)絡(luò)的組成示意如圖2所示。
圖2 手寫體數(shù)字識(shí)別卷積神經(jīng)網(wǎng)絡(luò)組成Fig.2 Composition of convolution neural network for handwritten digit recognition
在TansorFlow中卷積層、池化層和全連接層部分代碼如下:
為了提高卷積神經(jīng)網(wǎng)絡(luò)對(duì)手寫體數(shù)字識(shí)別的準(zhǔn)確率,可以通過(guò)多種途徑來(lái)實(shí)現(xiàn)。如:增加卷積層數(shù)量,以便進(jìn)行更高層次的特征提??;改變各卷積層的卷積核大小,以便調(diào)整特征提取范圍,或改變卷積步長(zhǎng);增加卷積層中卷積核的數(shù)量,意味著提取特征圖的數(shù)量(一個(gè)卷積核卷積出來(lái)一個(gè)特征圖),也就意味著可以從更多的角度提取原圖的特征,避免視角單一,卷積出來(lái)多個(gè)特征圖后要重新組織輸出形態(tài),用以適應(yīng)下一層的輸入要求。
分類器采用Softmax回歸算法,該算法能將二分類的Logistic回歸問(wèn)題擴(kuò)展至多分類。Softmax回歸算法對(duì)于給定的輸入值x(i),輸出的K個(gè)估計(jì)概率可由式(4)[1]表示:
上述Softmax回歸算法在TansorFlow中的相應(yīng)代碼如下:
通常采用的損失函數(shù)“交叉熵”(crossentropy),如式(5)[2]所示:
式中,y為預(yù)測(cè)概率的分布,y'為實(shí)際樣本的標(biāo)簽值。
TensorFlow中提供了8種優(yōu)化器,即BGD、SGD、Momentum、Nesterov Momentum、Adagrad、Adadelta、RMSprop和Adam,模型訓(xùn)練一般采用梯度下降優(yōu)化器。
在TansorFlow中,損失函數(shù)、學(xué)習(xí)率為learning_rate的優(yōu)化器代碼[2]如下:
由以上系統(tǒng)組成可知,MNIST數(shù)據(jù)集、卷積神經(jīng)網(wǎng)絡(luò)與分類器、損失函數(shù)和優(yōu)化器是人工神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)模型訓(xùn)練機(jī)制的組成部分。
通過(guò)對(duì)MNIST數(shù)據(jù)集的訓(xùn)練和測(cè)試,模型參數(shù)達(dá)到要求并予以保存。在用戶實(shí)際應(yīng)用時(shí)可以導(dǎo)入模型參數(shù)對(duì)用戶手寫數(shù)字識(shí)別。由于MNIST數(shù)據(jù)集手寫數(shù)字以張量形式存在,其形態(tài)為1維[784],而用戶手寫數(shù)字可以各種像素的數(shù)字圖像存在,故用戶手寫數(shù)字在識(shí)別前需要將其圖像進(jìn)行預(yù)處理,需與MNIST數(shù)據(jù)集28×28像素達(dá)到一致。
預(yù)處理對(duì)于系統(tǒng)設(shè)計(jì)非常重要,經(jīng)過(guò)預(yù)處理后的圖像才能進(jìn)行特征提取。因此,預(yù)處理的好壞直接影響著識(shí)別結(jié)果。因?qū)氲狞c(diǎn)陣圖形大小各異,需將點(diǎn)陣圖形壓縮成與MNIST數(shù)據(jù)集中的大小相一致,調(diào)整用戶手寫數(shù)字灰度圖像形態(tài)為[28,28];隨后將用戶手寫數(shù)字圖像轉(zhuǎn)換為灰度圖像?;叶葓D像像素值純黑色的灰度級(jí)別為0,純白色的灰度級(jí)別為255,介入兩者之間還有許多灰度級(jí)別。由于MNIST數(shù)據(jù)集圖片像素純白色~純黑色采取正規(guī)化的0~1區(qū)間,故用戶手寫數(shù)字灰度圖像也須進(jìn)一步正規(guī)化到0~1區(qū)間。用戶手寫數(shù)字預(yù)處理流程如圖3所示。
圖3 用戶手寫數(shù)字預(yù)處理流程Fig.3 Preprocessing process and code of handwritten digits
經(jīng)處理后的數(shù)字圖片格式與MNIST數(shù)據(jù)集的圖片格式相同,則可將圖片輸入到網(wǎng)絡(luò)中進(jìn)行識(shí)別。
對(duì)用戶手寫數(shù)字圖像進(jìn)行檢測(cè)的卷積神經(jīng)網(wǎng)絡(luò),與MNIST數(shù)據(jù)集的訓(xùn)練和測(cè)試的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)相同。模型參數(shù)為MNIST數(shù)據(jù)集的訓(xùn)練與測(cè)試得到并保存模型參數(shù),主要是卷積神經(jīng)網(wǎng)絡(luò)的各層參數(shù)。只要恢復(fù)、使用之前保存的模型參數(shù),用這些已知的參數(shù)構(gòu)建卷積神經(jīng)網(wǎng)絡(luò),通過(guò)其將用戶手寫數(shù)字圖像從卷積神經(jīng)網(wǎng)絡(luò)輸入,以完成到輸出的映射,獲得相應(yīng)數(shù)字。
TensorFlow是一個(gè)開(kāi)源的機(jī)器學(xué)習(xí)框架,在圖形分類、音頻處理、推薦系統(tǒng)和自然語(yǔ)言處理等場(chǎng)景下有著豐富的應(yīng)用,并提供了多種編程語(yǔ)言的接口。本系統(tǒng)建立在TensorFlow平臺(tái)上,分二部分完成:
2.3.1 建立模型參數(shù)
(1)導(dǎo)入MNIST數(shù)據(jù)集,并構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)模型;
(2)對(duì)學(xué)習(xí)模型進(jìn)行訓(xùn)練和測(cè)試;
(3)評(píng)價(jià)學(xué)習(xí)模型是否為最佳模型參數(shù),是則保存模型參數(shù),否則修改學(xué)習(xí)模型,繼續(xù)執(zhí)行(2)、(3)步驟。
2.3.2 用戶手寫數(shù)字識(shí)別
(1)數(shù)字預(yù)處理,以使用戶手寫數(shù)字與MNIST數(shù)據(jù)集一致;
(2)使用保存的模型參數(shù)構(gòu)建用戶手寫數(shù)字識(shí)別模型;
(3)用戶手寫數(shù)字輸入手寫數(shù)字識(shí)別模型,得到用戶手寫數(shù)字輸出。
實(shí)驗(yàn)分為無(wú)卷積神經(jīng)網(wǎng)絡(luò)和有卷積神經(jīng)網(wǎng)絡(luò)。實(shí)驗(yàn)以損失函數(shù)、訓(xùn)練數(shù)據(jù)準(zhǔn)確率和測(cè)試數(shù)據(jù)準(zhǔn)確率為參考,見(jiàn)表1。
表1 訓(xùn)練損失值與數(shù)據(jù)準(zhǔn)確率Tab.1 Training loss and data accuracy
由表1中上半部數(shù)據(jù)可知,隨著學(xué)習(xí)率的增加,損失函數(shù)值的減少,訓(xùn)練準(zhǔn)確率和測(cè)試準(zhǔn)確率均增加,但學(xué)習(xí)率增加過(guò)大。如,學(xué)習(xí)率為1.0和1.5時(shí),導(dǎo)致數(shù)據(jù)準(zhǔn)確率發(fā)生振蕩。
由表1中下半部數(shù)據(jù)可知,當(dāng)學(xué)習(xí)率小于0.65時(shí),前20輪訓(xùn)練損失函數(shù)收斂很快,訓(xùn)練準(zhǔn)確率和測(cè)試準(zhǔn)確率很快達(dá)到0.98以上,最高為1。學(xué)習(xí)率過(guò)大,如0.75,損失函數(shù)找不到最小點(diǎn),無(wú)法收斂,甚至出現(xiàn)未定義或不可表示的值。
通過(guò)實(shí)驗(yàn)比較了無(wú)卷積和卷積在神經(jīng)網(wǎng)絡(luò)中的作用,對(duì)學(xué)習(xí)訓(xùn)練參數(shù)、優(yōu)化器也做了比較,取得了相應(yīng)數(shù)據(jù),學(xué)習(xí)率大小對(duì)無(wú)卷積神經(jīng)網(wǎng)絡(luò)影響為引起數(shù)據(jù)準(zhǔn)確率發(fā)生振蕩,對(duì)有卷積神經(jīng)網(wǎng)絡(luò)影響為引起損失函數(shù)找不到最小點(diǎn),數(shù)據(jù)準(zhǔn)確率大幅度下降。在學(xué)習(xí)率大小合適條件下有卷積神經(jīng)網(wǎng)絡(luò)的損失值和學(xué)習(xí)率均明顯優(yōu)于無(wú)卷積神經(jīng)網(wǎng)絡(luò),實(shí)驗(yàn)結(jié)果挖掘了神經(jīng)網(wǎng)絡(luò)對(duì)圖形內(nèi)在的特性。
本研究是手寫體數(shù)字識(shí)別系統(tǒng)開(kāi)發(fā)的組成部分,其成果對(duì)整個(gè)系統(tǒng)開(kāi)發(fā)工作奠定了很好的基礎(chǔ)。