模型與演算法:機器學習的核心概念
機器學習的核心在於模型和演算法。簡單來說,模型是一種數學表達式,用來描述資料中變數之間的關係;而演算法則是尋找模型中最佳參數的過程。例如,在線性迴歸中,$y = a_0 + a_1x$ 便是模型,它定義了 x 與 y 的線性關係;而用來求解最佳 $a_0$ 和 $a_1$ 值的過程,就是演算法。
衡量模型表現:誤差與均方誤差(MSE)
為了評估模型的好壞,我們需要一個衡量的標準,這就是誤差。誤差代表模型預測值與真實值之間的差距。均方誤差(Mean Squared Error, MSE) 則是計算所有誤差平方的平均值,它能更全面地評估模型的擬合效果。MSE 越小,代表模型預測越精確,擬合效果越好。機器學習訓練的最終目標,就是找到一組能使誤差(特別是 MSE)最小化的參數。
模型的訓練:疊代與梯度下降法
模型的訓練過程,也就是尋找最佳參數的過程,通常會採用疊代法。疊代法利用電腦的重複運算能力,不斷嘗試新的參數組合,直到找到能使誤差最小化的那一組。
而梯度下降法(Gradient Descent) 則是其中一種最經典的疊代演算法。它的原理就像在山坡上尋找最低點:
-
選擇起始點:隨機選擇一組初始參數值(例如 $a_0, a_1$)。
-
確定方向:計算當前位置的梯度(gradient),它指向函數值增加最快的方向。為了找到最小值,我們必須沿著梯度的反方向前進,也就是「下坡」的方向。
-
調整步長:每次「下山」的距離稱為步長(learning rate)。步長是機器學習中的一個超參數(Hyperparameter),需要人工設定。步長過小會導致訓練速度慢,步長過大則可能錯過最小值。
-
重複疊代:不斷重複上述步驟,直到模型收斂,也就是誤差不再有明顯變化,找到一個相對穩定的最低點。
需要注意的是,梯度下降法不一定能找到全局最優解,可能只會陷入局部最優解。但如果誤差函數是凸函數(convex function),則可以保證找到全局最優解,因為最小值的的地方就是梯度為 0 的地方。
三種常見的梯度下降法
根據每次疊代使用的資料量,梯度下降法主要分為三種:
-
批次梯度下降法(Batch Gradient Descent):每次疊代都使用全部的訓練資料來計算梯度並更新參數。雖然結果穩定,但當資料量非常大時,訓練速度會非常慢。
-
隨機梯度下降法(Stochastic Gradient Descent, SGD):每次疊代只隨機選取一筆資料來更新參數。優點是訓練速度快,但由於每次只用一筆資料,梯度方向變化大,導致收斂過程震盪劇烈,可能不夠穩定。
-
小批次梯度下降法(Mini-Batch Stochastic Gradient Descent, Mini-Batch SGD):這是上述兩種方法的折衷。每次疊代使用一小部分的資料(稱為 mini-batch)來更新參數。它兼顧了訓練速度與收斂穩定性,是實務上最常用的方法。