[分享] 機器學習工作坊 Machine Learning Workshop


Machine learning workshop I - image classification from Yun-tao Chen

<概念簡介>

傳統的程式與 “機器學習” 程式之間的差異


機器學習領域的原物料就是大量的資料,也是俗稱的大數據
有了大數據後,我們透過大量的資料來訓練機器學習模型,目的就是讓機器學習模型能夠 “看懂” 資料。
傳統的程式是寫一套 “規則”,當程式接收我們的輸入 “input” 時,經過程式裡寫死的準則 “rule” 運算後,產生出我們輸入對應到的結果 “result”。
(input + rule → result)
而機器學習的程式則是,根據我們輸入 “input” 的訊息,以及該輸入相對應的結果資料 “result”,讓模型自動產生出判斷準則 “rule”,訓練完成的判斷準則,就是我們要的機器學習模型,作為日後判斷新資料時使用。
(input + result → rule)
以上兩者的目的都是為了讓我們能夠得到良好的 Rule 來做出特定的功能
只是 Rule 的產生模式不一樣
  • 傳統做法:Rule 出自於我們自定義寫好的程式邏輯
  • 機器學習:Rule 是由透過大量 input 與 reslut 組合的資料
那麼,透過數據訓練的機器學習模型,是否會比我們直接寫死的 Rule 還要好呢?
這個問題的答案就要看我們 “想處理什麼樣的問題”
舉例來說,倘若要處理問題的是:輸入兩個數字 a 和 b,判斷 a 是否大於 b ?
一般的做法下,我們只需要透過簡單的判斷式規則即可解
if a > b:
    return True
else:
    return False
如果是透過大數據與機器學習演算法來解這的問題,我們則需要準備大量的數據,透過大數據自動調整演算法中的參數,逐漸產生好的判斷規則。
數據的長相,可能類似像這樣的
abresult
23False
32True
14False
10True
33False
機器如果想要學完 a > b 所有的情況 (case) 基本上是不可能,因為實數的集合是無限大,我們準備的資料不可能囊括所有的 case,訓練出來的機器學習模型在這樣的問題上,就無法保證 100% 會是對的。
但如果今天我們要解的問題是:
這張圖片裡是不是貓?
首先,做 “影像辨識” 這樣的任務,就沒有一套很明確的規則
舉個例子: “判斷圖片裡是否是貓”,就沒有一定的依據,
判斷依據可能是,耳朵像三角形,或是摺起來,有鬍鬚,眼睛可能是瞇起來的,或是睜開的,姿勢可能是坐著,站著,顏色有各式各樣,有時候拍照角度又可能只有局部的畫面。
因此要使用自訂義的準則去判斷 “一張圖片裡面是否是貓”,這樣的準則會非常地繁複且龐大。
因此這樣的問題,就適合採用機器學習的方法,透過大量的 “貓咪圖片” 資料,與 “不是貓咪的圖片” 來訓練出一個辨識貓的機器學習模型(產生辨識貓咪的複雜規則)

機器學習在做的事情就是 “找一個好的 Function”

透過上述例子,我們知道透過大量資料,可以讓機器學習模型,調整出一個複雜的準則 (Rule),而達到能處理複雜任務(如影像辨識)的功能 Function
依據 Function 的 output,大概可以分為兩大類
  1. Regression 回歸問題: Function 的 Output 是一個浮點數
  2. 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 系列,都是知名的設計,有興趣可以查關鍵字追一下最新發展喔。

線上課程資源推薦

台大李宏毅教授的 Youtube 頻道:
https://www.youtube.com/channel/UC2ggjtuuWvxrHHHiaDH1dlQ

留言

張貼留言

這個網誌中的熱門文章

[筆記] CRLF跟LF之區別 --- 隱形的 bug

[ML筆記] Batch Normalization

[筆記] 統計實習(1) SAS 基礎用法 (匯入資料並另存SAS新檔,SUBSTR,計算總和與平均,BMI)

[ML筆記] Ensemble - Bagging, Boosting & Stacking