摘要:想了解深度學習卻又無從下手,不如從手寫數字識別模型訓練開始吧!
深度學習作為機器學習分支之一,應用日益廣泛。語音識別、自動機器翻譯、即時視覺翻譯、刷臉支付、人臉考勤……不知不覺,深度學習已經滲入到我們生活中的每個角落,給生活帶來極大便利。即便如此,依然有很多人覺得深度學習高深莫測、遙不可及,的確,它有深奧之處,非專業人士難以企及,但也有親和力十足的一面,讓沒有基礎的小白也能輕松上手,感受深度學習的魅力,接下來要介紹的手寫數字識別模型訓練正是如此。
手寫數字識別初探
手寫數字識別是計算機視覺中較為簡單的任務,也是計算機視覺領域發展較早的方向之一,早期主要用於銀行匯款、單號識別、郵政信件、包裹的手寫、郵編識別等場景,目前手寫數字識別已經達到了較高的准確率,得到大規模的推廣與應用。雖然手寫數字識別本身的領域比較狹窄,實用性有限,但是在它基礎上發展起來的卷積神經網絡等計算機視覺技術早已應用在更為復雜的任務中,因此,手寫數字識別也成為計算機視覺領域衡量算法表現的一個基准任務。所以,通過這一實踐場景來了解神經網絡開發和訓練,可謂再好不過了。如何使用深度學習框架MindSpore進行模型開發與訓練?又如何在ModelArts平台訓練一個可以用於識別手寫數字的模型呢?讓我們來一探究竟吧。
數據集的選擇與准備
機器學習中的傳統機器學習和深度學習都是數據驅動的研究領域,需要基於大量的歷史數據對模型進行訓練,再使用模型對新的數據進行推理和預測,因此數據是機器學習中的關鍵要素之一。
MNIST數據集是目前手寫數字識別領域使用最為廣泛的公開數據集,大部分識別算法都會基於它進行訓練和驗證。MNIST數據集包含0~9這10種數字,每一種數字都包含大量不同形態的手寫數字圖片訓練集,分為訓練集和測試集。訓練集涵蓋6萬張手寫數字圖片,測試級涵蓋1萬張手寫數字圖片。每一張圖片皆為經過尺寸標准化的黑白圖像,是28*28像素,像素值為0或者1的二值化圖像。MNIST數據集的原始圖像是黑白的,但在實際訓練中使用數據增強后的圖片能夠獲得更好的訓練效果。
本次訓練所使用的經過數據增強的圖片
基於深度學習的識別方法
與傳統的機器學習使用簡單模型執行分類等任務不同,此次訓練我們使用深度神經網絡作為訓練模型,即深度學習。深度學習通過人工神經網絡來提取特征,不同層的輸出常被視為神經網絡提取出的不同尺度的特征,上一層的輸出作為下一層的輸入,層層連接構成深度神經網絡。
深度學習工作原理
1994年,Yann LeCun發布了結合反向傳播的卷積神經網絡 LeNet, 其在手寫數字識別領域效果遠超其他模型。1998年,Yann LeCun等人構建的卷積神經網絡LeNet-5在手寫數字識別問題中取得成功 ,被譽為卷積神經網絡的“Hello Word”。LeNet-5以及在此之后產生的變體定義了現代卷積神經網絡的基本結構,可謂入門級神經網絡模型。本次實踐使用的模型正是LeNet-5。
LeNet-5結構
LeNet-5由輸入層、卷積層、池化層和全連接層組成。輸入層用於輸入數據;卷積層通過卷積運算對輸入進行局部特征提取;池化層通過下采樣的方式降低特征圖的分辨率,從而降低輸出對位置和形變的敏感度,同時還可降低網絡中的參數和計算量;全連接層將局部特征通過權值矩陣組裝成完整的圖像,完成特征空間到真實類別空間的映射,最終的圖像分類便是由全連接層完成的。有了這樣一個神經網絡后,我們還需要用大量數據集對它進行不斷地訓練,才能對輸入數據有較為准確的預測結果,這一過程便依賴於華為自研的深度學習框架MindSpore。
MindSpore的“學習”過程
MindSpore當前已經部署在ModelArts的開發環境和訓練環境中,同時提供了閾值算法供開發者直接使用,它的學習過程如下圖所示,簡單總結一下:
1. 使用MindSpore提供的基本模塊進行前線網絡開發
2. 對數據進行處理和增強以便得到更好的數據輸入
3. 利用前線網絡構建訓練模型,並進行模型保存和推理
說起來可能平淡無奇,但是實驗終究需要自己親自動手才能體會其中的無限樂趣。
看到這里,想必各種背景知識和原理大家已經略知一二,如果你已經躍躍欲試,那就快來華為雲學院學習微認證課程《使用MindSpore訓練手寫數字識別模型》吧。對了,悄悄告訴你,這個實驗現在還是免費的喲,來華為雲學院沙箱實驗室就能即刻體驗。從原理到實踐,帶你全方位了解手寫數字模型訓練全過程,快速上手深度學習,速來!
本文分享自華為雲社區《MindSpore手寫數字識別初體驗,深度學習也沒那么神秘嘛》,原文作者:學院小助 。