機器學習2021 - 機器學習基本概念
機器學習2021 - 機器學習基本概念
機器學習 (Machine Learning, ML) 概括來說,就是讓機器具備尋找一個函式 (Function) 的能力。這個函式能夠接收輸入(例如聲音訊號、圖片或圍棋盤面)並產生對應的輸出(例如文字、內容描述或下一步的落子位置)。
由於這些任務所需的函式往往極度複雜,人類無法手動寫出其數學方程式,因此我們期望藉由機器的力量來自動找到這個函式。
機器學習的三大類任務
隨著需要尋找的函式不同,機器學習的任務也分為不同的類別。
- 迴歸 (Regression) 迴歸任務的目標是找到一個函式,其輸出是一個數值 (scalar)。
• 範例: 預測未來某一時間的 PM2.5 數值。
• 函式結構: 輸入可能是今日的 PM2.5、平均溫度、臭氧濃度等,輸出則是明天中午 PM2.5 的數值。
- 分類 (Classification) 分類任務要求機器從人類事先準備好的一組選項(稱為類別 (classes) 或選項)中,選擇一個作為輸出。
• 範例: 電子郵件的垃圾郵件偵測。函式輸入是一封郵件,輸出是「是垃圾郵件」或「不是垃圾郵件」這兩個選項之一。
• 多選範例: AlphaGo 也可以視為一個分類問題,其選項是棋盤上 19 乘 19 個可落子的位置。
- 結構化學習 (Structured Learning) 除了迴歸和分類這兩大類任務之外,還有所謂的結構化學習,被稱為機器學習領域的「黑暗大陸」。
• 目標: 機器不只是輸出一個數字或一個選項,而是產生一個有結構的物件。
- 範例: 讓機器畫一張圖、寫一篇文章,或者用更擬人化的說法,讓機器學會「創造」。
機器尋找函式的三個基本步驟
無論是哪一種機器學習任務,機器尋找函式(或參數)的過程通常分為三個主要步驟。這裡以預測 YouTube 頻道隔天總點閱率的迴歸任務為例進行說明。
第一步:寫出一個帶有未知參數的函式 (Model)
首先,我們需要猜測欲尋找的函式的數學形式。
• 模型 (Model): 帶有未知參數的函式稱為模型。
• 假設: 假設隔天的點閱次數與前一天的點閱次數成線性關係,模型可寫成 y = b + w \times。
• 參數定義:
◦ 特徵 (Feature): 函式中已知的輸入資料,如前一天的點閱次數。
◦ 參數 (Parameter): 函式中未知的數值,需要透過資料找出。
◦ 權重 (Weight): 與特徵相乘的未知參數。
◦ 偏差 (Bias): 直接相加的未知參數。
• 領域知識 (Domain knowledge): 模型的初步猜測通常來自於對問題本質的了解。
第二步:定義一個損失函式 (Loss)
我們需要一個方法來評估一組參數的好壞。
• 損失函式 (Loss Function): 損失函式是一個以模型參數(如 b 和 w)為輸入的函式。
• Loss 的意義: 損失函式的輸出值代表當參數設定為某個數值時,這組數值的好壞程度。L越大代表這組參數越不好;L 越小代表越好。
• 計算方式: 使用訓練資料(例如頻道過去數年的點閱次數)進行計算。
◦ 訓練資料中的真實數值稱為標籤 (Label)。
◦ 計算模型預估的值 (y) 與真實標籤之間的差距。
◦ 常見的差距計算方法包括:
▪ 平均絕對誤差 (MAE): 計算 y與 \hat{y} 絕對值的差距。
▪ 均方誤差 (MSE): 計算 y 與 \hat{y}相減後取平方。
◦ 將所有訓練資料的誤差加總或取平均,就得到總損失 L。
• 誤差曲面 (Error Surface): 嘗試不同的參數組合並計算其 Loss 後,可以繪製出一個等高線圖,這張圖被稱為誤差曲面。
第三步:最佳化 (Optimization)
這一步驟是解一個最佳化問題,目的是找到一組能讓 Loss 值最小化的參數 (w, b)。
• 梯度下降法 (Gradient Descent): 這是本課程唯一使用的最佳化方法。
• 運作原理:
-
隨機選取一個初始點 (w⁰, b⁰)。
-
計算 Loss 對於所有未知參數的微分(即梯度 Gradient)。梯度指出了參數應移動的方向。
-
根據梯度和學習速率更新參數。
▪ 更新公式:$w^{t+1} = w^t — \eta \times (\text{微分結果})$。
- 重複此過程,直到達到停止條件(例如達到預設的最大更新次數,或微分值趨近於零)。
• 超參數 (Hyperparameter): 在機器學習過程中,需要自行設定的數值,例如學習速率 ($\eta$)、模型層數或 Sigmoid 數目等。
• 局部最小值 (Local Minima): 梯度下降法可能遇到的問題是訓練停在局部最小值,而不是真正能讓 Loss 最小化的全域最小值 (Global Minima)。
線性模型的限制與深度學習的引入
基本的線性模型 (Linear Model),例如 y = b + w \times x_l,限制性很大,它只能模擬輸入 (x_l) 和輸出 (y) 之間的直線關係。
• 模型偏差 (Model Bias): 這種來自於模型本身的限制,使其無法模擬複雜的真實非線性狀況,稱為模型偏差。
• 解決方法: 我們需要一個更有彈性的函式。
構建複雜函式 (深度學習基礎)
一個複雜的曲線可以看作是由許多簡單的「藍色函式」(或稱 Hard Sigmoid)和一個常數項組合而成的。
• Sigmoid 函式: 一種 S 型函式,可以逼近這種藍色函式。
• 疊加 Sigmoid: 透過調整 Sigmoid 函式中的參數 (w, b, c),可以產生不同形狀的 Sigmoid。將足夠多的不同 Sigmoid 函式疊加起來,就可以逼近任何連續的曲線 (Continuous Function)。
神經網路與深度學習的架構
當我們將多個 Sigmoid 函式組合起來,形成一個更有彈性的模型時,就進入了神經網路的概念。
• 激活函式 (Activation Function): Sigmoid 或 校正線性單元 (Rectified Linear Unit, ReLU) 這些函式在機器學習中統稱為激活函式。
• 神經元 (Neuron): 每個 Sigmoid 或 ReLU 單元被稱為神經元。
• 類神經網路 (Neural Network): 許多神經元串聯起來,構成神經網路。
• 隱藏層 (Hidden Layer): 模型中位於輸入和輸出之間的每一排神經元稱為隱藏層。
• 深度學習 (Deep Learning): 當神經網路包含多個隱藏層(即將神經元反覆堆疊多次),網路變得「深」(Deep) 時,這項技術就被稱為深度學習。
訓練細節與過度擬合
在使用複雜模型進行最佳化時,雖然步驟仍是梯度下降,但參數數量大幅增加。
• 梯度 (Gradient): 將所有參數對 Loss 的微分值集合起來,形成一個向量,稱為梯度。
• 批次 (Batch): 實務上,通常不會用所有資料計算總 Loss ($L$),而是將資料分成小批次 (Batch),依序用每個 Batch 算出的 Loss ($L_1, L_2, \dots$) 來計算梯度並更新參數。
• 更新 (Update): 每更新一次參數稱為一次 Update。
• 週期 (Epoch): 將所有的 Batch 都看過一次稱為一個 Epoch。
過度擬合 (Overfitting)
在訓練模型時,可能會出現過度擬合的狀況。
• 定義: 過度擬合是指模型在訓練資料上的 Loss 雖然持續降低,但在未看過的資料(測試資料)上的 Loss 卻沒有變好,甚至變差。
• 模型選擇: 由於我們真正在意的是模型對未來、未看過資料的預測能力,因此在選擇模型時,應選擇在未看過資料上表現最好的模型。
Comments
Loading comments…
Leave a Comment