機器學習簡介
Learn from data、深度學習
經典定義:利用經驗改善系統自身的效能 [T. Mitchell 教科書, 1997]。
資料 -> 演算法 -> 模型
基本術語
資料:
-
資料集;訓練;測試
-
示例(instance);樣例(example)
-
樣本(sample)
-
屬性(attribute);特徵(feature);屬性值
-
屬性空間;樣本空間;輸入空間
-
特徵向量(feature vector)
-
類別標記(label)
-
標記空間;輸出空間
模型:
-
假設(hypothesis)
-
真相(ground-truth)
-
學習器(learner)
任務:
- 分類(離散);迴歸(連續)
- 二分類;多分類
- 正類;反類
是否有標註資訊:
-
監督學習(supervised learning)
-
無監督學習(unsupervised learning)
-
自監督學習(self-supervised learning)
測試:
- 未見樣本(unseen instance)
- 未知“分佈”
- 獨立同分布(i.i.d.)
- 泛化(generalization)
典型的機器學習過程
什麼模型好?
泛化能力強:能很好地適用於unseen instance,錯誤率低,精度高。
機器學習有堅實的理論基礎
計算學習理論(Computational learning theory)
最重要的理論模型:PAC(Probably Approximately Correct,機率近似正確)learning model [Valiant, 1984]
歸納偏好(Inductive Bias)
機器學習演算法在學習過程中對某種型別假設的偏好。
一般原則:奧卡姆剃刀——若非必要勿增實體
任何一個有效的機器學習演算法必有其偏好。
學習演算法的歸納偏好是否與問題本身匹配,大多數時候直接決定了演算法能否取得好的效能。
沒有免費午餐(NFL)定理:一個演算法 \(\mathcal{L}_a\) 若在某些問題上比另一個演算法 \(\mathcal{L}_b\) 好,必存在另一些問題 \(\mathcal{L}_b\) 比 \(\mathcal{L}_a\) 好。
評估方法
關鍵:怎麼獲得“測試集”(test set)?
測試集應該與訓練集“互斥”
常見方法:
- 留出法(hold-out)
- 交叉驗證法(cross validation)
- 自助法(bootstrap)
留出法
注意:
- 保持資料分佈一致性(例如:分層取樣)
- 多次重複劃分(例如:100次隨機劃分)
- 測試集不能太大、不能太小(例如:1/5~1/3)
\(k\)-折交叉驗證法
若 \(k=m\) ,則得到“留一法”(leave-one-out, LOO)
效能度量
效能度量(performance measure)是衡量模型泛化能力的評價標準,反映了任務需求。
使用不同的效能度量往往會導致不同的評判結果。
什麼樣的模型是“好”的,不僅取決於演算法和資料,還取決於任務需求。
-
迴歸(regression)任務常用均方誤差(MSE):
\[E(f;D) = \frac{1}{m}\sum_{i=1}^m(f(x_i) - y_i)^2 \] -
錯誤率:
\[E(f;D) = \frac{1}{m}\sum_{i=1}^m\mathbb{I}(f(x_i)\neq y_i) \] -
精度:
\[\begin{align} acc(f;D) &= \frac{1}{m}\sum_{i=1}^m\mathbb{I}(f(x_i) = y_i) \\ &= 1 - E(f;D) \end{align} \]
線性模型
線性模型(linear model)試圖學得一個透過屬性的線性組合來進行預測的函式。
向量形式
線性迴歸(Linear Regression)
離散屬性的處理:若有“序”(order),則連續化;否則,轉化為 \(k\) 維向量。
令均方誤差最小化,有
對 \(E_{(\boldsymbol{w},b)} = \sum_{i=1}^m(y_i-\boldsymbol{w}^\mathrm{T}\boldsymbol{x}_i-b)^2\) 進行最小二乘估計。
最佳化目標
基本思路:最佳化模型的經驗誤差,同時控制模型的複雜度。
其中 \(\mathscr{l}_{0/1}\) 是 \(0/1\) 損失函式(0/1 loss function)
障礙:\(0/1\) 損失函式非凸、非連續,不易最佳化!
替代損失(Surrogata Loss)
- 採用替代損失函式,是在解決困難問題時的常見技巧。
- 求解替代函式得到的解是否仍是原問題的解?理論上成為替代損失的“一致性”(Consistency)問題。
軟間隔支援向量機(Soft-margin Support Vector Machine)
原始問題
引入“鬆弛量”(Slack Varinbles)\(\xi_i\)
對偶問題
正則化(Regularization)
統計學習模型(例如SVM)的更一般形式
正則化項 \(\Omega(f)\) :結構風險(Structural Risk)描述模型本身的某些性質,歸納偏好。
損失函式 \(l(f(\boldsymbol{x}_i),y_i)\) :經驗風險(Empirical Risk)描述模型與訓練資料的契合程度。
- 正則化可理解為“罰函式法”,透過對不希望的結果施以懲罰,使得最佳化過程趨向於希望目標。
- 從貝葉斯估計的角度,則可認為是提供了問題的先驗機率。
多層前饋網路結構
-
多層網路:包含隱層的網路。
-
前饋網路:神經元之間不存在同層連線也不存在跨層連線。
-
隱層和輸出層神經元亦稱“功能單元”(Functional Unit)。
多層前饋網路有強大的表示能力(“萬有逼近性”):
僅需一個包含足夠多神經元的隱層,多層前饋神經網路就能以任意精度逼近任意複雜度的連續函式 [Hornik et al., 1989]。
但是,如何設定隱層神經元數是未決問題(Open Problem),實際常用“試錯法”。
”簡單單元“:神經元模型
M-P神經元模型 [McCulloch and Pitts, 1943]
神經網路學得的知識蘊含在連線權與閾值中。
決策樹模型
決策樹基於”樹“結構進行決策
- 每個”內部節點“對應於某個屬性上的”測試“(test)。
- 每個分支對應於該測試的一種可能結果(即該屬性的某個取值)。
- 每個”葉節點“對應於一個”測試結果”。
學習過程:透過對訓練樣本的分析來確定“劃分屬性”(即內部節點所對應的屬性)。
預測過程:將測試示例從根節點開始沿著劃分屬性所構成的“判定測試序列“下行,直到葉節點。
策略:“分而治之”(divide-and-conquer)
最佳化方法
無約束最佳化
- 零階最佳化方法:\(f(\boldsymbol{x})\) .
- 一階最佳化方法:\(f(\boldsymbol{x}),\nabla f(\boldsymbol{x})\) .
- 高階最佳化方法:\(f(\boldsymbol{x}),\nabla f(\boldsymbol{x}),\nabla^2f(\boldsymbol{x}),\dots\) .
- 隨機最佳化方法:隨機子集.
類別不平衡(class-imbalance)
不同類別的樣本比例相差很大;“小類”往往更重要。
基本思路:
\(y\) 正類機率
基本策略——“再縮放”(rescaling):
然而,精確估計 \(\frac{m^-}{m^+}\) 通常很困難!
常見類別不平衡學習方法:
- 過取樣(oversampling)
例如:SMOTE - 欠取樣(undersampling)
例如:EasyEnsemble - 閾值移動(threshold-moving)
多分類學習
拆解法:將一個多分類任務拆分為若干個二分類任務求解。
OvO:
- 訓練 \(\frac{N(N-1)}{2}\) 個分類器,儲存開銷和測試時間大。
- 訓練只用兩個類的樣例,訓練時間短。
OvR:
- 訓練 \(N\) 個分類器,儲存開銷和測試時間小。
- 訓練用到全部訓練樣例,訓練時間長。
預測效能取決於具體資料分佈,多數情況下兩者差不多。
討論
傳統機器學習方法 vs. 當代大模型方法