第01章:机器学习概览
"All models are wrong, but some are useful." ------ George Box
重要提示 :本章不仅是概念的堆砌,更是世界观的建立。
我们将深入探讨频率派与贝叶斯派的百年纠葛,这不仅仅是数学流派之争,更是我们认知世界的两种底层逻辑。此外,我们还将突破传统的教科书,带你领略现代深度学习中颠覆性的**"双下降" (Double Descent)** 现象,看看传统理论在过参数化时代是如何被挑战的。
目录
- [一、世界观的碰撞:频率派 vs 贝叶斯派](#一、世界观的碰撞:频率派 vs 贝叶斯派)
- [1.1 频率派 (The Frequentist View)](#1.1 频率派 (The Frequentist View))
- [1.2 贝叶斯派 (The Bayesian View)](#1.2 贝叶斯派 (The Bayesian View))
- [1.3 核心案例推导:抛硬币的哲学](#1.3 核心案例推导:抛硬币的哲学)
- 二、统计学习三要素:解构算法的万能公式
- [2.1 模型 (Model)](#2.1 模型 (Model))
- [2.2 策略 (Strategy)](#2.2 策略 (Strategy))
- [2.3 数学证明:为什么正则化等价于先验?](#2.3 数学证明:为什么正则化等价于先验?)
- [2.4 算法 (Algorithm)](#2.4 算法 (Algorithm))
- 三、核心难题:偏差-方差权衡 (Bias-Variance Tradeoff)
- 四、实战演练:亲眼目睹过拟合与正则化
- 五、拓展深入:当传统理论失效------双下降现象
- 六、本章小结
一、世界观的碰撞:频率派 vs 贝叶斯派
统计机器学习领域长期存在着两个对立统一的流派。理解这个对立,对后续理解正则化(Regularization)和概率图模型(PGM)至关重要。
1.1 频率派 (The Frequentist View)
-
核心信仰 :世界是确定的 。参数 θ \theta θ 是一个未知但固定的常量 (Unknown Constant)。虽然我们不知道它具体是多少,但它真真切切地在那里,不增不减。
-
方法论 :极大似然估计 (MLE) 。
θ ^ M L E = arg max θ P ( X ∣ θ ) \hat{\theta}{MLE} = \arg\max{\theta} P(X|\theta) θ^MLE=argθmaxP(X∣θ)直觉 :既然 θ \theta θ 是固定的,那就找一个 θ \theta θ,使得"观测到当前数据 X X X"这一事件发生的概率最大。
但是,MLE 的这个公式在绝大多数情况下并没有解析解 (除了少数简单模型如高斯分布的均值估计)。因此,我们必须借助数值优化方法(如梯度下降)来迭代求解。这就引出了频率派的核心技术路线:
-
演进路线 :频率派将机器学习视为一个优化问题 (Optimization) 。
L ( θ ) → ∇ θ L → θ t + 1 = θ t − η g \mathcal{L}(\theta) \rightarrow \nabla_\theta \mathcal{L} \rightarrow \theta_{t+1} = \theta_t - \eta g L(θ)→∇θL→θt+1=θt−ηg- 代表算法:线性回归、逻辑回归、SVM、神经网络 (BackProp)。
1.2 贝叶斯派 (The Bayesian View)
- 核心信仰 :世界是不确定的 。参数 θ \theta θ 本身是一个随机变量 (Random Variable),它服从某个分布。数据 X X X 反而是固定的证据 (Evidence)。
- 方法论 :贝叶斯定理 (Bayes' Theorem) 。
P ( θ ∣ X ) = P ( X ∣ θ ) P ( θ ) P ( X ) P(\theta|X) = \frac{P(X|\theta)P(\theta)}{P(X)} P(θ∣X)=P(X)P(X∣θ)P(θ)- P ( θ ∣ X ) P(\theta|X) P(θ∣X):后验 (Posterior) ------ 看了数据修正后的信念。
- P ( X ∣ θ ) P(X|\theta) P(X∣θ):似然 (Likelihood) ------ 数据所呈现的样子。
- P ( θ ) P(\theta) P(θ):先验 (Prior) ------ 看数据之前的主观信念(这很重要!)。
- 最大后验估计 (MAP) :如果我们被迫给出一个具体的数值,而不是分布:
θ ^ M A P = arg max θ P ( θ ∣ X ) = arg max θ log P ( X ∣ θ ) ⏟ Likelihood + log P ( θ ) ⏟ Prior \hat{\theta}{MAP} = \arg\max{\theta} P(\theta|X) = \arg\max_{\theta} \underbrace{\log P(X|\theta)}{\text{Likelihood}} + \underbrace{\log P(\theta)}{\text{Prior}} θ^MAP=argθmaxP(θ∣X)=argθmaxLikelihood logP(X∣θ)+Prior logP(θ) 洞见 : θ ^ M L E \hat{\theta}{MLE} θ^MLE 其实就是 P ( θ ) P(\theta) P(θ) 为均匀分布时的 θ ^ M A P \hat{\theta}{MAP} θ^MAP!MLE 是 MAP 的特例。正则化本质 :L2 正则化其实等价于引入了 高斯先验 的 MAP;L1 正则化等价于 拉普拉斯先验。
- 演进路线 :贝叶斯派将机器学习视为一个积分问题 (Integration) 。
P ( x n e w ∣ X ) = ∫ P ( x n e w ∣ θ ) P ( θ ∣ X ) d θ P(x_{new}|X) = \int P(x_{new}|\theta) P(\theta|X) d\theta P(xnew∣X)=∫P(xnew∣θ)P(θ∣X)dθ- 代表算法:朴素贝叶斯、LDA主题模型、高斯过程、变分自动编码器 (VAE)。
从抽象到具体:让公式活起来
到这里,频率派和贝叶斯派的公式都已摆在眼前。但老实说,光看公式很难真正理解两者的差异------什么是"先验被淹没"?什么是"正则化等价于先验"?这些话术听起来玄乎,却缺少实感。
接下来,让我们用抛硬币这个最简单的案例,亲手推导一遍 MLE 和 MAP。你会看到:MLE 如何因数据稀疏而过拟合,贝叶斯先验如何通过"伪计数"优雅地约束参数空间,以及当数据量趋于无穷时,先验如何自动退场。这个推导将成为我们理解正则化、主题模型、变分推断等高级技术的基石。
1.3 核心案例推导:抛硬币的哲学
为什么要推导这个?
抛硬币虽然简单,但它是理解 MLE 与 MAP 差异的最佳载体。通过这个推导,你会明白:
- MLE 在数据少时为何容易过拟合
- 贝叶斯先验如何在数学上"约束"参数空间
- 为什么 Beta 分布是二项分布的共轭先验
- 当数据量 N → ∞ N \to \infty N→∞ 时,先验如何被"淹没"
1.3.1 问题设定
假设有一枚硬币,正面朝上的概率为 θ \theta θ(未知)。我们抛了 N N N 次,观测到:
- H H H 次正面 (Heads)
- T T T 次反面 (Tails),其中 N = H + T N = H + T N=H+T
目标 :估计参数 θ \theta θ。
1.3.2 频率派:极大似然估计 (MLE)
Step 1:写出似然函数
每次抛硬币是独立的伯努利试验,因此观测到数据 D = { H , T } D = \{H, T\} D={H,T} 的概率为:
P ( D ∣ θ ) = θ H ( 1 − θ ) T P(D|\theta) = \theta^H (1-\theta)^T P(D∣θ)=θH(1−θ)T
Step 2:对数似然函数
为了求导方便,取对数:
log P ( D ∣ θ ) = H log θ + T log ( 1 − θ ) \log P(D|\theta) = H \log \theta + T \log(1-\theta) logP(D∣θ)=Hlogθ+Tlog(1−θ)
Step 3:求导并令其为零
∂ ∂ θ log P ( D ∣ θ ) = H θ − T 1 − θ = 0 \frac{\partial}{\partial \theta} \log P(D|\theta) = \frac{H}{\theta} - \frac{T}{1-\theta} = 0 ∂θ∂logP(D∣θ)=θH−1−θT=0
解得:
θ ^ M L E = H H + T = H N \boxed{\hat{\theta}_{MLE} = \frac{H}{H+T} = \frac{H}{N}} θ^MLE=H+TH=NH
直觉:MLE 就是频率派的"经验频率"。
1.3.3 MLE 的致命缺陷
思考 :如果我们只抛了 5 次硬币,全是正面( H = 5 , T = 0 H=5, T=0 H=5,T=0),MLE 会给出 θ ^ M L E = 1 \hat{\theta}_{MLE} = 1 θ^MLE=1。这意味着这枚硬币 100% 会正面朝上,这合理吗?
这就是 过拟合 (Overfitting) 的典型表现:MLE 完全依赖当前数据,没有任何"常识"约束。当数据量很少时,估计结果极其不稳定。
1.3.4 贝叶斯派:最大后验估计 (MAP)
Step 1:引入先验分布
贝叶斯派认为 θ \theta θ 本身是随机变量,应该有一个先验分布 P ( θ ) P(\theta) P(θ)。
但问题来了:先验分布有无数种选择(高斯、均匀、指数...),我们该选哪一个?答案是:选择共轭先验 (Conjugate Prior)。
为什么选择共轭先验?
共轭先验有一个神奇的性质:先验和后验属于同一分布族。这意味着:
- 如果先验是 Beta 分布,那么看了数据后,后验仍然是 Beta 分布(只是参数更新了)
- 这极大简化了计算,避免了复杂的积分运算
对于抛硬币问题(二项分布似然),共轭先验恰好是 Beta 分布。这不是巧合,而是数学上的精心设计。
因此我们选择 Beta 分布 作为先验:
P ( θ ) = Beta ( α , β ) = θ α − 1 ( 1 − θ ) β − 1 B ( α , β ) P(\theta) = \text{Beta}(\alpha, \beta) = \frac{\theta^{\alpha-1} (1-\theta)^{\beta-1}}{B(\alpha, \beta)} P(θ)=Beta(α,β)=B(α,β)θα−1(1−θ)β−1
其中 B ( α , β ) B(\alpha, \beta) B(α,β) 是归一化常数(Beta 函数)。
Step 2:写出后验分布
根据贝叶斯定理:
P ( θ ∣ D ) ∝ P ( D ∣ θ ) P ( θ ) = θ H ( 1 − θ ) T ⋅ θ α − 1 ( 1 − θ ) β − 1 = θ H + α − 1 ( 1 − θ ) T + β − 1 \begin{aligned} P(\theta|D) &\propto P(D|\theta) P(\theta) \\ &= \theta^H (1-\theta)^T \cdot \theta^{\alpha-1} (1-\theta)^{\beta-1} \\ &= \theta^{H+\alpha-1} (1-\theta)^{T+\beta-1} \end{aligned} P(θ∣D)∝P(D∣θ)P(θ)=θH(1−θ)T⋅θα−1(1−θ)β−1=θH+α−1(1−θ)T+β−1
这正好是 Beta ( H + α , T + β ) \text{Beta}(H+\alpha, T+\beta) Beta(H+α,T+β)!验证了共轭性。
Step 3:求 MAP 估计
MAP 就是找后验分布的最大值点。对 log P ( θ ∣ D ) \log P(\theta|D) logP(θ∣D) 求导:
log P ( θ ∣ D ) = ( H + α − 1 ) log θ + ( T + β − 1 ) log ( 1 − θ ) + const \begin{aligned} \log P(\theta|D) &= (H+\alpha-1) \log \theta + (T+\beta-1) \log(1-\theta) + \text{const} \end{aligned} logP(θ∣D)=(H+α−1)logθ+(T+β−1)log(1−θ)+const
求导并令其为零:
∂ ∂ θ log P ( θ ∣ D ) = H + α − 1 θ − T + β − 1 1 − θ = 0 \begin{aligned} \frac{\partial}{\partial \theta} \log P(\theta|D) &= \frac{H+\alpha-1}{\theta} - \frac{T+\beta-1}{1-\theta} = 0 \end{aligned} ∂θ∂logP(θ∣D)=θH+α−1−1−θT+β−1=0
解得:
θ ^ M A P = H + α − 1 H + T + α + β − 2 \boxed{\hat{\theta}_{MAP} = \frac{H + \alpha - 1}{H + T + \alpha + \beta - 2}} θ^MAP=H+T+α+β−2H+α−1
1.3.5 深度直觉:先验就是"伪计数"
观察 MAP 的公式,可以改写为:
θ ^ M A P = H + ( α − 1 ) N + ( α + β − 2 ) \hat{\theta}_{MAP} = \frac{H + (\alpha - 1)}{N + (\alpha + \beta - 2)} θ^MAP=N+(α+β−2)H+(α−1)
核心洞见:
- ( α − 1 ) (\alpha - 1) (α−1) 相当于"伪正面"次数
- ( β − 1 ) (\beta - 1) (β−1) 相当于"伪反面"次数
- 总的"伪观测"次数为 ( α + β − 2 ) (\alpha + \beta - 2) (α+β−2)
举例:
- 如果我们设 α = 2 , β = 2 \alpha = 2, \beta = 2 α=2,β=2(均匀先验的一种形式),相当于在看数据之前,假设已经观测到了 1 次正面和 1 次反面。
- 现在我们抛 5 次硬币,全是正面( H = 5 , T = 0 H=5, T=0 H=5,T=0):
θ ^ M A P = 5 + 1 5 + 0 + 2 = 6 7 ≈ 0.857 \hat{\theta}_{MAP} = \frac{5 + 1}{5 + 0 + 2} = \frac{6}{7} \approx 0.857 θ^MAP=5+0+25+1=76≈0.857
比 MLE 的 1.0 更加保守合理!
1.3.6 当数据量很大时:先验被"淹没"
观察公式:
θ ^ M A P = H + ( α − 1 ) N + ( α + β − 2 ) \hat{\theta}_{MAP} = \frac{H + (\alpha - 1)}{N + (\alpha + \beta - 2)} θ^MAP=N+(α+β−2)H+(α−1)
当 N → ∞ N \to \infty N→∞ 时:
θ ^ M A P ≈ H N = θ ^ M L E \hat{\theta}{MAP} \approx \frac{H}{N} = \hat{\theta}{MLE} θ^MAP≈NH=θ^MLE
哲学启示:
- 当数据很少时,先验起主导作用(防止过拟合)
- 当数据很多时,数据本身说话,先验的影响趋于零
- 这正是贝叶斯方法的优雅之处:让数据和先验在不同阶段各司其职
1.3.7 可视化对比
假设真实 θ = 0.7 \theta = 0.7 θ=0.7,我们观测 N N N 次抛硬币,对比 MLE 和 MAP 的表现:
| N N N | 观测结果 ( H H H) | θ ^ M L E \hat{\theta}_{MLE} θ^MLE | θ ^ M A P \hat{\theta}_{MAP} θ^MAP (Beta(2,2)) |
|---|---|---|---|
| 5 | 5 | 1.000 | 0.857 |
| 10 | 7 | 0.700 | 0.667 |
| 100 | 70 | 0.700 | 0.698 |
| 1000 | 700 | 0.700 | 0.699 |
可以看到:
- 当 N = 5 N=5 N=5 时,MLE 严重过拟合(估计为 1.0),而 MAP 更稳健(0.857)
- 当 N ≥ 100 N \geq 100 N≥100 时,两者几乎一致
1.3.8 扩展:完全贝叶斯推断
MAP 仍然是给出一个点估计。完全的贝叶斯推断是保留整个后验分布:
P ( θ ∣ D ) = Beta ( H + α , T + β ) P(\theta|D) = \text{Beta}(H+\alpha, T+\beta) P(θ∣D)=Beta(H+α,T+β)
当我们预测下一次抛硬币的结果时,不是用某个固定的 θ ^ \hat{\theta} θ^,而是对所有可能的 θ \theta θ 积分:
P ( 下次是正面 ∣ D ) = ∫ 0 1 θ ⋅ P ( θ ∣ D ) d θ = H + α N + α + β P(\text{下次是正面}|D) = \int_0^1 \theta \cdot P(\theta|D) d\theta = \frac{H+\alpha}{N+\alpha+\beta} P(下次是正面∣D)=∫01θ⋅P(θ∣D)dθ=N+α+βH+α
与 MAP 的区别:
- MAP 是取分布的最大值点(Mode)
- 完全贝叶斯是取分布的期望(Mean)
- 对于 Beta 分布,Mean = α α + β \frac{\alpha}{\alpha+\beta} α+βα,而 Mode = α − 1 α + β − 2 \frac{\alpha-1}{\alpha+\beta-2} α+β−2α−1(当 α , β > 1 \alpha, \beta > 1 α,β>1 时)
小结:通过抛硬币这个简单案例,我们完成了一次完整的数学推导之旅。我们看到了 MLE 如何因数据稀疏而过拟合,贝叶斯先验如何通过"伪计数"优雅地约束参数空间,以及当数据充足时先验如何自动退场。这个推导将成为我们理解正则化、主题模型、变分推断等高级技术的基石。
二、统计学习三要素:解构算法的万能公式
李航老师在《统计学习方法》中提出了著名的公式,这套方法论可以解构任何算法:
方法 = 模型 + 策略 + 算法 \text{方法} = \text{模型} + \text{策略} + \text{算法} 方法=模型+策略+算法
2.1 模型 (Model)
我们要学习的假设空间 (Hypothesis Space) F \mathcal{F} F。
- 线性模型 : f ( x ) = w T x + b f(x) = w^T x + b f(x)=wTx+b
- 树模型:非线性的 if-else 规则集合
- 神经网络:多层非线性复合函数
2.2 策略 (Strategy)
评价模型好坏的标准,即损失函数 (Loss Function)。
- 平方损失 (L2) : ( y − f ( x ) ) 2 (y - f(x))^2 (y−f(x))2 ------ 线性回归。
- 交叉熵 (Cross Entropy) : − ∑ y log p -\sum y \log p −∑ylogp ------ 逻辑回归/分类。
- Hinge Loss : [ 1 − y f ( x ) ] + [1 - y f(x)]_+ [1−yf(x)]+ ------ SVM 的灵魂。
结构风险最小化 (SRM) :
min f ∈ F 1 N ∑ i = 1 N L ( y i , f ( x i ) ) ⏟ 经验风险 (拟合程度) + λ J ( f ) ⏟ 正则化 (模型复杂度) \min_{f \in \mathcal{F}} \underbrace{\frac{1}{N} \sum_{i=1}^N L(y_i, f(x_i))}{\text{经验风险 (拟合程度)}} + \underbrace{\lambda J(f)}{\text{正则化 (模型复杂度)}} f∈Fmin经验风险 (拟合程度) N1i=1∑NL(yi,f(xi))+正则化 (模型复杂度) λJ(f)
从工程技巧到数学本质
我们在 2.2 节看到了正则化项 λ J ( f ) \lambda J(f) λJ(f) 的作用------它能防止过拟合,这是工程实践中的共识。但如果你追问:"正则化为什么有效?它背后的数学原理是什么?",很多教材会戛然而止。
接下来,让我们从贝叶斯视角 重新审视正则化。我们将通过严格的数学推导证明一个惊人的结论:频率派的 L2 正则化,在数学上完全等价于贝叶斯派的高斯先验。这不是一个模糊的类比,而是一个精确的等式。当你理解了这个等价性,你会发现频率派和贝叶斯派不过是同一枚硬币的两面------一个显式地惩罚复杂度,一个隐式地编码信念。
2.3 数学证明:为什么正则化等价于先验?
核心问题:
在 1.2 节我们提到"L2 正则化等价于高斯先验",但这个说法凭什么成立?这一小节将通过严格的数学推导,揭示正则化与贝叶斯先验在数学上的等价性。这是机器学习面试中的经典白板题,也是打通频率派与贝叶斯派的关键桥梁。
2.3.1 问题设定:线性回归模型
假设我们有一个线性回归模型:
y = w T x + ϵ y = w^T x + \epsilon y=wTx+ϵ
其中:
- w ∈ R d w \in \mathbb{R}^d w∈Rd 是待估计的权重向量
- ϵ ∼ N ( 0 , σ 2 ) \epsilon \sim \mathcal{N}(0, \sigma^2) ϵ∼N(0,σ2) 是高斯噪声
- 训练数据: D = { ( x i , y i ) } i = 1 N \mathcal{D} = \{(x_i, y_i)\}_{i=1}^N D={(xi,yi)}i=1N
2.3.2 频率派视角:L2 正则化
频率派通过结构风险最小化来对抗过拟合:
w ^ R i d g e = arg min w 1 2 N ∑ i = 1 N ( y i − w T x i ) 2 ⏟ MSE Loss + λ 2 ∥ w ∥ 2 ⏟ L2 Regularization \hat{w}{Ridge} = \arg\min{w} \underbrace{\frac{1}{2N} \sum_{i=1}^N (y_i - w^T x_i)^2}{\text{MSE Loss}} + \underbrace{\frac{\lambda}{2} \|w\|^2}{\text{L2 Regularization}} w^Ridge=argwminMSE Loss 2N1i=1∑N(yi−wTxi)2+L2 Regularization 2λ∥w∥2
直觉:
- 第一项让模型拟合数据
- 第二项惩罚权重的大小,防止过拟合
- λ \lambda λ 控制正则化强度
2.3.3 贝叶斯派视角:从先验到 MAP
Step 1:写出似然函数
因为噪声 ϵ ∼ N ( 0 , σ 2 ) \epsilon \sim \mathcal{N}(0, \sigma^2) ϵ∼N(0,σ2),所以:
y i ∣ x i , w ∼ N ( w T x i , σ 2 ) y_i | x_i, w \sim \mathcal{N}(w^T x_i, \sigma^2) yi∣xi,w∼N(wTxi,σ2)
对于所有 N N N 个样本,似然函数为:
P ( D ∣ w ) = ∏ i = 1 N 1 2 π σ 2 exp ( − ( y i − w T x i ) 2 2 σ 2 ) \begin{aligned} P(\mathcal{D}|w) &= \prod_{i=1}^N \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(y_i - w^T x_i)^2}{2\sigma^2}\right) \end{aligned} P(D∣w)=i=1∏N2πσ2 1exp(−2σ2(yi−wTxi)2)
取对数似然:
log P ( D ∣ w ) = − 1 2 σ 2 ∑ i = 1 N ( y i − w T x i ) 2 − N 2 log ( 2 π σ 2 ) \begin{aligned} \log P(\mathcal{D}|w) &= -\frac{1}{2\sigma^2} \sum_{i=1}^N (y_i - w^T x_i)^2 - \frac{N}{2} \log(2\pi\sigma^2) \end{aligned} logP(D∣w)=−2σ21i=1∑N(yi−wTxi)2−2Nlog(2πσ2)
Step 2:引入高斯先验
贝叶斯派认为权重 w w w 本身应该服从某个先验分布。我们选择零均值高斯先验:
P ( w ) = N ( 0 , τ 2 I ) = ( 1 2 π τ 2 ) d exp ( − ∥ w ∥ 2 2 τ 2 ) P(w) = \mathcal{N}(0, \tau^2 I) = \left(\frac{1}{\sqrt{2\pi\tau^2}}\right)^d \exp\left(-\frac{\|w\|^2}{2\tau^2}\right) P(w)=N(0,τ2I)=(2πτ2 1)dexp(−2τ2∥w∥2)
为什么选择零均值?
- 体现了奥卡姆剃刀原则:在没有证据时,倾向于认为权重应该接近零(简单模型)
- τ 2 \tau^2 τ2 控制先验的"强度": τ 2 \tau^2 τ2 越小,越强烈地认为 w w w 应该接近零
取对数先验:
log P ( w ) = − ∥ w ∥ 2 2 τ 2 − d 2 log ( 2 π τ 2 ) \begin{aligned} \log P(w) &= -\frac{\|w\|^2}{2\tau^2} - \frac{d}{2} \log(2\pi\tau^2) \end{aligned} logP(w)=−2τ2∥w∥2−2dlog(2πτ2)
Step 3:写出后验分布
根据贝叶斯定理:
P ( w ∣ D ) ∝ P ( D ∣ w ) P ( w ) P(w|\mathcal{D}) \propto P(\mathcal{D}|w) P(w) P(w∣D)∝P(D∣w)P(w)
取对数:
log P ( w ∣ D ) = log P ( D ∣ w ) + log P ( w ) + const \begin{aligned} \log P(w|\mathcal{D}) &= \log P(\mathcal{D}|w) + \log P(w) + \text{const} \end{aligned} logP(w∣D)=logP(D∣w)+logP(w)+const
代入前面的结果:
log P ( w ∣ D ) = − 1 2 σ 2 ∑ i = 1 N ( y i − w T x i ) 2 − ∥ w ∥ 2 2 τ 2 + const \begin{aligned} \log P(w|\mathcal{D}) &= -\frac{1}{2\sigma^2} \sum_{i=1}^N (y_i - w^T x_i)^2 - \frac{\|w\|^2}{2\tau^2} + \text{const} \end{aligned} logP(w∣D)=−2σ21i=1∑N(yi−wTxi)2−2τ2∥w∥2+const
Step 4:MAP 估计 = 最大化后验
MAP 就是找让后验概率最大的 w w w:
w ^ M A P = arg max w log P ( w ∣ D ) \begin{aligned} \hat{w}{MAP} &= \arg\max{w} \log P(w|\mathcal{D}) \end{aligned} w^MAP=argwmaxlogP(w∣D)
等价于:
w ^ M A P = arg max w [ − 1 2 σ 2 ∑ i = 1 N ( y i − w T x i ) 2 − ∥ w ∥ 2 2 τ 2 ] \begin{aligned} \hat{w}{MAP} &= \arg\max{w} \left[ -\frac{1}{2\sigma^2} \sum_{i=1}^N (y_i - w^T x_i)^2 - \frac{\|w\|^2}{2\tau^2} \right] \end{aligned} w^MAP=argwmax[−2σ21i=1∑N(yi−wTxi)2−2τ2∥w∥2]
去掉负号,转为最小化:
w ^ M A P = arg min w [ 1 2 σ 2 ∑ i = 1 N ( y i − w T x i ) 2 + ∥ w ∥ 2 2 τ 2 ] \begin{aligned} \hat{w}{MAP} &= \arg\min{w} \left[ \frac{1}{2\sigma^2} \sum_{i=1}^N (y_i - w^T x_i)^2 + \frac{\|w\|^2}{2\tau^2} \right] \end{aligned} w^MAP=argwmin[2σ21i=1∑N(yi−wTxi)2+2τ2∥w∥2]
2.3.4 神奇的等价性
提取公共因子 1 2 σ 2 \frac{1}{2\sigma^2} 2σ21:
w ^ M A P = arg min w [ 1 N ∑ i = 1 N ( y i − w T x i ) 2 + σ 2 N τ 2 ∥ w ∥ 2 ] \begin{aligned} \hat{w}{MAP} &= \arg\min{w} \left[ \frac{1}{N} \sum_{i=1}^N (y_i - w^T x_i)^2 + \frac{\sigma^2}{N\tau^2} \|w\|^2 \right] \end{aligned} w^MAP=argwmin[N1i=1∑N(yi−wTxi)2+Nτ2σ2∥w∥2]
定义正则化系数:
λ = σ 2 N τ 2 \begin{aligned} \lambda &= \frac{\sigma^2}{N\tau^2} \end{aligned} λ=Nτ2σ2
最终得到:
w ^ M A P = arg min w [ 1 N ∑ i = 1 N ( y i − w T x i ) 2 + λ ∥ w ∥ 2 ] = w ^ R i d g e \boxed{\hat{w}{MAP} = \arg\min{w} \left[ \frac{1}{N} \sum_{i=1}^N (y_i - w^T x_i)^2 + \lambda \|w\|^2 \right] = \hat{w}_{Ridge}} w^MAP=argwmin[N1i=1∑N(yi−wTxi)2+λ∥w∥2]=w^Ridge
2.3.5 深度解读
惊人的结论:
贝叶斯的 MAP 估计 在数学上完全等价于 频率派的 L2 正则化!
这个等价性揭示了:
-
正则化系数 λ \lambda λ 的含义 :
λ = σ 2 N τ 2 = 噪声方差 样本量 × 先验方差 \lambda = \frac{\sigma^2}{N\tau^2} = \frac{\text{噪声方差}}{\text{样本量} \times \text{先验方差}} λ=Nτ2σ2=样本量×先验方差噪声方差- 噪声 σ 2 \sigma^2 σ2 越大, λ \lambda λ 越大(数据不可靠,更依赖先验)
- 样本量 N N N 越大, λ \lambda λ 越小(数据充足,先验被淹没)
- 先验 τ 2 \tau^2 τ2 越小, λ \lambda λ 越大(先验越强,正则化越强)
-
频率派与贝叶斯派的统一:
- 频率派:显式地惩罚 ∥ w ∥ 2 \|w\|^2 ∥w∥2,称为"正则化"
- 贝叶斯派:隐式地通过先验 P ( w ) ∼ N ( 0 , τ 2 ) P(w) \sim \mathcal{N}(0, \tau^2) P(w)∼N(0,τ2) 约束 w w w
- 两者在数学上完全一致,只是哲学叙述不同
-
为什么是高斯先验?
- L2 正则化 ∥ w ∥ 2 \|w\|^2 ∥w∥2 对应高斯先验 N ( 0 , τ 2 ) \mathcal{N}(0, \tau^2) N(0,τ2)
- L1 正则化 ∥ w ∥ 1 \|w\|_1 ∥w∥1 对应拉普拉斯先验 Laplace ( 0 , b ) \text{Laplace}(0, b) Laplace(0,b)
- 正则化的形式决定了先验的类型
2.3.6 扩展:L1 正则化与拉普拉斯先验
类似地,如果我们选择拉普拉斯先验:
P ( w ) = ∏ j = 1 d 1 2 b exp ( − ∣ w j ∣ b ) ∝ exp ( − ∥ w ∥ 1 b ) P(w) = \prod_{j=1}^d \frac{1}{2b} \exp\left(-\frac{|w_j|}{b}\right) \propto \exp\left(-\frac{\|w\|_1}{b}\right) P(w)=j=1∏d2b1exp(−b∣wj∣)∝exp(−b∥w∥1)
则对应的 MAP 估计为:
w ^ M A P = arg min w [ 1 2 σ 2 ∑ i = 1 N ( y i − w T x i ) 2 + ∥ w ∥ 1 b ] \begin{aligned} \hat{w}{MAP} &= \arg\min{w} \left[ \frac{1}{2\sigma^2} \sum_{i=1}^N (y_i - w^T x_i)^2 + \frac{\|w\|_1}{b} \right] \end{aligned} w^MAP=argwmin[2σ21i=1∑N(yi−wTxi)2+b∥w∥1]
这正是 Lasso 回归(L1 正则化)!
对比总结:
- Ridge (L2) ↔ \leftrightarrow ↔ 高斯先验 N ( 0 , τ 2 ) \mathcal{N}(0, \tau^2) N(0,τ2) ------ 权重倾向于小但非零
- Lasso (L1) ↔ \leftrightarrow ↔ 拉普拉斯先验 ------ 权重倾向于稀疏(很多为零)
2.3.7 可视化对比
让我们用一张图理解这个等价性:
频率派的优化问题 贝叶斯派的概率推断
┌────────────────────┐ ┌────────────────────┐
│ │ │ │
│ min MSE + λ‖w‖² │ │ max P(w|D) │
│ │ │ │
└─────────┬──────────┘ └─────────┬──────────┘
│ │
│ │
│ 等价变换 │
└───────────────────────────────────┘
│
▼
┌──────────────────────────┐
│ min MSE + λ‖w‖² │
│ = min -log P(D|w) - log P(w) │
└──────────────────────────┘
小结 :通过这个推导,我们证明了"约束与信念本是同一枚硬币的两面"。频率派的正则化是显式地惩罚复杂度,贝叶斯派的先验是隐式地编码信念,但它们在数学上殊途同归。这个洞见是理解 SVM、神经网络中的 Weight Decay、以及变分推断等高级技术的基石。当你在调参 λ \lambda λ 时,本质上就是在调整"先验的强度" τ 2 \tau^2 τ2;当你在设计正则化项时,本质上就是在选择先验分布的形式。
2.4 算法 (Algorithm)
求解最优解的具体计算步骤。
- 解析解:直接公式算出来(如 OLS)。
- 数值优化:梯度下降 (SGD)、牛顿法、拟牛顿法 (BFGS)、坐标下降 (SMO)。
三、核心难题:偏差-方差权衡 (Bias-Variance Tradeoff)
为什么模型越复杂越容易过拟合?让我们从数学期望的角度把它拆解开。
3.1 误差分解公式推导
假设真实数据生成机制为 y = f ( x ) + ϵ y = f(x) + \epsilon y=f(x)+ϵ,其中噪声 E [ ϵ ] = 0 , V a r ( ϵ ) = σ ϵ 2 E[\epsilon]=0, Var(\epsilon)=\sigma_\epsilon^2 E[ϵ]=0,Var(ϵ)=σϵ2。
我们训练出的模型为 f ^ ( x ) \hat{f}(x) f^(x)。在测试样本上的期望泛化误差可以完美分解为:
E [ ( y − f ^ ) 2 ] = Bias 2 [ f ^ ] + Var [ f ^ ] + Noise \begin{aligned} E[(y - \hat{f})^2] &= \text{Bias}^2[\hat{f}] + \text{Var}[\hat{f}] + \text{Noise} \end{aligned} E[(y−f^)2]=Bias2[f^]+Var[f^]+Noise
📝 详细推导过程(点击展开) 为什么要展开这个推导?
这个分解不是显而易见的。很多教材直接给出结论,但这个展开过程蕴含了深刻的数学技巧:配方法、期望的线性性、以及独立性假设。理解这个推导,你会明白为什么"偏差"和"方差"是两个正交的概念,为什么它们可以完美分离。
给定条件:
- 真实模型: y = f ( x ) + ϵ y = f(x) + \epsilon y=f(x)+ϵ
- 噪声: E [ ϵ ] = 0 , Var ( ϵ ) = σ ϵ 2 E[\epsilon] = 0, \ \text{Var}(\epsilon) = \sigma_\epsilon^2 E[ϵ]=0, Var(ϵ)=σϵ2
- 训练集: D \mathcal{D} D(随机抽样)
- 学习到的模型: f ^ ( x ; D ) \hat{f}(x; \mathcal{D}) f^(x;D)(依赖于训练集)
目标 :计算在固定测试点 x x x 处的期望泛化误差(对所有可能的训练集和噪声求期望)。
Step 1:写出期望泛化误差
E D , ϵ [ ( y − f ^ ) 2 ] \begin{aligned} E_{\mathcal{D}, \epsilon}[(y - \hat{f})^2] \end{aligned} ED,ϵ[(y−f^)2]
为简化记号,后续我们将 f ^ ( x ; D ) \hat{f}(x; \mathcal{D}) f^(x;D) 简写为 f ^ \hat{f} f^, f ( x ) f(x) f(x) 简写为 f f f。
Step 2:代入真实模型 y = f + ϵ y = f + \epsilon y=f+ϵ
E [ ( y − f ^ ) 2 ] = E [ ( f + ϵ − f ^ ) 2 ] = E [ ( f − f ^ + ϵ ) 2 ] \begin{aligned} E[(y - \hat{f})^2] &= E[(f + \epsilon - \hat{f})^2] \\ &= E[(f - \hat{f} + \epsilon)^2] \end{aligned} E[(y−f^)2]=E[(f+ϵ−f^)2]=E[(f−f^+ϵ)2]
Step 3:展开平方项
E [ ( f − f ^ + ϵ ) 2 ] = E [ ( f − f ^ ) 2 + 2 ( f − f ^ ) ϵ + ϵ 2 ] \begin{aligned} E[(f - \hat{f} + \epsilon)^2] &= E[(f - \hat{f})^2 + 2(f - \hat{f})\epsilon + \epsilon^2] \end{aligned} E[(f−f^+ϵ)2]=E[(f−f^)2+2(f−f^)ϵ+ϵ2]
利用期望的线性性:
= E [ ( f − f ^ ) 2 ] + 2 E [ ( f − f ^ ) ϵ ] + E [ ϵ 2 ] \begin{aligned} &= E[(f - \hat{f})^2] + 2E[(f - \hat{f})\epsilon] + E[\epsilon^2] \end{aligned} =E[(f−f^)2]+2E[(f−f^)ϵ]+E[ϵ2]
Step 4:处理交叉项
关键观察 : f ^ \hat{f} f^ 只依赖于训练集 D \mathcal{D} D,而 ϵ \epsilon ϵ 是测试样本的噪声,两者独立。
因此:
E [ ( f − f ^ ) ϵ ] = E D [ f − f ^ ] ⋅ E ϵ [ ϵ ] = E D [ f − f ^ ] ⋅ 0 = 0 \begin{aligned} E[(f - \hat{f})\epsilon] &= E_{\mathcal{D}}[f - \hat{f}] \cdot E_{\epsilon}[\epsilon] \\ &= E_{\mathcal{D}}[f - \hat{f}] \cdot 0 \\ &= 0 \end{aligned} E[(f−f^)ϵ]=ED[f−f^]⋅Eϵ[ϵ]=ED[f−f^]⋅0=0
同时,由于 E [ ϵ ] = 0 E[\epsilon] = 0 E[ϵ]=0,根据方差定义:
E [ ϵ 2 ] = Var ( ϵ ) + ( E [ ϵ ] ) 2 = σ ϵ 2 + 0 = σ ϵ 2 \begin{aligned} E[\epsilon^2] &= \text{Var}(\epsilon) + (E[\epsilon])^2 \\ &= \sigma_\epsilon^2 + 0 \\ &= \sigma_\epsilon^2 \end{aligned} E[ϵ2]=Var(ϵ)+(E[ϵ])2=σϵ2+0=σϵ2
代入得:
E [ ( y − f ^ ) 2 ] = E [ ( f − f ^ ) 2 ] + σ ϵ 2 \begin{aligned} E[(y - \hat{f})^2] &= E[(f - \hat{f})^2] + \sigma_\epsilon^2 \end{aligned} E[(y−f^)2]=E[(f−f^)2]+σϵ2
Step 5:分解第一项 E [ ( f − f ^ ) 2 ] E[(f - \hat{f})^2] E[(f−f^)2]
这是关键的一步!我们使用配方法 ,引入 E [ f ^ ] E[\hat{f}] E[f^](模型的期望预测):
E [ ( f − f ^ ) 2 ] = E [ ( f − E [ f ^ ] + E [ f ^ ] − f ^ ) 2 ] = E [ ( f − E [ f ^ ] ) ⏟ 偏差项 + ( E [ f ^ ] − f ^ ) ⏟ 方差项 ) 2 ] \begin{aligned} E[(f - \hat{f})^2] &= E\left[(f - E[\hat{f}] + E[\hat{f}] - \hat{f})^2\right] \\ &= E\left[\underbrace{(f - E[\hat{f}])}{\text{偏差项}} + \underbrace{(E[\hat{f}] - \hat{f})}{\text{方差项}}\right)^2] \end{aligned} E[(f−f^)2]=E[(f−E[f^]+E[f^]−f^)2]=E 偏差项 (f−E[f^])+方差项 (E[f^]−f^) 2]
展开平方:
= E [ ( f − E [ f ^ ] ) 2 ] + E [ ( E [ f ^ ] − f ^ ) 2 ] + 2 E [ ( f − E [ f ^ ] ) ( E [ f ^ ] − f ^ ) ] \begin{aligned} &= E[(f - E[\hat{f}])^2] + E[(E[\hat{f}] - \hat{f})^2] + 2E[(f - E[\hat{f}])(E[\hat{f}] - \hat{f})] \end{aligned} =E[(f−E[f^])2]+E[(E[f^]−f^)2]+2E[(f−E[f^])(E[f^]−f^)]
Step 6:处理三项
第一项:
E [ ( f − E [ f ^ ] ) 2 ] = ( f − E [ f ^ ] ) 2 ( f 和 E [ f ^ ] 都是常数) = Bias 2 [ f ^ ] \begin{aligned} E[(f - E[\hat{f}])^2] &= (f - E[\hat{f}])^2 \quad \text{(f 和 E\[\\hat{f}\] 都是常数)} \\ &= \text{Bias}^2[\hat{f}] \end{aligned} E[(f−E[f^])2]=(f−E[f^])2(f 和 E[f^] 都是常数)=Bias2[f^]
第二项:
E [ ( E [ f ^ ] − f ^ ) 2 ] = E [ ( f ^ − E [ f ^ ] ) 2 ] = Var [ f ^ ] \begin{aligned} E[(E[\hat{f}] - \hat{f})^2] &= E[(\hat{f} - E[\hat{f}])^2] \\ &= \text{Var}[\hat{f}] \end{aligned} E[(E[f^]−f^)2]=E[(f^−E[f^])2]=Var[f^]
第三项(交叉项):
E [ ( f − E [ f ^ ] ) ( E [ f ^ ] − f ^ ) ] = ( f − E [ f ^ ] ) ⋅ E [ E [ f ^ ] − f ^ ] = ( f − E [ f ^ ] ) ⋅ ( E [ f ^ ] − E [ f ^ ] ) = 0 \begin{aligned} E[(f - E[\hat{f}])(E[\hat{f}] - \hat{f})] &= (f - E[\hat{f}]) \cdot E[E[\hat{f}] - \hat{f}] \\ &= (f - E[\hat{f}]) \cdot (E[\hat{f}] - E[\hat{f}]) \\ &= 0 \end{aligned} E[(f−E[f^])(E[f^]−f^)]=(f−E[f^])⋅E[E[f^]−f^]=(f−E[f^])⋅(E[f^]−E[f^])=0
Step 7:最终结果
将所有项合并:
E [ ( y − f ^ ) 2 ] = ( E [ f ^ ] − f ) 2 ⏟ Bias 2 + E [ ( f ^ − E [ f ^ ] ) 2 ] ⏟ Variance + σ ϵ 2 ⏟ Noise \begin{aligned} E[(y - \hat{f})^2] &= \underbrace{(E[\hat{f}] - f)^2}{\text{Bias}^2} + \underbrace{E[(\hat{f} - E[\hat{f}])^2]}{\text{Variance}} + \underbrace{\sigma_\epsilon^2}_{\text{Noise}} \end{aligned} E[(y−f^)2]=Bias2 (E[f^]−f)2+Variance E[(f^−E[f^])2]+Noise σϵ2
即:
E [ ( y − f ^ ) 2 ] = Bias 2 [ f ^ ] + Var [ f ^ ] + σ ϵ 2 \boxed{E[(y - \hat{f})^2] = \text{Bias}^2[\hat{f}] + \text{Var}[\hat{f}] + \sigma_\epsilon^2} E[(y−f^)2]=Bias2[f^]+Var[f^]+σϵ2
核心洞见:
- Bias 刻画"平均而言,模型离真实函数有多远"(系统性误差)
- Variance 刻画"不同训练集会让模型波动多大"(随机性误差)
- Noise 是数据本身的不可约误差
- 三者正交分解,互不干扰
- Bias (偏差) : E [ f ^ ] − f E[\hat{f}] - f E[f^]−f
- 刻画模型的拟合能力。
- 模型越简单(如线性),Bias 越大(欠拟合)。
- Variance (方差) : E [ ( f ^ − E [ f ^ ] ) 2 ] E[(\hat{f} - E[\hat{f}])^2] E[(f^−E[f^])2]
- 刻画模型的稳定性。
- 模型越复杂(如高阶多项式),Variance 越大(过拟合,对数据扰动敏感)。
- Noise (噪声) : σ ϵ 2 \sigma_\epsilon^2 σϵ2
- 数据本身的质量。这是不可约误差 (Irreducible Error),是泛化误差的下界。
3.2 经典 U 型曲线
随着模型复杂度增加:
- Bias ↓ \downarrow ↓ (越来越准)
- Variance ↑ \uparrow ↑ (越来越不稳定)
- 总误差:先降后升,呈 U 型。最佳模型是在两者之间找到平衡点(Sweet Spot)。
四、实战演练:亲眼目睹过拟合与正则化
我们通过代码直观感受:为什么加了正则化(先验),曲线就能变平滑?
python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression, Ridge
# 1. 真实函数:y = sin(2πx) + 噪声
def true_fun(X):
return np.sin(2 * np.pi * X)
# 2. 生成合成数据
np.random.seed(0)
n_samples = 30
X = np.sort(np.random.rand(n_samples))
y = true_fun(X) + np.random.randn(n_samples) * 0.2
X_test = np.linspace(0, 1, 100)
# 3. 对比不同复杂度的模型
degrees = [1, 4, 15]
plt.figure(figsize=(14, 4))
for i, degree in enumerate(degrees):
ax = plt.subplot(1, 3, i + 1)
if degree == 15:
# 特例:高阶多项式 + L2正则化
model = Ridge(alpha=0.1)
title_suffix = "(With Regularization)"
else:
model = LinearRegression()
title_suffix = ""
pipeline = Pipeline([
("poly", PolynomialFeatures(degree=degree, include_bias=False)),
("lr", model)
])
pipeline.fit(X[:, np.newaxis], y)
y_pred = pipeline.predict(X_test[:, np.newaxis])
plt.plot(X_test, y_pred, label="Model", color="r")
plt.plot(X_test, true_fun(X_test), label="True function", linestyle="--")
plt.scatter(X, y, edgecolor='b', s=20, label="Samples")
plt.title(f"Degree {degree} {title_suffix}")
plt.legend()
plt.show()
关键现象 :当 Degree=15 时,如果不加正则化,曲线会剧烈震荡(过拟合);但如果我们加上 Ridge(alpha=0.1),即使是 15 次多项式,曲线也变得惊人地平滑!这验证了贝叶斯先验对模型复杂度的约束作用。
4.1 从"跑通代码"到"验证理论":深度解析
核心问题 :上述代码不仅仅是"演示过拟合",更是对 2.3 节数学推导的实证验证。让我们逐行剖析,揭示代码与理论的精确对应关系。
4.1.1 理论回顾:Ridge 回归的数学本质
在 2.3.4 节,我们证明了 Ridge 回归的目标函数:
w ^ R i d g e = arg min w [ 1 N ∑ i = 1 N ( y i − w T x i ) 2 + λ ∥ w ∥ 2 ] \hat{w}{Ridge} = \arg\min{w} \left[ \frac{1}{N} \sum_{i=1}^N (y_i - w^T x_i)^2 + \lambda \|w\|^2 \right] w^Ridge=argwmin[N1i=1∑N(yi−wTxi)2+λ∥w∥2]
等价于贝叶斯 MAP 估计:
w ^ M A P = arg max w [ log P ( y ∣ X , w ) + log P ( w ) ] \hat{w}{MAP} = \arg\max{w} \left[ \log P(y|X,w) + \log P(w) \right] w^MAP=argwmax[logP(y∣X,w)+logP(w)]
其中正则化系数与先验方差的关系为:
λ = σ 2 N τ 2 \lambda = \frac{\sigma^2}{N\tau^2} λ=Nτ2σ2
- σ 2 \sigma^2 σ2:观测噪声方差(数据的不确定性)
- τ 2 \tau^2 τ2:先验方差(对权重大小的先验信念强度)
- N N N:样本数量
4.1.2 代码与理论的逐行对应
让我们将代码与理论公式一一映射:
1. 数据生成过程(对应贝叶斯模型假设)
python
y = true_fun(X) + np.random.randn(n_samples) * 0.2
理论对应 :
y i = f ( x i ) + ϵ i , ϵ i ∼ N ( 0 , σ 2 ) y_i = f(x_i) + \epsilon_i, \quad \epsilon_i \sim \mathcal{N}(0, \sigma^2) yi=f(xi)+ϵi,ϵi∼N(0,σ2)
这里 0.2 正是噪声标准差 σ = 0.2 \sigma = 0.2 σ=0.2,因此 σ 2 = 0.04 \sigma^2 = 0.04 σ2=0.04。
洞见 :这行代码在数学上定义了似然函数 P ( y ∣ X , w ) P(y|X,w) P(y∣X,w) 的形式------高斯分布。
2. Ridge 正则化参数(对应先验强度)
python
model = Ridge(alpha=0.1)
理论对应 :
λ = 0.1 \lambda = 0.1 λ=0.1
但这个 alpha=0.1 背后隐藏着什么?根据 λ = σ 2 N τ 2 \lambda = \frac{\sigma^2}{N\tau^2} λ=Nτ2σ2,我们可以反推出隐式的先验方差:
τ 2 = σ 2 N λ = 0.04 30 × 0.1 = 0.04 3 ≈ 0.0133 \tau^2 = \frac{\sigma^2}{N\lambda} = \frac{0.04}{30 \times 0.1} = \frac{0.04}{3} \approx 0.0133 τ2=Nλσ2=30×0.10.04=30.04≈0.0133
物理意义解读:
- λ \lambda λ 越大 → 先验方差 τ 2 \tau^2 τ2 越小 → 先验信念越强 → 权重被约束得越死 → 曲线越平滑
- λ \lambda λ 越小 → 先验方差 τ 2 \tau^2 τ2 越大 → 先验信念越弱 → 允许权重变大 → 曲线可以更灵活(但可能过拟合)
在我们的例子中, τ 2 = 0.0133 \tau^2 = 0.0133 τ2=0.0133 意味着先验认为"权重的绝对值大概率不超过 0.0133 ≈ 0.115 \sqrt{0.0133} \approx 0.115 0.0133 ≈0.115"。这个强约束使得即使模型有 15 个多项式项,每个权重也不能太大,从而避免剧烈震荡。
3. 多项式展开(对应特征空间的维度)
python
PolynomialFeatures(degree=15, include_bias=False)
理论对应 :将输入 x x x 映射到高维特征空间:
ϕ ( x ) = [ x , x 2 , x 3 , ... , x 15 ] T \phi(x) = [x, x^2, x^3, \dots, x^{15}]^T ϕ(x)=[x,x2,x3,...,x15]T
此时权重向量 w ∈ R 15 w \in \mathbb{R}^{15} w∈R15,模型变为:
f ^ ( x ) = w 1 x + w 2 x 2 + ⋯ + w 15 x 15 \hat{f}(x) = w_1 x + w_2 x^2 + \cdots + w_{15} x^{15} f^(x)=w1x+w2x2+⋯+w15x15
过拟合的根源 :当 degree=15 时,模型有 15 个自由度,而我们只有 30 个样本点。如果没有正则化,模型会找到一组权重 w w w,使得曲线精确穿过几乎所有训练点,但在训练点之间剧烈震荡(高方差)。
4. 优化过程(对应 MAP 估计的求解)
python
pipeline.fit(X[:, np.newaxis], y)
理论对应 :在后台,Ridge 正在求解:
w ^ = arg min w [ ∑ i = 1 30 ( y i − w T ϕ ( x i ) ) 2 + 0.1 × ∥ w ∥ 2 ] \hat{w} = \arg\min_{w} \left[ \sum_{i=1}^{30} (y_i - w^T \phi(x_i))^2 + 0.1 \times \|w\|^2 \right] w^=argwmin[i=1∑30(yi−wTϕ(xi))2+0.1×∥w∥2]
这个优化问题有闭式解(Closed-form Solution):
w ^ = ( X T X + λ I ) − 1 X T y \hat{w} = (X^T X + \lambda I)^{-1} X^T y w^=(XTX+λI)−1XTy
其中 X X X 是特征矩阵, I I I 是单位矩阵。
关键点 :注意分母中的 λ I \lambda I λI 项!这正是正则化(先验)的作用:
- 当 λ = 0 \lambda = 0 λ=0(无先验)时,解退化为普通最小二乘 ( X T X ) − 1 X T y (X^T X)^{-1} X^T y (XTX)−1XTy
- 当 λ > 0 \lambda > 0 λ>0 时, λ I \lambda I λI 使得矩阵 ( X T X + λ I ) (X^T X + \lambda I) (XTX+λI) 的条件数变小,即使 X T X X^T X XTX 接近奇异(样本量少于特征数)时,也能稳定求解
4.1.3 数值实验:验证 λ \lambda λ 的作用
让我们通过对比不同 alpha 值,直观感受先验强度对模型的约束:
alpha 值 |
对应 τ 2 \tau^2 τ2 | 先验信念强度 | 曲线表现 |
|---|---|---|---|
| 0.001 | 1.33 | 极弱 | 几乎完美拟合训练点,剧烈震荡 |
| 0.01 | 0.133 | 弱 | 轻微震荡,开始平滑 |
| 0.1 | 0.0133 | 中等 | 平滑曲线,较好泛化 |
| 1.0 | 0.00133 | 强 | 过于平滑,开始欠拟合 |
实验建议 :修改代码中的 alpha 值,观察曲线形状的变化,你会发现:
alpha从 0.001 增加到 1.0 时,曲线从"狂野震荡"逐渐变为"保守平滑"- 这正是贝叶斯先验从"几乎不约束"到"强力约束"的过程
4.1.4 更深层的洞见:为什么正则化能"杀死"震荡?
几何直觉:
- 15 次多项式的曲线要剧烈震荡,必然需要某些高次项的系数 w k w_k wk 非常大(正负交替)
- L2 正则化 ∥ w ∥ 2 = w 1 2 + w 2 2 + ⋯ + w 15 2 \|w\|^2 = w_1^2 + w_2^2 + \cdots + w_{15}^2 ∥w∥2=w12+w22+⋯+w152 会惩罚所有大的权重
- 在优化过程中,模型被迫在"拟合训练数据"和"保持权重较小"之间权衡
- 最终妥协的结果是:曲线大致跟随真实函数趋势,但不会为了穿过每个点而让高次项系数爆炸
代数证明 (简化版):假设某个权重 w k w_k wk 很大,比如 w k = 10 w_k = 10 wk=10,则:
- 不加正则化时:只要它能让 MSE 下降,就会被接受
- 加正则化后:需要让 MSE 下降的收益,超过 λ w k 2 = 0.1 × 100 = 10 \lambda w_k^2 = 0.1 \times 100 = 10 λwk2=0.1×100=10 的惩罚,才值得保留这么大的权重
4.1.5 本节小结
通过这段代码,我们完成了从理论到实践的完整闭环:
- 数学推导(2.3 节):证明了 Ridge 回归 = 高斯先验 MAP
- 参数映射 (本节):明确了
alpha=0.1对应 λ = σ 2 N τ 2 \lambda = \frac{\sigma^2}{N\tau^2} λ=Nτ2σ2 - 物理解释 (本节):理解了 λ \lambda λ 增大 = 先验方差 τ 2 \tau^2 τ2 减小 = 约束变强
- 视觉验证(代码图像):看到了平滑曲线就是先验约束的直接体现
关键领悟:
当你调用
Ridge(alpha=0.1)时,你并不是在简单地"添加一个惩罚项",而是在数学上等价于告诉模型:"我先验地相信,权重应该服从 N ( 0 , 0.0133 ) \mathcal{N}(0, 0.0133) N(0,0.0133) 的分布"。这个先验信念与数据的似然函数共同决定了最终的后验分布,而 MAP 估计就是这个后验分布的峰值。下次当你在机器学习实践中调参 λ \lambda λ 时,不要只是盲目网格搜索,而应该思考:
- 当前任务的噪声水平 σ 2 \sigma^2 σ2 大致是多少?
- 我有多少样本 N N N?
- 我愿意对权重施加多强的约束(先验方差 τ 2 \tau^2 τ2 应该多大)?
- 根据 λ = σ 2 N τ 2 \lambda = \frac{\sigma^2}{N\tau^2} λ=Nτ2σ2 来指导 λ \lambda λ 的选择范围
这就是从"炼丹"到"理性设计"的跨越。
五、拓展深入:当传统理论失效------双下降现象
思考:如果不加正则化,一味地增加模型参数(比如几千亿参数的大模型),模型一定会过拟合吗?
5.1 经典理论的困境
传统的 Bias-Variance Tradeoff 告诉我们,随着参数量增加,测试误差会先降后升(U型曲线)。这解释了 SVM、随机森林等传统算法。
5.2 深度学习的怪象
但在深度学习时代(Deep Learning Era),我们发现了一个惊人的现象:
当参数量远远超过样本量(Over-parameterized)时,测试误差在短暂上升后,竟然再次下降 !这就是著名的 "双下降" (Double Descent) 现象。
- 第一下降区 (Under-parameterized):符合传统 U 型曲线。
- 插值阈值 (Interpolation Threshold):当模型大到刚好能记住所有训练样本时,过拟合最严重,测试误差达到峰值。
- 第二下降区 (Over-parameterized):当参数量继续增加,模型变得极其庞大时,虽然它依然记住了所有样本(训练误差为0),但测试误差反而继续降低,且往往低于经典的 Sweet Spot。
5.3 为什么会这样?
这目前是学术界的前沿热点。一种解释是:
极度过参数化的模型(如大模型)在 SGD 优化下,倾向于寻找**"最平坦"的最小值 (Flattest Minima)。这种平坦性自带了一种隐式的正则化效果**,使得模型具有了某种奥卡姆剃刀式的简单性,从而神奇地拥有了良好的泛化能力。
启示 :在深度学习时代,"过拟合"的定义正在被重写。有时候,大 (足够大)真的就是 美。
六、本章小结
本章看似零散地讲解了流派之争、三要素、偏差方差等概念,但实际上它们构成了一个严密的认知闭环。如果我们从更高的维度俯瞰,会发现一个惊人的洞见:频率派和贝叶斯派的百年纠葛,本质上是求值 vs 求分布两种世界观的对立。
频率派认为参数 θ \theta θ 是固定的未知常量,所以机器学习是一个优化问题 arg max θ P ( X ∣ θ ) \arg\max_\theta P(X|\theta) argmaxθP(X∣θ)。当面对过拟合风险时,他们选择显式地惩罚模型复杂度,引入正则化项 λ J ( f ) \lambda J(f) λJ(f)。而贝叶斯派则认为 θ \theta θ 本身就是随机变量,机器学习是一个积分问题 ∫ P ( x n e w ∣ θ ) P ( θ ∣ X ) d θ \int P(x_{new}|\theta) P(\theta|X) d\theta ∫P(xnew∣θ)P(θ∣X)dθ,通过先验分布 P ( θ ) P(\theta) P(θ) 来编码对参数的"主观信念"。
但更深刻的是,这两种看似对立的方法论,在数学上竟然完全等价。L2 正则化等价于引入高斯先验 N ( 0 , σ 2 ) \mathcal{N}(0, \sigma^2) N(0,σ2),L1 正则化等价于拉普拉斯先验。这揭示了一个哲学真理:约束与信念,本是同一枚硬币的两面。频率派的"惩罚复杂度"和贝叶斯派的"编码信念",殊途同归。
从统计学习三要素(模型、策略、算法)到偏差-方差权衡,我们看到了机器学习如何在拟合能力与泛化能力之间走钢丝。传统理论告诉我们,模型复杂度应该有一个"甜蜜点"(Sweet Spot),对应经典的 U 型曲线。但深度学习时代的双下降现象,彻底颠覆了这一认知:当模型足够大时,即使完美记住所有训练样本,测试误差反而会再次下降。这种"隐式正则化"的魔力,来自于 SGD 倾向于寻找最平坦的最小值。
回顾全章,我们建立了一套完整的认知体系,如下图所示:
数学等价
机器学习的哲学基石
频率派:世界是确定的
贝叶斯派:世界是不确定的
方法论:MLE
极大似然估计
方法论:MAP/MCMC
后验分布估计
统计学习三要素
模型:假设空间 F
策略:损失函数 + 正则化
算法:优化求解器
核心难题:
偏差-方差权衡
高偏差 Low Bias
欠拟合
模型过于简单
高方差 High Var
过拟合
对数据扰动敏感
解决方案分支
频率派:显式正则化
L1/L2/Dropout
贝叶斯派:引入先验
P theta ~ N 0 σ²
现代深度学习:
双下降现象
过参数化时
隐式正则化
Flattest Minima
从理论到实践,我们可以构建这样一条完整链条:世界观决定了方法论(MLE vs MAP),三要素框架解构了任何算法的本质,结构风险最小化给出了对抗过拟合的数学工具,而偏差-方差分解则提供了诊断模型问题的量化手段。传统范式通过 U 型曲线寻找 Sweet Spot,支撑着 SVM、随机森林等经典算法;而现代范式则在双下降的指引下,拥抱 Transformer、GPT 等超大规模模型。
这一章也为我们留下了几个值得深思的问题:如果贝叶斯派的先验本质上是"主观的",我们凭什么相信它能带来客观的泛化能力?为什么 L2 正则化恰好等价于高斯先验,而不是其他分布?双下降现象告诉我们"大即是美",但在资源受限的场景下,我们该如何平衡模型规模与计算成本?这些问题的答案,将在后续章节中逐步揭晓。
推荐阅读
- 白板推导系列 - P1 绪论 (shuhuai008, B站):深入讲解频率派与贝叶斯派的哲学差异,包含详细的板书推导过程。
- 《统计学习方法》 - 第1章 概论 (李航):系统阐述统计学习三要素框架(模型、策略、算法)。
- Belkin et al. (2019). "Reconciling modern machine learning practice and the classical bias-variance trade-off":关于传统偏差-方差权衡理论与现代机器学习实践冲突的开创性研究。
- Nakkiran et al. (2021). "Deep Double Descent: Where Bigger Models and More Data Hurt":深入探讨双下降现象的理论解释和实验验证。
下章预告:
理解了"为什么要学机器学习",我们需要锻造"如何推导机器学习"的数学兵器。
下一章 第02章:线性代数基础 将带你掌握机器学习推导的核心武器------矩阵求导术。我们不会停留在机械的公式记忆,而是从几何直觉出发,理解为什么梯度是"最陡峭的上升方向",为什么 Hessian 矩阵能刻画"曲率"。这套武器,将让你看懂 90% 机器学习论文的推导过程。