ML workshop 概念說明草稿

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

機器學習領域的原物料就是大量的資料,也是俗稱的大數據
有了大數據後,我們透過大量的資料來訓練機器學習模型,目的就是讓機器學習模型能夠 “看懂” 資料。

傳統的程式是寫一套 "規則",當程式接收我們的輸入 "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

如果是透過大數據與機器學習演算法來解這的問題,我們則需要準備大量的數據,透過大數據自動調整演算法中的參數,逐漸產生好的判斷規則。

數據的長相,可能類似像這樣的

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,大概可以分為兩大類

  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 架構在影像辨識比賽中取得優異的成績,例如 GoogleInception 系列,微軟ResNet 系列,都是知名的設計,有興趣可以查關鍵字追一下最新發展喔。

相關資源推薦
台大李宏毅教授的 Youtube 頻道:
https://www.youtube.com/channel/UC2ggjtuuWvxrHHHiaDH1dlQ

Stanford Universaty Machine Learning 線上課程:
https://www.coursera.org/learn/machine-learning

Select a repo