蔣銳鵬,姑麗加瑪麗·麥麥提艾力,安麗娜
(新疆師范大學(xué) 數(shù)學(xué)科學(xué)學(xué)院,新疆 烏魯木齊 830017)
現(xiàn)代的科學(xué)研究表明,人類的學(xué)習(xí)和認(rèn)知活動(dòng)中有80%到85%都是通過視覺完成的。就是說,視覺是人類認(rèn)知和了解這個(gè)世界的主要方式[1]。隨著人工智能的興起,有許多科學(xué)家一直在研究人工智能中與視覺相關(guān)的領(lǐng)域,即計(jì)算機(jī)視覺。計(jì)算機(jī)視覺的目的是為了讓計(jì)算機(jī)能夠理解圖片的內(nèi)容。
手寫數(shù)字識(shí)別在實(shí)際生活中也有重要的作用。在當(dāng)今“大數(shù)據(jù)”時(shí)代,計(jì)算機(jī)已經(jīng)幫助人類解決了許多難題,如何讓計(jì)算機(jī)去理解手寫體,這將對(duì)人們的生活產(chǎn)生極大的便利。如何提高對(duì)書寫不規(guī)范的數(shù)字的識(shí)別,也是研究人員一直探索的問題。
手寫數(shù)字識(shí)別是計(jì)算機(jī)視覺的一個(gè)重要組成部分,傳統(tǒng)的手寫數(shù)字識(shí)別模型是Softmax回歸模型,在文件自動(dòng)處理Softmax回歸模型[2-3]將可以判定為某類的特征相加,然后將這些特征的求和轉(zhuǎn)化為可以判定是哪一類的概率。公式如下:
Z=X*W+b
(1)
其中,X是輸入的一維向量,MNIST數(shù)據(jù)庫的圖片都為28×28(784)像素,所以展開成1行784列的一維向量;W和b是模型參數(shù),同訓(xùn)練數(shù)據(jù)集學(xué)習(xí)、訓(xùn)練得出;Z為輸出矩陣,每一列表示圖像屬于0~9某一類的特征。
為了方便描述,用Zi表示這幅圖像屬于i類的特征,i∈[0,9]。Softmax函數(shù)用以下公式將這些特征轉(zhuǎn)化為能夠判斷類別的概率:
(2)
Softmax函數(shù)可以將任意的輸入映射到[0,1]之間的輸出而且所有輸出結(jié)果之和為1。經(jīng)過Softmax函數(shù)的運(yùn)算得出一系列的特征概率,最后選取最大的概率對(duì)應(yīng)的i模型的輸出。
除了Softmax模型,支持向量機(jī)也常用來進(jìn)行手寫數(shù)字識(shí)別。支持向量機(jī)類似于淺層神經(jīng)網(wǎng)絡(luò)[4-5],其輸出為中間層節(jié)點(diǎn)的線性組合,而每一個(gè)中間層節(jié)點(diǎn)對(duì)應(yīng)于輸入樣本與一個(gè)支持向量的內(nèi)積。支持向量機(jī)的輸出層只有一個(gè)節(jié)點(diǎn),用來確定識(shí)別結(jié)果的類別屬性[4]。
LSTM是一種形式特殊的RNN,在1997年由Hochreiter和Schmidhuber提出,是為解決梯度消失和梯度爆炸問題而設(shè)計(jì)的[6]。LSTM框架將RNN中的普通神經(jīng)元替換為其內(nèi)部擁有少量記憶細(xì)胞的LSTM單元,它們有助于記憶許多時(shí)間步中的誤差的內(nèi)部狀態(tài)[7-8]。LSTM結(jié)構(gòu)中每時(shí)刻的隱層中都有許多的“記憶塊”,而每一個(gè)“記憶塊”含有多個(gè)“記憶細(xì)胞”。所謂的“記憶細(xì)胞”包括一個(gè)單元和三個(gè)控制門—輸入門、遺忘門以及輸出門。LSTM結(jié)構(gòu)以及LSTM各部分運(yùn)算如圖1所示。
圖1 LSTM的計(jì)算
it=σ(Wxixt+Whiht-1+WciCt-1+bi)
(3)
ft=σ(Whfxt+Whfht-1+WcfCt-1+bf)
(4)
Ct=ft?Ct-1+it?tanh(Wxcxt+Whcht-1+bc)
(5)
Ot=σ(Wxoxt+Whoht-1+WcoCt+bo)
(6)
ht=Ot?tanh(Ct)
(7)
其中,W為各項(xiàng)的權(quán)重,b為各項(xiàng)誤差,xt為輸入數(shù)據(jù),ht為輸出數(shù)據(jù)。σ為Sigmoid函數(shù),它的輸出值為“1”或“0”,是用來決定哪些信息能夠通過(0表示任何信息不能通過,1表示全部信息通過)。tanh函數(shù)的作用是將運(yùn)算的值規(guī)范到[-1,1][9]。從LSTM的結(jié)構(gòu)圖中可以看出,LSTM的輸入門和遺忘門都有“信息過濾”的功能,這樣就可以方便計(jì)算。
LSTM對(duì)數(shù)字手寫圖像的識(shí)別本質(zhì)上是分類問題,這里把輸入x分成28個(gè)時(shí)間段,每一段包含了28個(gè)值的內(nèi)容;接著使用unstack函數(shù)將原始的28×28的輸入矩陣轉(zhuǎn)換成具有28個(gè)元素的list,而每個(gè)元素都為1×28的數(shù)組;然后將這28個(gè)時(shí)序依次送入LSTM中,如圖2所示。
圖2 手寫數(shù)字?jǐn)?shù)據(jù)傳輸過程
構(gòu)建LSTM網(wǎng)絡(luò),先建立一個(gè)包含128個(gè)cell的類lstm_cell,緊接著把變形后的x1放進(jìn)網(wǎng)絡(luò)中生成outputs節(jié)點(diǎn),通過全連接生成pred,最后使用Softmax函數(shù)進(jìn)行分類。識(shí)別算法流程如圖3所示。
圖3 手寫數(shù)字識(shí)別流程
從識(shí)別流程可以看出,手寫圖片的處理主要是建立一個(gè)合適的LSTM神經(jīng)網(wǎng)絡(luò)模型。LSTM神經(jīng)網(wǎng)絡(luò)將28×28圖片輸出為1維矩陣,由于采用0-9的標(biāo)簽,所以使用1×10的一維向量表示,比如3對(duì)應(yīng)矩陣為[0010000000],最后使用Softmax函數(shù)進(jìn)行預(yù)測(cè)。
實(shí)驗(yàn)是基于TensorFlow1.11版本以及Anaconda4.2.0版本的實(shí)驗(yàn)環(huán)境,并在Pycharm進(jìn)行編譯。
TensorFlow是Google公司開發(fā)的第二代分布式
機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)框架和部署系統(tǒng)[10]。TensorFlow是一個(gè)基于數(shù)據(jù)流圖的數(shù)值計(jì)算庫,TensorFlow中有兩個(gè)重要的概念—Tensor和Flow。Tensor就是張量,其可以被簡(jiǎn)單地理解為多維數(shù)組[7]。Flow則表明了它的計(jì)算模型。TensorFlow支持CNN,RNN以及LSTM的構(gòu)建。用戶可以根據(jù)自身的需要來調(diào)節(jié)神經(jīng)網(wǎng)絡(luò)的各項(xiàng)參數(shù),使得實(shí)驗(yàn)過程更加順利。
MNIST數(shù)據(jù)集(MNIST數(shù)據(jù)集下載:http://yann.lecun.com/exdb/mnist.)包含55 000行的訓(xùn)練數(shù)據(jù)集(train -images-idx3)和10 000行的測(cè)試數(shù)據(jù)集(test-images-idx3)。每個(gè)樣本都有唯一對(duì)應(yīng)的標(biāo)簽(label),用于描述樣本的數(shù)字,每張圖片包含28×28個(gè)像素點(diǎn)。
一般的LSTM神經(jīng)網(wǎng)絡(luò)模型是單向的,由于單向的神經(jīng)網(wǎng)絡(luò)在“記憶”上下文的能力上有很大的限制[11],故而文中構(gòu)造了雙向LSTM網(wǎng)絡(luò)。雙向LSTM在輸入序列中是兩個(gè)LSTM:一個(gè)為原本的輸入數(shù)據(jù),第二個(gè)為原來數(shù)據(jù)的反轉(zhuǎn)副本,這樣可以提供額外的上下文,使得模型能更充分、更有效的學(xué)習(xí)。圖4為雙向LSTM的結(jié)構(gòu)示意圖。
圖4 雙向LSTM結(jié)構(gòu)示意圖
靜態(tài)雙向LSTM使用static_bidirectional_rnn函數(shù)建立,先創(chuàng)建lstm_fw_cell和lstm_bw_cell包含了128個(gè)正反向cell的類LSTM,然后將轉(zhuǎn)化后的x1輸入到LSTM網(wǎng)絡(luò)中,生成輸出節(jié)點(diǎn),再通過全連接生成pred,最后使用Softmax函數(shù)進(jìn)行分類。
評(píng)價(jià)指標(biāo)采用交叉熵[13-14],公式如下:
(8)
其中,y為預(yù)測(cè)的概率分布,y'為實(shí)際輸入值。利用交叉熵作為誤差函數(shù),從而調(diào)整LSTM神經(jīng)網(wǎng)絡(luò)模型的參數(shù),使得模型達(dá)到最優(yōu)。
將Softmax模型以及構(gòu)建的靜態(tài)雙向LSTM模型放入實(shí)驗(yàn)中。被識(shí)別圖片如圖5所示,識(shí)別結(jié)果見表1。
圖5 被識(shí)別圖片
表1 識(shí)別結(jié)果
經(jīng)過訓(xùn)練集的訓(xùn)練可以看出,Softmax模型正確率達(dá)到了92%,再用測(cè)試集進(jìn)行測(cè)試,正確率也達(dá)到了92%。而雙向LSTM模型的正確率達(dá)到了96.3%,比Softmax模型提高了4.3%。這說明雙向LSTM模型在手寫數(shù)字識(shí)別有著較好的表現(xiàn)。
文中主要對(duì)雙向長(zhǎng)短時(shí)記憶遞歸神經(jīng)網(wǎng)絡(luò)模型進(jìn)行了研究,并給出了在數(shù)字識(shí)別應(yīng)用中的初步實(shí)驗(yàn)結(jié)果,同時(shí)對(duì)傳統(tǒng)Softmax和LSTM的識(shí)別結(jié)果進(jìn)行對(duì)比。雙向LSTM神經(jīng)網(wǎng)絡(luò)通常應(yīng)用在語音等具有時(shí)間序列的輸入數(shù)據(jù)上,通過實(shí)驗(yàn)可以看出,雙向LSTM神經(jīng)網(wǎng)絡(luò)在手寫數(shù)字識(shí)別上也有較好的表現(xiàn),并將傳統(tǒng)Softmax方法的性能提高了4.3%。下一步將繼續(xù)改進(jìn)模型結(jié)構(gòu)并進(jìn)行更有意義的應(yīng)用實(shí)驗(yàn)。