[分享] 機器學習工作坊 Machine Learning Workshop
Machine learning workshop I - image classification from Yun-tao Chen
<概念簡介>
<概念簡介>
傳統的程式與 “機器學習” 程式之間的差異
傳統的程式是寫一套 “規則”,當程式接收我們的輸入 “input” 時,經過程式裡寫死的準則 “rule” 運算後,產生出我們輸入對應到的結果 “result”。
(input + rule → result)
(input + rule → result)
而機器學習的程式則是,根據我們輸入 “input” 的訊息,以及該輸入相對應的結果資料 “result”,讓模型自動產生出判斷準則 “rule”,訓練完成的判斷準則,就是我們要的機器學習模型,作為日後判斷新資料時使用。
(input + result → rule)
(input + result → rule)
以上兩者的目的都是為了讓我們能夠得到良好的 Rule 來做出特定的功能
只是 Rule 的產生模式不一樣
只是 Rule 的產生模式不一樣
- 傳統做法:Rule 出自於我們自定義寫好的程式邏輯
- 機器學習:Rule 是由透過大量 input 與 reslut 組合的資料
那麼,透過數據訓練的機器學習模型,是否會比我們直接寫死的 Rule 還要好呢?
這個問題的答案就要看我們 “想處理什麼樣的問題”
舉例來說,倘若要處理問題的是:輸入兩個數字 a 和 b,判斷 a 是否大於 b ?
一般的做法下,我們只需要透過簡單的判斷式規則即可解
if a > b:
return True
else:
return False
如果是透過大數據與機器學習演算法來解這的問題,我們則需要準備大量的數據,透過大數據自動調整演算法中的參數,逐漸產生好的判斷規則。
數據的長相,可能類似像這樣的
a | b | result |
---|---|---|
2 | 3 | False |
3 | 2 | True |
1 | 4 | False |
1 | 0 | True |
3 | 3 | False |
機器如果想要學完 a > b 所有的情況 (case) 基本上是不可能,因為實數的集合是無限大,我們準備的資料不可能囊括所有的 case,訓練出來的機器學習模型在這樣的問題上,就無法保證 100% 會是對的。
但如果今天我們要解的問題是:
這張圖片裡是不是貓?
首先,做 “影像辨識” 這樣的任務,就沒有一套很明確的規則
舉個例子: “判斷圖片裡是否是貓”,就沒有一定的依據,
判斷依據可能是,耳朵像三角形,或是摺起來,有鬍鬚,眼睛可能是瞇起來的,或是睜開的,姿勢可能是坐著,站著,顏色有各式各樣,有時候拍照角度又可能只有局部的畫面。
因此要使用自訂義的準則去判斷 “一張圖片裡面是否是貓”,這樣的準則會非常地繁複且龐大。
判斷依據可能是,耳朵像三角形,或是摺起來,有鬍鬚,眼睛可能是瞇起來的,或是睜開的,姿勢可能是坐著,站著,顏色有各式各樣,有時候拍照角度又可能只有局部的畫面。
因此要使用自訂義的準則去判斷 “一張圖片裡面是否是貓”,這樣的準則會非常地繁複且龐大。
因此這樣的問題,就適合採用機器學習的方法,透過大量的 “貓咪圖片” 資料,與 “不是貓咪的圖片” 來訓練出一個辨識貓的機器學習模型(產生辨識貓咪的複雜規則)
機器學習在做的事情就是 “找一個好的 Function”
透過上述例子,我們知道透過大量資料,可以讓機器學習模型,調整出一個複雜的準則 (Rule),而達到能處理複雜任務(如影像辨識)的功能 Function
依據 Function 的 output,大概可以分為兩大類
- Regression 回歸問題: Function 的 Output 是一個浮點數
- Classification 分類問題: Function 的 Output 是一個或多個類別
評估 Function 的好壞的方式是非常重要的一個環節
機器學習模型成效評估
評估機器學習模型的策略,以及資料準備的處理方式,都是機器學習領域當中,非常重要的環節。有好的評估準則,才能讓我們挑出好的機器學習模型,用在適合的情境當中。在做分類問題時,統計學當中有三個很常用的指標,分別為精確率 (Precirion),召回率 (Recall),與F值(F Score)
以「辨識是否有疾病」的分類準確度為例:
以「辨識是否有疾病」的分類準確度為例:
- 精確率 代表我們辨識模型推斷「有病」的案例當中,實際上有病的比例。
- 召回率 代表實際有病的案例當中,成功被辨識模型偵測到的比例。
- F值 則是將精確率,召回率做一個加權平均後,所計算出來的指標。
由以上案例可見,光是一個分類問題,就可以從許多不同的面向去探討模型是否「準確」,如果想要綜合評估模型的表現,我們可以採用像是 F Score 這樣的綜合指標來評估模型整體表現。
“神經網路” 與 “深度學習” 簡介
目前的影像辨識領域,大量採用機器學習知名的神經網路 (Neural Network 簡稱 NN) 架構,在顯示卡與運算能力發展進步的幫助下,讓我們可以擁有足夠的運算能力,在短時間內運算處理多層 (深層) 的神經網路架構,發展出深度學習 (Deep Learning) 這樣的演算法,突破了影像辨識多年來的瓶頸。
Deep Learning 演算法架構針對不同的問題,也發展出許多變形,例如用於處理影像的 Convolutional Neural Network (CNN) 模型,以及用於處理時間序列資料如做文本翻譯,語音辨識的 Recurrent Neural Network (RNN) 模型。
許多知名的 CNN 架構在影像辨識比賽中取得優異的成績,例如 Google 的 Inception 系列,微軟的 ResNet 系列,都是知名的設計,有興趣可以查關鍵字追一下最新發展喔。
Good website
回覆刪除