玩統計機器學習筆記

損失函數、機率與資訊理論Loss, Likelihood & Information Theory

從範數與損失函數出發,連結最大概似、最大後驗與正則化,再用熵與 KL 散度說明交叉熵為何是分類問題的標準損失。

第 6 章,共 11 章|初版 2019 年 4 月・2026 年 10 月修訂

本章內容
  1. 6.1距離與範數
  2. 6.2損失函數
  3. 6.3最大概似與最大後驗
  4. 6.4支持向量機
  5. 6.5熵
  6. 6.6最小描述長度
  7. 6.7KL 散度與交叉熵
  8. 6.8參考資料

損失函數決定了模型「在意什麼樣的錯誤」:大誤差要重罰還是輕罰、分對但不夠有把握的資料算不算錯。選擇損失函數看似是工程上的細節,背後卻連著機率與資訊理論中幾個非常基本的概念。

這一章把這些概念串起來:平方損失其實是高斯雜訊下的最大概似估計,脊迴歸是加上高斯先驗的最大後驗估計,SVM 是鉸鏈損失加上 L2 正則化,而分類問題最常用的交叉熵,就是在最小化模型與資料分布之間的 KL 散度。

6.1距離與範數Distances & Norms

距離函數

距離函數(distance function,又稱度量 metric)dd 衡量兩個點有多遠,必須滿足以下條件:

d(x,y)≥0,d(x,y)=0  ⟺  x=yd(x,y)=d(y,x)d(x,z)≤d(x,y)+d(y,z) \begin{aligned} & d(x, y) \ge 0, \quad d(x, y) = 0 \iff x = y \\ & d(x, y) = d(y, x) \\ & d(x, z) \le d(x, y) + d(y, z) \end{aligned}

也就是非負、只有同一點的距離為 0、對稱,以及三角不等式。後面會看到,KL 散度不滿足其中的對稱性與三角不等式,因此不是距離。

Lp 範數

最常用的距離由 LpL_p 範數(norm)定義:

∥x∥p=(∑i=1d∣xi∣p)1/p,dp(x,y)=∥x−y∥p \lVert \mathbf{x} \rVert_p = \Big(\sum_{i=1}^{d} \lvert x_i \rvert^p\Big)^{1/p}, \qquad d_p(\mathbf{x}, \mathbf{y}) = \lVert \mathbf{x} - \mathbf{y} \rVert_p

p=1p = 1 是曼哈頓距離,p=2p = 2 是歐幾里得距離,p→∞p \to \infty 時則成為 max⁡i∣xi∣\max_i \lvert x_i \rvert。只有 p≥1p \ge 1 時才是真正的範數;0<p<10 < p < 1 時三角不等式不成立,單位球也不再是凸的。L0L_0 則是「非零元素的個數」,連 ∥αx∥=∣α∣∥x∥\lVert \alpha \mathbf{x} \rVert = \lvert \alpha \rvert \lVert \mathbf{x} \rVert 都不滿足,因此只能稱為偽範數(pseudo-norm)。

名稱 定義 是否為範數 作為懲罰項的凸性
L0L_0 非零元素個數 否(偽範數) 非凸
L1/2L_{1/2} (∑i∣xi∣1/2)2\big(\sum_i \lvert x_i \rvert^{1/2}\big)^2 否 非凸
L1L_1 ∑i∣xi∣\sum_i \lvert x_i \rvert 是 凸
L2L_2 (∑ixi2)1/2\big(\sum_i x_i^2\big)^{1/2} 是 凸

為什麼凸性重要

函數 ff 是凸函數(convex function),若對任意兩點與 λ∈[0,1]\lambda \in [0, 1] 都有

f(λx+(1−λ)y)≤λf(x)+(1−λ)f(y) f\big(\lambda x + (1-\lambda) y\big) \le \lambda f(x) + (1-\lambda) f(y)

幾何上就是「任兩點之間的弦都在函數圖形上方」。對二次可微的函數,這等價於二階導數非負(多變數時為 Hessian 矩陣半正定);但凸函數不一定可微,例如 ∣x∣\lvert x \rvert 在 0 沒有導數,仍然是凸函數。所有範數都是凸函數。

凸的損失加上凸的懲罰項,任何局部最小值都是全域最小值,最佳化既可靠又有效率。L0L_0 懲罰最直接地鼓勵稀疏,但求解是組合問題,計算上不可行;L1L_1 是最接近 L0L_0 的凸替代(convex relaxation),既保有產生稀疏解的能力,又能有效求解,這正是套索迴歸(lasso)的基礎(見第 3 章與第 9 章)。

6.2損失函數Loss Functions

迴歸問題

令殘差 r=y−y^r = y - \hat y。三種最常見的迴歸損失:

  • 平方損失(squared loss) r2r^2:最小化它得到的是條件期望值。大誤差被平方放大,因此對離群值(outlier)非常敏感。
  • 絕對損失(absolute loss) ∣r∣\lvert r \rvert:最小化它得到的是條件中位數,對離群值穩健,但在 r=0r = 0 不可微。
  • Huber 損失(Huber loss):小誤差時像平方損失,大誤差時像絕對損失。
Lδ(r)={12r2,∣r∣≤δδ(∣r∣−12δ),∣r∣>δ L_\delta(r) = \begin{cases} \tfrac{1}{2} r^2, & \lvert r \rvert \le \delta \\ \delta\big(\lvert r \rvert - \tfrac{1}{2}\delta\big), & \lvert r \rvert > \delta \end{cases}

在 ∣r∣=δ\lvert r \rvert = \delta 處,兩段的函數值與斜率都相接,因此整體一階連續可微(二階導數在 ∣r∣=δ\lvert r \rvert = \delta 處不連續);超過 δ\delta 之後只隨誤差線性成長,單一離群值不會主導整個模型。δ\delta 決定「多大的誤差算離群」。

分類問題

二元分類時令標籤 y∈{−1,+1}y \in \{-1, +1\}、模型輸出分數 f(x)f(\mathbf{x}),並定義邊際(margin)m=yf(x)m = y f(\mathbf{x}):m>0m > 0 代表分對,mm 越大代表越有把握。各種分類損失都可以寫成 mm 的函數:

損失 公式 代表模型 特性
0-1 損失 I(m≤0)\mathbb{I}(m \le 0) 評估用 非凸、不連續,難以直接最佳化
邏輯損失 log⁡(1+e−m)\log(1 + e^{-m}) 邏輯迴歸 凸且平滑,可解讀為機率
鉸鏈損失 max⁡(0, 1−m)\max(0,\ 1 - m) SVM 凸,m≥1m \ge 1 時損失為 0
指數損失 e−me^{-m} AdaBoost 凸,對分錯的點懲罰極重

真正關心的是 0-1 損失(分錯幾筆),但它無法用梯度最佳化,因此實務上改用這些凸的替代損失(surrogate loss)。邏輯損失若改用 {0,1}\{0, 1\} 標籤與預測機率表示,就是二元交叉熵(見第 7 章);指數損失對大錯誤的懲罰成指數成長,這也是 AdaBoost 對雜訊敏感的原因(見第 5 章)。

6.3最大概似與最大後驗MLE & MAP

最大概似估計(MLE)

給定獨立同分布的資料 D={x1,…,xn}D = \{x_1, \dots, x_n\} 與參數 θ\theta,最大概似估計(Maximum Likelihood Estimation, MLE)選擇讓資料出現機率最大的參數:

θ^MLE=arg max⁡θ p(D∣θ)=arg max⁡θ ∑i=1nlog⁡p(xi∣θ) \hat\theta_{\text{MLE}} = \operatorname*{arg\,max}_{\theta}\ p(D \mid \theta) = \operatorname*{arg\,max}_{\theta}\ \sum_{i=1}^{n} \log p(x_i \mid \theta)

取對數是因為對數是單調函數,不改變最大值的位置,又能把連乘變成連加,數值上也更穩定。把它加上負號,就是我們熟悉的「最小化損失」:損失函數往往就是負對數概似。例如在線性迴歸中假設 yi=θ⊤xi+εiy_i = \theta^\top \mathbf{x}_i + \varepsilon_i、εi∼N(0,σ2)\varepsilon_i \sim \mathcal{N}(0, \sigma^2),則

−log⁡p(y∣X,θ)=12σ2∑i=1n(yi−θ⊤xi)2+const -\log p(\mathbf{y} \mid X, \theta) = \frac{1}{2\sigma^2}\sum_{i=1}^{n}\big(y_i - \theta^\top \mathbf{x}_i\big)^2 + \text{const}

最大化概似等於最小化平方誤差。同理,假設標籤服從伯努利分布,就會得到交叉熵損失。

最大後驗估計(MAP)

最大後驗估計(Maximum A Posteriori, MAP)在概似之外,再加上對參數的先驗信念 p(θ)p(\theta)。由貝氏定理 p(θ∣D)∝p(D∣θ) p(θ)p(\theta \mid D) \propto p(D \mid \theta)\,p(\theta):

θ^MAP=arg max⁡θ [log⁡p(D∣θ)+log⁡p(θ)] \hat\theta_{\text{MAP}} = \operatorname*{arg\,max}_{\theta}\ \Big[\log p(D \mid \theta) + \log p(\theta)\Big]

也就是 MLE 的目標再加上一項對數先驗。不同的先驗,正好對應不同的正則化。以上面的線性迴歸為例:

先驗 p(θj)p(\theta_j) 負對數先驗 對應的估計
均勻(無資訊) 常數 普通最小平方(MLE)
高斯 N(0,τ2)\mathcal{N}(0, \tau^2) ∥θ∥22/(2τ2)\lVert\theta\rVert_2^2 / (2\tau^2) L2,脊迴歸(ridge),λ=σ2/τ2\lambda = \sigma^2/\tau^2
拉普拉斯 Laplace(0,b)\text{Laplace}(0, b) ∥θ∥1/b\lVert\theta\rVert_1 / b L1,套索迴歸(lasso),λ=2σ2/b\lambda = 2\sigma^2/b

表中的 λ\lambda 是把負對數後驗乘上 2σ22\sigma^2 之後,寫成「殘差平方和 + λ×+\ \lambda \times 懲罰項」的係數。先驗越集中(τ\tau 或 bb 越小),正則化越強。

MAP 仍然只是一個點估計(後驗分布的眾數),不是完整的貝氏推論。先驗的實際作用,在線性可分的邏輯迴歸中特別明顯:資料完全可分時,只要把權重不斷放大,概似就能無限逼近 1,MLE 不存在、權重發散;加上高斯先驗(L2 正則化)後,解才會是有限的。詳見第 3 章。

6.4支持向量機Support Vector Machines

最大邊界

考慮二元分類 yi∈{−1,+1}y_i \in \{-1, +1\} 與線性分類器 f(x)=w⊤x+bf(\mathbf{x}) = \mathbf{w}^\top \mathbf{x} + b。如果資料線性可分,能把兩類分開的超平面有無限多個,支持向量機(Support Vector Machine, SVM)選擇的是邊界(margin)最寬的那一個:讓離超平面最近的點盡量遠,對資料的小擾動也最不敏感。

點 xi\mathbf{x}_i 到超平面的距離是 ∣w⊤xi+b∣/∥w∥\lvert \mathbf{w}^\top \mathbf{x}_i + b \rvert / \lVert \mathbf{w} \rVert。把 w,b\mathbf{w}, b 縮放到讓最近的點滿足 yif(xi)=1y_i f(\mathbf{x}_i) = 1,邊界寬度就是 2/∥w∥2 / \lVert \mathbf{w} \rVert,最大化邊界等於:

min⁡w,b 12∥w∥2s.t.yi(w⊤xi+b)≥1,i=1,…,n \min_{\mathbf{w}, b}\ \tfrac{1}{2}\lVert \mathbf{w} \rVert^2 \quad \text{s.t.} \quad y_i(\mathbf{w}^\top \mathbf{x}_i + b) \ge 1, \quad i = 1, \dots, n

軟邊界與參數 C

真實資料很少完全可分。軟邊界(soft margin)SVM 允許部分點違反邊界,以鬆弛變數 ξi≥0\xi_i \ge 0 表示違反的程度,並以 CC 控制懲罰:

min⁡w,b,ξ 12∥w∥2+C∑i=1nξis.t. yi(w⊤xi+b)≥1−ξi,ξi≥0 \begin{aligned} \min_{\mathbf{w}, b, \boldsymbol{\xi}}\ & \tfrac{1}{2}\lVert \mathbf{w} \rVert^2 + C\sum_{i=1}^{n}\xi_i \\ \text{s.t.}\ & y_i(\mathbf{w}^\top \mathbf{x}_i + b) \ge 1 - \xi_i, \quad \xi_i \ge 0 \end{aligned}

在最佳解上 ξi=max⁡(0, 1−yif(xi))\xi_i = \max\big(0,\ 1 - y_i f(\mathbf{x}_i)\big),所以它等價於一個沒有限制式的問題:

min⁡w,b ∑i=1nmax⁡(0, 1−yif(xi))+12C∥w∥2 \min_{\mathbf{w}, b}\ \sum_{i=1}^{n}\max\big(0,\ 1 - y_i f(\mathbf{x}_i)\big) + \frac{1}{2C}\lVert \mathbf{w} \rVert^2

也就是鉸鏈損失加上 L2 正則化,正則化強度 λ=1/(2C)\lambda = 1/(2C)。CC 越大,越不容許違反邊界,邊界變窄,偏誤低、變異高;CC 越小,邊界越寬,正則化越強。

支持向量

以對偶問題(dual problem)求解時,解可以寫成 w=∑iαiyixi\mathbf{w} = \sum_i \alpha_i y_i \mathbf{x}_i,其中 0≤αi≤C0 \le \alpha_i \le C。只有落在邊界上、邊界內或被分錯的點(yif(xi)≤1y_i f(\mathbf{x}_i) \le 1)才可能有 αi>0\alpha_i > 0,這些點稱為支持向量(support vectors)。其他點即使刪除,解也完全不變,因此 SVM 的解是稀疏的。對偶問題的形式如下:

max⁡α ∑iαi−12∑i∑jαiαj yiyj xi⊤xjs.t. 0≤αi≤C,∑iαiyi=0 \begin{aligned} \max_{\boldsymbol{\alpha}}\ & \sum_{i} \alpha_i - \frac{1}{2}\sum_{i}\sum_{j}\alpha_i\alpha_j\,y_i y_j\,\mathbf{x}_i^\top \mathbf{x}_j \\ \text{s.t.}\ & 0 \le \alpha_i \le C, \quad \sum_i \alpha_i y_i = 0 \end{aligned}

核技巧

注意對偶問題中,資料只以內積 xi⊤xj\mathbf{x}_i^\top \mathbf{x}_j 的形式出現。把內積換成核函數(kernel function)K(xi,xj)=ϕ(xi)⊤ϕ(xj)K(\mathbf{x}_i, \mathbf{x}_j) = \phi(\mathbf{x}_i)^\top \phi(\mathbf{x}_j),就等於在高維(甚至無限維)的特徵空間 ϕ\phi 中求解線性 SVM,卻不必真正計算 ϕ\phi,這稱為核技巧(kernel trick)。預測時:

f(x)=∑iαiyi K(xi,x)+b f(\mathbf{x}) = \sum_{i} \alpha_i y_i\, K(\mathbf{x}_i, \mathbf{x}) + b

核函數可以理解為相似度:核函數值越大,兩筆資料越相似。上式因此可以讀成「各個支持向量依它與 x\mathbf{x} 的相似度投票」。最常用的是 RBF(高斯)核:

K(x,x′)=exp⁡(−γ∥x−x′∥2) K(\mathbf{x}, \mathbf{x}') = \exp\big(-\gamma \lVert \mathbf{x} - \mathbf{x}' \rVert^2\big)

兩點相同時值為 1,距離越遠越接近 0。γ\gamma 越大,「相似」的範圍越窄,決策邊界越彎曲,容易過擬合;γ\gamma 越小,邊界越平滑。其他常見的還有多項式核 (x⊤x′+c)d(\mathbf{x}^\top \mathbf{x}' + c)^d。一個函數要成為合法的核,必須對稱,且任意一組資料算出的核矩陣都是半正定(Mercer 條件)。

實務上要注意:RBF 核以距離為基礎,特徵必須先標準化;CC 與 γ\gamma 通常以交叉驗證一起搜尋(見第 5 章);核 SVM 的訓練成本約隨樣本數的平方到三次方成長,資料量很大時通常改用線性 SVM 或其他方法;SVM 也不直接輸出機率,需要時可再做 Platt scaling 校準。

6.5熵Entropy

資訊量與熵

一個機率為 pp 的事件發生時,帶來的資訊量(information content)是 −log⁡p-\log p:越罕見的事件,越令人意外,資訊量越大;必然發生的事件資訊量為 0。熵(entropy)是資訊量的期望值,衡量一個分布的不確定性:

H(p)=−∑ipilog⁡pi=E[−log⁡p(X)] H(p) = -\sum_{i} p_i \log p_i = \mathbb{E}\big[-\log p(X)\big]

對數以 2 為底時單位是位元(bit),以 ee 為底時是奈特(nat)。由於 lim⁡p→0+plog⁡p=0\lim_{p \to 0^+} p \log p = 0,約定 0log⁡0=00 \log 0 = 0:不可能發生的事件對熵沒有貢獻。

二元熵

只有兩種結果時,熵是

H(p)=−plog⁡2p−(1−p)log⁡2(1−p) H(p) = -p\log_2 p - (1 - p)\log_2(1 - p)

p=0p = 0 或 p=1p = 1 時結果完全確定,熵為 0;p=0.5p = 0.5 時最不確定,熵達到最大值 1 位元。推廣到 KK 種結果,H≤log⁡KH \le \log K,等號只在均勻分布時成立,均勻分布的熵最大。

pp 二元熵(bit) Gini 不純度 2p(1−p)2p(1-p)
0 或 1 0 0
0.1 或 0.9 0.469 0.18
0.3 或 0.7 0.881 0.42
0.5 1 0.5

Gini 不純度

決策樹常用的另一個指標是 Gini 不純度(Gini impurity):

G(p)=∑k=1Kpk(1−pk)=1−∑k=1Kpk2 G(p) = \sum_{k=1}^{K} p_k (1 - p_k) = 1 - \sum_{k=1}^{K} p_k^2

它可以解讀為:從節點中隨機取一筆資料,再依節點的類別比例隨機給它一個標籤,標錯的機率。它和熵的行為很像,純節點為 0、均勻時最大,可以視為熵的近親(數學上是 q=2q = 2 的 Tsallis 熵),但不需要計算對數。CART 使用 Gini 不純度,ID3 使用以熵定義的資訊增益(information gain),C4.5 則改用資訊增益比(gain ratio),實務上兩者選出的切分通常差不多。決策樹的切分方式見第 4 章。

6.6最小描述長度Minimum Description Length

熵的另一個意義來自資料壓縮。Shannon 的信源編碼定理(source coding theorem)指出:用任何可唯一解碼的編碼傳送符號 ziz_i,平均編碼長度都不可能小於熵:

E[ℓ(Z)]≥H(Z)=−∑iP(zi)log⁡2P(zi)(bits) \mathbb{E}\big[\ell(Z)\big] \ge H(Z) = -\sum_i P(z_i)\log_2 P(z_i) \quad \text{(bits)}

最佳的做法是給機率為 P(z)P(z) 的符號約 −log⁡2P(z)-\log_2 P(z) 位元的編碼:常見的符號用短碼,罕見的用長碼,就像摩斯電碼中最常用的字母 E 只有一個點。Huffman 編碼能讓平均長度落在 HH 與 H+1H + 1 之間。這建立了一個重要的對應:機率模型就是編碼方式,模型預測得越準,資料就能壓縮得越短。

最小描述長度(Minimum Description Length, MDL)原則(Rissanen 1978)把這個想法用於模型選擇:最好的模型,是讓「描述模型」加上「在模型幫助下描述資料」總長度最短的那一個:

M^=arg min⁡M [L(M)+L(D∣M)],L(D∣M)=−log⁡2p(D∣M) \hat M = \operatorname*{arg\,min}_{M}\ \Big[L(M) + L(D \mid M)\Big], \qquad L(D \mid M) = -\log_2 p(D \mid M)

複雜的模型 L(M)L(M) 大,但能把資料描述得很短;簡單的模型則相反。MDL 因此是奧坎剃刀的形式化版本,在大樣本下與 BIC 有密切關係。以 MDL 選擇正則化強度的例子見第 3 章,其他模型選擇準則見第 2 章。

6.7KL 散度與交叉熵KL Divergence & Cross-Entropy

KL 散度

KL 散度(Kullback–Leibler divergence),又稱相對熵(relative entropy),衡量分布 QQ 與分布 PP 的差異:

DKL(P ∥ Q)=∑xP(x)log⁡P(x)Q(x) D_{\text{KL}}(P \,\Vert\, Q) = \sum_{x} P(x)\log\frac{P(x)}{Q(x)}

從編碼的角度看,它是「資料其實來自 PP,卻用為 QQ 設計的最佳編碼」時,平均多花的位元數。它有幾個重要性質:

  • 非負:DKL(P ∥ Q)≥0D_{\text{KL}}(P \,\Vert\, Q) \ge 0,且只有 P=QP = Q 時等於 0(Gibbs 不等式)。
  • 不對稱:一般而言 DKL(P ∥ Q)≠DKL(Q ∥ P)D_{\text{KL}}(P \,\Vert\, Q) \ne D_{\text{KL}}(Q \,\Vert\, P),也不滿足三角不等式,因此不是距離,只稱為「散度」。
  • 需要支撐集相容:只要某處 P(x)>0P(x) > 0 而 Q(x)=0Q(x) = 0,KL 散度就是無限大。
  • 只定義在機率分布之間:比較直方圖、詞頻這類非負向量時,要先正規化成總和為 1 的分布(必要時加上平滑處理零值),KL 散度才有意義。

需要對稱的版本時,可以使用 Jensen–Shannon 散度:JS(P,Q)=12DKL(P ∥ M)+12DKL(Q ∥ M)\text{JS}(P, Q) = \tfrac{1}{2}D_{\text{KL}}(P \,\Vert\, M) + \tfrac{1}{2}D_{\text{KL}}(Q \,\Vert\, M),其中 M=12(P+Q)M = \tfrac{1}{2}(P + Q)。它有界,而且其平方根滿足距離的所有條件。

交叉熵

交叉熵(cross-entropy)是用 QQ 的編碼傳送 PP 的資料時的平均長度,它正好是熵加上 KL 散度:

H(P,Q)=−∑xP(x)log⁡Q(x)=−∑xP(x)log⁡P(x)+∑xP(x)log⁡P(x)Q(x)=H(P)+DKL(P ∥ Q) \begin{aligned} H(P, Q) &= -\sum_x P(x)\log Q(x) \\ &= -\sum_x P(x)\log P(x) + \sum_x P(x)\log\frac{P(x)}{Q(x)} \\ &= H(P) + D_{\text{KL}}(P \,\Vert\, Q) \end{aligned}

在分類問題中,PP 是真實標籤的分布(例如 one-hot 向量),Q=qθQ = q_\theta 是模型預測的分布。H(P)H(P) 與模型參數 θ\theta 無關,所以最小化交叉熵就等於最小化 DKL(P ∥ qθ)D_{\text{KL}}(P \,\Vert\, q_\theta)。對整個訓練集平均,交叉熵又等於 −1n∑ilog⁡qθ(yi∣xi)-\tfrac{1}{n}\sum_i \log q_\theta(y_i \mid \mathbf{x}_i),也就是平均負對數概似。

6.8參考資料References

  • Bishop, C. M., Pattern Recognition and Machine Learning, Springer, 2006,第 1、3、7 章。
  • Cover, T. M. & Thomas, J. A., Elements of Information Theory, 2nd ed., Wiley, 2006。
  • Hastie, Tibshirani & Friedman, The Elements of Statistical Learning, 2nd ed., Springer, 2009,第 10、12 章。
  • Shannon, C. E., "A mathematical theory of communication", Bell System Technical Journal, 1948。
  • Kullback, S. & Leibler, R. A., "On information and sufficiency", Annals of Mathematical Statistics, 1951。
  • Huber, P. J., "Robust estimation of a location parameter", Annals of Mathematical Statistics, 1964。
  • Rissanen, J., "Modeling by shortest data description", Automatica, 1978。
  • Cortes, C. & Vapnik, V., "Support-vector networks", Machine Learning, 1995。