寫這篇時突然發現有個很重要的觀念沒有提到…通常遇到圖片分類問題時,我們都會用捲基神經網路(CNN)來處理,因為它能記住二維(旁邊 pixel)的訊息。
而通常我們不選擇用神經網路作為分類方法,可能有像神經網路很棒,但過程黑箱(black box),有時候很難解釋為什麼結果和正確率會是這樣,所以這時候用可以找出特徵節點的方法做分類會比較好解釋說明,或對其他方法更熟悉所以用該方法等原因。
我們在 DAY5 提到,若從技術處理的角度來看,機器學習的過程就是在找一個函式(function),讓機器有能力根據我們提供的資料,找到我們想要的結果,達到人工智慧的目標。至於人工智慧的程度是要像人類一樣懂分類會預測判斷?還是像人類一樣思考?有興趣的人可以查圖靈測試這個關鍵字意義。
回到我們的主題,手寫數字是分類問題,而與分類有關的機器學習方法有:
- 邏輯迴歸(Logistic Regression):適用二分類,但可以做到多分類
- SVM:適用二分類,但可以做到多分類
- K 近鄰演算法(KNN, K Nearest Neighbor):K 值一般會選奇數,但偶數也行
- 簡單貝氏分類(Naive Bayes classifier):因其假設與現實情形不符(以手寫數字圖片輸入大小28*28=784維來說,輸入彼此獨立的前提假設不對),所以訓練的正確率通常不會太高
- 決策樹(Decision Tree):容易有 overfitting 的現象,也就是訓練正確率達百分百,但測試正確率低。程式實作上會用主成分分析(PCA) 或 t-SNE 等降維方法找出重要特徵,再讓決策樹進行分類
- 隨機森林(Random Forest Classifier):決策樹進階版,使用大量決策樹來預測,然後選擇最多決策樹預測的類作為結果輸出
相關程式碼跟各方法的意義與優缺我放在明天說明。
這邊最後再提兩點
機器學習的方法當然還有很多,像基因演算法、模糊控制(fuzzy control)跟隱馬可夫鏈(HMM, Hidden Marcov Chain)[註1]都是機器學習的方法之一,這邊提的是跟分類有關的常用方法。結論:只要能達成你的目的的方法就是好方法!
大家明天見!
[註1] 隱馬可夫鏈(HMM, Hidden Marcov Chain),有看到用此方法來做數字0~9的語音辨識。這個方法非常常用及重要,跟「序列(sequential)」有關的問題如自然語言處理領域(分詞、詞性標註、語音辨識等)都有它的存在。不過發現不是很確定它怎麼做到手寫數字辨識的(寫字筆畫順序關係?),所以就沒有特別提它了