戴茂


摘要:隨著科學技術的高速發展,在統計報表、郵政編碼、銀行票據等需要處理大量字符信息錄入的場所,手寫體數字識別系統的需求越來越大,怎樣將數字便捷地輸入到計算機中已經是計算技術普及的關鍵問題。此文論述并設計實現了一個手寫體數字識別系統。所用的算法是卷積神經網絡算法,它也是人工神經網絡之中的一個種類,它是人工神經網絡與深度學習兩種技術相結合后產生的一種全新的更加快速的網絡。
關鍵詞:手寫數字識別;卷積神經網絡;應用
手寫體數字識別在郵政、金融等領域應用廣泛。對于數字識別,人們往往要求識別器有很高的識別可靠性,數字識別的錯誤所帶來的影響比文字識別等其他識別所帶來的影響更大,特別是有關金融方面的數字識別錯誤所帶來的后果是無法想象的,識別錯一個數字,這其中的差距可能是幾的差距,也可能是幾十、幾百的差距,這些都還是小問題;但更有可能這一個數字代表的差距是幾萬、幾千萬甚至幾億乃至更多,那么這個錯誤造成的損失就無法估量了。因此,設計出有著高可靠性與高識別率的數字識別系統已經成為了字符識別領域一個非常重要的環節。
1 網絡模型和數據庫及學習算法的選擇
1.1 關于Mnist數據庫的介紹
首先,Mnist是NIST數據庫的一個優化子集。它是一個有著60000個訓練樣本集與10000個測試樣本集的手寫體數字數據庫。此數字庫一共有4個文件。
此數字庫的所有樣本集都有圖像文件以及標簽文件。標簽文件的作用是用來儲存樣本集中的每個樣本的數值標簽,而每一個樣本的圖像數據信息則是由圖像文件存儲著。此數據庫的圖像數據均保存在二進制文件之中,且每個樣本圖像的大小均為28*28。
1.2 數字識別的模型選擇
手寫體數字雖然只有0~9十個數字,但由于寫法因人而異,不同地域同樣一個數字有多種不同的寫法,每個人都有自己的書寫習慣。且一些紙質差異、筆畫粗細、光線問題、位置、尺度大小等等多種因素都能對輸入產生影響。考慮到這些因素,為讓網絡有良好的識別能力,我們這里采用在圖像識別領域有著優秀表現的卷積神經網絡作為此數字識別系統的訓練模型。
1.3 學習算法的選擇
一個優秀的網絡模型必須具備良好的學習算法,每個學習網絡都有著相對來說較為合適自己的學習算法,而并不是說越高端的算法就越好。在此文中,我選擇的學習算法是較為成熟的BP算法。此算法在文字前面有些許介紹,此處不再多做說明。
2 基于卷積神經網絡的數字識別系統的設計
2.1 輸入層以及輸出層設定
根據樣本的特征與此網絡的網絡結構,可以大概判斷出輸入層與輸出層該如何設置。隱含層的個數可以是一個,也可以是多個,這與要分類的問題有關。
前文提及到在mnist數據庫中,所有的圖像都是28*28大小的,且以整個圖片的像素形式存儲在數據文件之中。每張圖像大小為28*28,故一個圖片像素點個數為784個。這里,卷積神經網絡的輸入即為這784個像素點。
因為數字識別需要識別的是0~9這十個數字,即需要識別十種字符類別,所以將這個神經網絡輸出層的神經元節點數設置為10。
2.2 網絡的中間層設置
卷積神經網絡的中間層有兩個部分,即卷積層(特征提取層)與下采樣層(特征映射層),由第二章中圖2-1所示,C1、C3為卷積層,S2、S4為降采樣層。
1)激活函數選擇
激活函數選擇sigmoid函數。同樣,在第二章有所提及。Sigmoid函數是嚴格遞增函數,能較好的平衡線性與非線性之間的行為,比較貼近生物神經元的工作。相比于其他函數,sigmoid函數還存在著許多優勢,比如光滑性、魯棒性以及它的導數可以用它自身來表示。
sigmoid函數為:
(1)
其中,x為神經元凈輸入。
激活函數導數為:
(2)
2)卷積層設計
圖像經過卷積核對特征圖進行卷積,之后再經過sigmoid函數處理在卷積層得到特征映射圖。特征映射圖相比于原圖像,其特征更為明顯突出。
卷積運算其實就是一個加權求和的過程。離散卷積是本文所選取的方法,規定卷積核在水平和豎直兩個方向每次都是移動一個像素,即卷積的步長為1。
3)下采樣層的設計
根據圖像局部相關性這一原理,為了降低網絡的學習維度、減少需要處理的數據量且保留圖像的有用信息,可以對卷積后的圖像進行下采樣。這里,我們采取的是取卷積層4個像素點平均值為下采樣層的一個像素點的方法。這樣可以降低網絡規模。
2.3 網絡總體結構CNN-0
根據LeNet-5結構,再結合上文中的對輸入層、輸出層、中間層的設計,完成了如圖3-1所示的基本網絡結構:
相比于LeNet-5,CNN-0做了一些修改,并非完全按照LeNet-5網絡結構模型。Sigmoid函數是本網絡中的激活函數,選擇這個函數的好處在于可以讓所有層得到的輸出都在區間[-1,1]之內。網絡訓練的學習率固定值為1或者是衰減的學習速率。經過卷積后的一維向量與輸出層沒有沿用LeNet-5的徑向基函數網絡,而是采取全連接方式,省去了F6層。
3.3 卷積神經網絡訓練過程
在模式識別中,學習網絡有無指導學習網絡與有指導學習網絡兩個類別。無指導學習網絡一般是用來進行聚類分析,本文采取的是有指導學習網絡。
卷積神經網絡其實就是從輸入到輸出的一種映射,它可以學習大量的映射關系,只需要用現有的模式對網絡進行訓練,網絡就能具備映射能力。而不需要輸入與輸出之間的精確的關系。
訓練算法與傳統的BP算法相差無幾(BP算法在第二章有做概述),主要可分為四個步驟,而這四個步驟可以歸為向前傳播階段與向后傳播階段:相前傳播:
1)隨機的從樣本集中獲取一個樣本(A, ),然后將A輸入至網絡中;
2)根據公式(3)計算出實際輸出:
(3)
向后傳播:
1)計算和理想輸出之間的差;
2)根據極小化誤差方法調整權值矩陣。
結語
在手寫數字識別這一塊,相對來說比較有難度的應該就是脫機自由手寫字符識別了,不過本文所研究的并不是這一系統,本設計是一個基于卷積神經網絡的手寫數字識別系統,因卷積神經網絡的局部感受野和降采樣以及權值共享、隱性特征提取等優點,它在圖像識別領域得到了非常廣泛的應用。此程序是在Caffe這個框架上進行運行的,操作系統為Linux系統ubuntu14.04版本。Caffe是一個開源的深度學習框架,也可以說是一個編程框架或者模板框架,它提供一套編程機制。因此,本文所需要實際的卷積神經網絡就可以根據這個框架來進行構建。
參考文獻:
[1]張偉,王克儉,秦臻.基于神經網絡的數字識別的研究[J].微電子學與計算,2006年第23卷第8期.
[2]國剛,王毅.應用BP神經網絡進行手寫體字母數字識別[J].電腦知識與技術,2008.
[3]王鵬.基于神經網絡的手寫體字符識別[D]:[碩士學位論文].北京:北京工業大學,2002.