丁禹鑫+丁會+張紅娟+楊彤彤
摘要:隨著科學技術的發展,機器學習成為一大學科熱門領域,是一門專門研究計算機怎樣模擬或實現人類的學習行為的交叉學科。文章在matlab軟件的基礎上,利用BP神經網絡算法完成手寫體數字的識別。
關鍵詞:機器學習;手寫體數字識別;BP神經網絡
機器學習是一門多領域交叉學科,專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織己有的知識結構,使之不斷改善自身的性能。實現機器學習的方法多種多樣,常見到的主要有神經網絡算法、CNN卷積神經網絡算法、RNN循環神經網絡算法、EM算法、貝葉斯算法、聚類算法、回歸算法、SVM等。本文將利用BP神經網絡算法來完成手寫體數字的識別[1]。
1總體方案
1.1題目分析
手寫體數字識別的實現相對于其他元素的識別,具有許多優勢。主要表現在以下幾個方面:(1)涉及的識別元素數目少,僅有0?9共10個元素;(2)訓練集合背景多為紙張,受到的環境干擾小;(3)識別元素筆畫簡單,便于識別;(4)訓練集合便于采集。
在此基礎上,之所以選取BP神經網絡作為工具來實現手寫體數字識別,其優勢主要體現在:(1)BP神經網絡算法具有很強的非線性擬合能力,可以影射任何的非線性復雜關系;(2)學習規則簡單,便于計算機實現[2]。
1.2總體方案設計
本次試驗是識別手寫體數字,大體上可以分為兩個階段來實行,分別是訓練神經網絡和利用神經網絡進行識別(預測)。要進行本次試驗,首先要下載一個手寫體數字素材庫,將隨機選取素材庫中的一部分素材作為訓練樣本,提取訓練樣本的特征并以此對神經網絡進行訓練,這一階段過后,會得到一個訓練成型的神經網路模型。然后利用總樣本除去訓練樣本所剩下的預測樣本進行準確度的檢驗,觀察預測的輸出是否符合客觀實際,多大程度上符合客觀實際。
如果得到的最終結果具有比較大的準確度,那么本次試驗即成功完成。
通過查閱資料,搜集到了總共5000張每個數字500張的手寫體數字圖片作為本次實驗的素材,隨機選取4500張圖片作為訓練樣本,剩下的500張圖片作為檢驗樣本[3]。
2算法基本原理
本算法以BP神經網絡模型為基礎,通過構建圖像讀取模塊、特征提取模塊、標簽構造模塊、訓練集/測試集劃分模塊、神經網絡構建以及訓練模塊、神經網絡測試模塊和正確率計算模塊幾個主要模塊來實現手寫體數字識別這一基本功能,接下來分模塊對其原理進行敘述[4]。
2.1圖像讀取模塊
圖像讀取模塊的功能是對搜集到的素材進行數字化的處理,讀取到計算機中的模塊。其中我們采取了imread函數將5000張手寫體數字圖片輸入計算機。由于計算機的圖像存儲規則,最終會得到1X5000=5000個圖像矩陣,每個圖像矩陣都具有其保存的對應圖像的絕大部分信息。這些圖像矩陣都保存在Cell型變量中,作為后文應用的基礎素材。2.2特征提取塊特征提取模塊即對獲得的數字圖像進行特征提取。大致的思路如下。首先將將得到的黑白灰度圖像在一個合理閾值的范圍內轉化為二值圖像。其次對上一階段中獲得的5000張數字圖像(數字矩陣)每一張圖像都進行分塊處理,再將每一個小的分塊看成是一個具體的單位,統計其中有黑色像素存在的小的像素點的個數,并與總像素點的個數做除法得到存在黑色像素的占比大小,將這個占比大小作為每個具體分塊單位的特征數據,計入特征矩陣。
在本模塊中除了進行特征提取,還對圖片的大小進行了統一化的裁切處理,方便后面的應用[5]。
2.3標簽構造模塊
標簽構造模塊的目的就是構造出每個具有特征的數字圖像所對應的真實值,即標簽。這一點是至關重要的,也是進行新圖像識別(分類)的基礎。在后面的處理中,無論如何變幻原圖像,必須保持其與所對應標簽的一致性。只有將一組特征(處理后的數據)與最后的標簽對應起來,才能保證神經網絡訓練的有效性。構造標簽矩陣的方法較為多樣,在這里就不做贅述。
2.4訓練集/測試集劃分模塊
這一模塊的主要功能就是劃分出訓練集與測試集。在這里必須本著隨機性均勻性的原則對總的數據集進行劃分,這樣才能保證最終結果的可靠性。在劃分訓練集與測試集的同時,需要把標簽矩陣的對應元素也同樣本數據(特征)一一對應地一并劃分,將二者同時作為神經網絡訓練的輸入進行訓練。通過這一階段,我們劃分獲得了4500個數字圖像/對應標簽作為訓練集,500個數字圖像/對應標簽作為測試集。
2.5神經網絡的構建及訓練模塊
這個模塊的主要功能就是對神經網絡進行構建與訓練。在這一階段筆者采用Matlab神經網絡工具箱中的相關函數對輸入其中的4500組數據鏈接神經網絡進行反復訓練,最終得到一個成型的神經網絡模型用于后文的預測處理。
2.6神經網絡預測模塊
這個模塊使用的是全部集合中除去訓練集剩下的測試集進行預測判斷的。在這一階段通過simulink仿真將500組測試集對應的預測數據全部輸出,以備進行最終的準確度檢驗。
2.7準確度檢驗模塊
將最終的simulink仿真結果保存在一個矩陣中,通過將這個矩陣的元素與對應的客觀真實的標簽矩陣進行比較,統計出預測正確的數目,再與總預測數目相比較得到預測正確的數目占預測總數目的百分比,最終得到的即為預測的準確度[6]。
3系統實現
在算法中,通過unread函數進行圖片的讀取,讀取得到的每個圖片的數字信息儲存在Cell類型的變量中,然后通過graythresh和im2bw函數獲取一個合理的閾值將灰度圖轉化為二值圖像,之后利用imcrop函數對圖像的大小統一化處理。接下來進行數字圖像的特征提取。通過對數字圖像進行分塊劃分,將原始圖像矩陣劃分為多個圖像子矩陣,同時將劃分出的塊落(每個子矩陣)當作一個具體的單位點來看待。編寫相關函數統計每個子矩陣中黑色像素存在的元素數占總元素數的比值作為對應子矩陣當前點的特征數據,將若干個子矩陣的特征數據組合按照原先劃分的位置重新組合成為一個特征矩陣,作為當前圖像的特征矩陣進行后續操作。之后進行標簽的構造,選用ones函數生成幾個子標簽矩陣,再通過矩陣的操作生成整個標簽矩陣。以從1開始自大到小依次進1的矩陣重新隨機排列的元素作為選定訓練集與測試集的依據,取前4500作為訓練集,取后500作為測試集,這樣一來就達到了隨機性均勻性的要求。完成了以上幾個步驟,接下來進行神經網絡的創建和訓練。利用神經網絡工具箱輸入4500組測試數據和其對應的標簽,通過srniulmk仿真將神經網絡模型成型。有了神經網絡模型,就可以編寫函數對監測樣本進行預測,觀察預測結果是否符合客觀實際。最終將預測結果與實際結果(實際標簽)相比較,統計預測正確結果的個數并計算其占測試樣本總數的百分比,得到正確率[7]。
4實驗的缺陷和不足
本次試驗仍存在一些不足之處。(1)由于本次試驗采取的是黑白兩色的數字進行識別,因此在轉換二值圖像部分具有較好的效果,若是采用彩色圖像則效果欠佳,以至于影響后面的特征提取。(2)本次試驗采用的5000張手寫體數字圖像規格相同、字體大小相同且字體均位于圖像正中央,這為成功率作出了較大的貢獻。反之若選取雜亂圖像,效果必定欠佳。
5結語
通過多次利用十折交叉法進行結果檢驗,本實驗最終得到的平均準確率為85.4%。在此條件下可以認為測試結果具有較高的準確率,即手寫體數字識別完成良好。
21世紀是科技與人類社會緊密結合的一個世紀。機器學習作為一個應用廣泛的學科領域,無疑走在了科技的前列。相信在未來,手寫體數字識別作為一個較狹窄的應用領域,會煥發出其應有的活力。
[參考文獻]
[1]許歡.李群機器學習模型及應用研究[D].蘇州:蘇州大學,2007.
[2]何清,李寧,羅文銷,等.大數據下的機器學習算法綜述[J].模式識別與人工智能,2014(4):327-336.
[3]段向軍.基于神經網絡的預測控制方法研究[D].大慶:大慶石油學院,2005.
[4]楊夢鐸,李凡長,張莉.李群機器學習十年研究進展[J].計算機學報,2015(7):1337-1356.
[5]朱曉波.基于BP神經網絡的手寫體數字識別分析與研究[D].武漢:武漢科技大學,2003.
[6]白天毅.基于神經網絡的手寫體數字識別關鍵技術研究[D].西安:西安工業大學,2014.
[7]黃巧巧.基于BP神經網絡的手寫數字識別系統研究[D].武漢:華中師范大學,2009.endprint