這邊我將搜尋「數字辨識、手寫數字辨識(handwritten number/numeral recognition)」等關鍵字時會找到相關資料方法稍微分成了三類,分別是:
昨天提到了,要做一個手寫數字辨識系統可以分成三步驟,考慮輸入、輸出形式跟找一個數字辨識方法。
所以從能最快做出一個手寫辨識系統的目標來說,第一個想法是有沒有一個數字辨識的套件,當我直接在網路上找一張手寫數字的圖片作為輸入(input),輸出的數字結果(output)直接印(print)在 console 上,就可以預測出我的圖片數字。
這部分會介紹圖片內容轉文字- OCR 這個方法。
作為這十年來最潮的神經網路,以其實作手寫數字辨識系統的資料非常多,這邊引用知名AI講師-Isaac Lee 李厚均所撰寫並轉載到小李談數智的一段話:
為什麼這幾年人工智慧會突然爆紅?原因有非常的多,但如果單以”技術”的角度來看,這幾年科技的發展剛好滿足了人工智慧的三個基本需求─算法、算力及資料[註1]
在這個部份我們會介紹怎麼利用 Keras 這個機器學習套件/框架,建出簡單的神經網路(NN) - MLP(Multilayer perceptron) 來實作手寫數字辨識系統,說明使用此方法的優缺,並簡單講解可以怎麼調整,及其和其他神經網路的關係,如 CNN(Convolutional Neural Network) 便是在 MLP(=dense layer) 多加卷積層(Convolution Layer)與池化層(Pooling Layer)。過程中也會介紹 MNIST 資料集及相關實作環境。
機器學習的方法有很多,因為它就是一個手段方法,為了達成人工智慧的目標。
圖片來源:李宏毅老師機器學習課程投影片[註2]
這部分會在前兩部分介紹完介紹,這邊先放一張 Microsoft 協助你去選擇適合的方法演算法的路徑圖,由於數字辨識是一個分類問題,所以可以看右上角提供的一些跟分類有關的方法,如邏輯回歸(logistic regression)、多層神經網路(Neural Network)跟決策樹(decision tree)等。
ps. 可能有人會問不是預測一個數值,為什麼不是看左下角回歸的部分?回歸問題跟分類問題其實不大一樣,回歸看的是變數之間的關係(相關、相關方向與強度),也可以說是目標與預測數值的關係,顯然的數字辨識並不是要讓機器看我的手寫數字跟預測數字的關係,而是讓機器學會去分類我的手寫數字到底是 0~9 哪一類,達到預測結果。只是在實務上我們常會將回歸問題與分類問題互相轉換,譬如說預測年齡問題,轉成年齡段分類問題。至於回歸與邏輯回歸的關係我們後面會講到。
圖片來源:https://docs.microsoft.com/zh-tw/azure/machine-learning/algorithm-cheat-sheet
接下來我們就先從用 OCR 來快速實作看看手寫辨識系統是什麼吧!
[註1]【AI 人工智慧】人工智慧為什麼會爆紅?
[註2] ML Lecture 0-1: Introduction of Machine Learning(2017)