黃志超 喬振華



摘要:手寫數字識別是將人手寫的0-9十個數字識別出來的一個過程,本文首先分別使用邏輯斯蒂回歸算法和支持向量機算法對提取出特征向量的圖片進行訓練,建立模型;其次,針對不同的樣本數測試以上兩個模型的準確性;最后通過Py-thon3.7實驗仿真,實驗結果表明,這兩種模型的識別的準確率較高。
關鍵詞:手寫數字識別;邏輯斯蒂回歸;支持向量機
中圖分類號:TP18 文獻標識碼:A
文章編號:1009-3044(2019)33-0215-03
1概述
隨著信息全球化時代的到來,互聯網技術數字化加速發展,人工智能已稱為當今世界最為前沿的熱點方向之一。人工智能技術已滲入到生活的方方面面。手寫數字識別技術屬于人工智能范疇,手寫數字識別是一種傳統的數字識別技術,而數字識別技術又是一個典型的模式識別問題。模式識別使用計算機算法對圖像進行自動處理和判讀,自動模式識別由機器自動進行模式識別,無須人為干涉。隨著大數據的興起,像郵政、金融等這些行業由于手寫的數據較多、數據量龐大且對數據的準確性要求較高,因此,急需一個能準確高效自動識別手寫數字的方法。
雖然數字是由0~9十個數字,但是每個人的書寫方式和習慣差別較大,寫法截然不同,且很多數字自身相似度較高,因此,想要準確識別出每個手寫數字還是存在一定難度的。
2基于機器學習模型的手寫數字識別原理
本文的手寫數字識別方法可分為兩個過程與三個步驟,兩個過程分別是:訓練(學習)與測試(識別),如圖1所示,三個步驟是:1)生成手寫數字樣本庫;2)特征提取;3)模型訓練和測試。
2.1LR(Logistic Regression)原理
LR(邏輯斯蒂回歸)是一種線性分類模型,采用Sigmoid函數作為后驗概率分布函數來對輸人數據集進行分類,除了可用于解決二分類問題,同時也可用于解決多分類問題。該算法計算量小,易于實現,既能應用于分布式場景,也能應用于在線實施場景,其基本原理如下:
3實驗過程與結果
3.1實驗過程
通過Pvthon3.7實驗仿真手寫數字識別,手寫數字識別主要以下三個步驟:生成手寫數字樣本庫、特征提取、模型訓練和測試。
1)生成手寫數字樣本庫
如上文所述,手寫數字因人而異,因此,首先應建立自己的手寫數字樣本庫。當然,還可以直接選用現有的手寫數字樣本庫。這兩種方法各有優缺點,第一種方法是量身定做的手寫數字樣本庫,更為適合實驗環境場景,但缺點是費事費力。第二種方法的優點是簡單方便,但缺點是不能面向大規模的應用,可能導致誤差較大。本實驗采用第一種方法建立自己的手寫數字樣本庫。生成手寫數字樣本庫核心思想是隨機生成數字0-9,然后利用python的PIL畫筆工具進行畫圖,通過對圖像進行扭曲,生成手寫數字樣本庫。手寫數字樣本庫具體生成步驟如下圖所示。
2)特征提取
特征提取是通過剔除圖像中對分類沒有幫助的部分,提取出具有代表性的幾個特征的過程。手寫數字樣本庫中的圖片是30*30的灰度圖片即900個像素點,本文采用的特征提取方法是選取每行中黑點的個數以及每列中黑點的個數作為輸入,這樣也可達到降低維度目的,將維度從900降到了60,如下圖所示。
3)模型訓練和測試
手寫數字識別實質上是一個圖像分類問題,及其學期中大多數分類算法都可以應用到手寫數字識別中,這里主要介紹兩種分類方法:
(1)基于LR的分類器
通過sigmoid函數作為預測函數,來預測條件概率P(y=1x)。輸人圖片使用sigmoid函數計算出圖片屬于數字0-9的概率,范圍在[0,1]之間。為了提高模型預測的準確率,在模型訓練過程中,不斷最小化極大似然代價函數。
(2)基于支持向量機的分類器
通過訓練數據不斷地迭代計算,在多維空間中找到一個最佳的決策平面,從而實現二分類,但是,手寫數字識別并不是一個標準的二分類問題,因此,需要訓練多個支持向量機的模型,每個模型能將一個數字與其他數字區分開,例如,支持向量機模型SVMl能夠區分數字1和其他數字,給出輸入圖片為1的概率。對于給定輸入,將其帶人這10個支持向量機模型,從而可以分別得出圖片屬于0-9的概率,其中概率值最大的即為最后的分類結果。
3.2實驗結果
在手寫數字識別中,通過最常見的正確率來評價該模型性能的高低,其中正確率的計算公式如下:
計算手寫數字樣本庫中圖片數量從100至10000的識別準確率,其中,訓練數據占比75%,測試數據占比25%,計算結果如下表和下圖所示。由此可見,當樣本數低于1000個時準確率較低;當樣本數在1000至6000之間,SVM模型的準確率高于LR模型的準確率,且準確率都在0.9以上;當樣本數在6000至10000之間,SVM模型的準確率與LR模型的準確率不相上下,且準確率大部分都在0.96以上。本實驗結果表明,這兩種模型的識別的準確率較高。
4結束語
手寫數字識別是對人們手寫的數字進行分析處理,自動識別的過程。該文分別通過邏輯斯蒂回歸算法和支持向量機算法建立模型,通過測試集對其進行測試,計算準確率。通過此方法可實現手寫數字識別,且識別效果較好,但是,該文所討論的方法,對于樣本個數較少的情況,識別準確率不高。