推荐直接网站在线阅读:aicoting AI算法面试学习在线网站
学习理论(Learning Theory)是机器学习的数学与理论基础之一,它可以从严格的数学角度解释和分析学习算法的性质与性能。
通过学习理论,我们不仅能够理解机器学习为何有效,还可以回答在多大程度上算法能够泛化到新数据、需要多少训练样本、算法复杂度如何影响模型性能等关键问题。
偏差-方差权衡
偏差-方差权衡(Bias-Variance Tradeoff)是机器学习中理解模型泛化能力的重要理论框架。它揭示了模型复杂度、拟合能力与泛化性能之间的关系,是解释过拟合与欠拟合现象的核心工具。
在监督学习中,我们希望找到一个假设函数 h(x) 来逼近真实的目标函数 f(x),而数据带有噪声:
<math xmlns="http://www.w3.org/1998/Math/MathML"> y = f ( x ) + ϵ , ϵ ∼ N ( 0 , σ 2 ) y = f(x) + \epsilon, \quad \epsilon \sim \mathcal{N}(0, \sigma^2) </math>y=f(x)+ϵ,ϵ∼N(0,σ2)
模型训练的目标是最小化预测误差(例如均方误差 MSE):MSE=E[(h(x)−y)2]
然而,这个误差并不是单一来源,而是由多个因素共同决定。
考虑模型的预测值 h(x),其均方误差可以分解为 偏差(Bias)、方差(Variance) 和 噪声(Noise) 三部分:
<math xmlns="http://www.w3.org/1998/Math/MathML"> E [ ( h ( x ) − y ) 2 ] = ( E [ h ( x ) ] − f ( x ) ) 2 ⏟ Bias 2 + E [ ( h ( x ) − E [ h ( x ) ] ) 2 ] ⏟ Variance + σ 2 ⏟ Noise \mathbb{E}\big[(h(x) - y)^2\big] = \underbrace{( \mathbb{E}[h(x)] - f(x) )^2}{\text{Bias}^2} + \underbrace{\mathbb{E}\big[(h(x) - \mathbb{E}[h(x)])^2\big]}{\text{Variance}} + \underbrace{\sigma^2}_{\text{Noise}} </math>E[(h(x)−y)2]=Bias2 (E[h(x)]−f(x))2+Variance E[(h(x)−E[h(x)])2]+Noise σ2
其中:
- Bias(偏差):模型预测的期望值与真实函数 f(x) 的偏离程度。偏差大意味着模型过于简单,无法捕捉真实模式,导致欠拟合。
- Variance(方差):模型预测结果对训练数据的敏感性。如果训练数据变化导致模型预测大幅波动,说明方差大。方差大通常意味着模型过于复杂,容易过拟合。
- Noise(噪声):数据本身的不可约误差,由观测噪声或系统随机性引起,无法通过任何学习方法消除。
如果把欠拟合和过拟合与方差偏差对应,高偏差就是欠拟合,模型过于简单,例如用线性函数拟合一个非线性分布,预测值与真实值存在系统性差距。高方差就是过拟合,模型过于复杂,例如高次多项式拟合少量样本,虽然训练误差很小,但在新样本上表现差。理想情况是模型既不过于简单,也不过于复杂,能够捕捉数据的主要规律,同时保持较好的泛化性能。
假设我们用一个二次多项式去拟合数据 y=x2+ϵ: 如果我们只用一次函数 y = ax + b,那么偏差就会很大(模型不能表达二次关系)。
反之如果我们用 10 次多项式,偏差几乎为零,但方差极大(对训练样本扰动非常敏感)。
如果用二次函数,偏差小,方差也适中,才是理想解。
这说明最佳模型复杂度往往与数据的真实结构相匹配。
考虑用多项式回归拟合一组样本点:
- 低阶多项式(如一次函数):模型太简单,表现为高偏差低方差,欠拟合。
- 高阶多项式(如 10 次函数):模型太复杂,训练误差极低,但在测试集上波动很大,表现为低偏差高方差,过拟合。
- 中等阶数多项式(如三次或四次):能够较好地平衡偏差和方差,泛化误差最小。
偏差-方差权衡在机器学习中的应用包括以下方面:
- 模型选择
- 线性模型(如线性回归):偏差较高但方差较低。
- 非线性模型(如深度神经网络):偏差较低但方差可能较高。 选择合适复杂度的模型是关键。
- 正则化
- L1(Lasso)、L2(Ridge)正则化通过限制模型复杂度来降低方差,从而改善泛化能力。
- 集成方法
- Bagging(如随机森林)降低方差。
- Boosting(如 XGBoost)降低偏差。 集成方法正是通过控制偏差和方差来提升模型性能,这些我们后面都会进行介绍。
- 交叉验证
- 用于评估不同复杂度模型的泛化能力,帮助找到偏差-方差的平衡点。
总结一下就是偏差反映模型的简化程度,偏差大导致欠拟合。方差反映模型对数据的敏感性,方差大导致过拟合。偏差与方差通常呈现对立关系:降低偏差往往增加方差,降低方差往往增加偏差。偏差-方差权衡 就是在这两者之间寻找最优平衡,以实现最低的泛化误差。
VC 维与泛化误差
在机器学习中,我们关心的不仅是模型在训练数据上的表现,更关心模型在 新数据(测试集) 上的表现,也就是 泛化能力。统计学习理论为我们提供了分析和保证泛化性能的理论框架,而 VC 维(Vapnik--Chervonenkis Dimension) 是其中的核心概念之一。
泛化误差与经验误差
在监督学习中,假设我们有真实分布 D,样本数据为: <math xmlns="http://www.w3.org/1998/Math/MathML"> S = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ... , ( x m , y m ) } , ( x i , y i ) ∼ D S = \{(x_1, y_1), (x_2, y_2), \dots, (x_m, y_m)\}, \quad (x_i, y_i) \sim \mathcal{D} </math>S={(x1,y1),(x2,y2),...,(xm,ym)},(xi,yi)∼D
设模型假设为 h(x),损失函数为 L(h(x),y)。则:
- 泛化误差(期望风险): <math xmlns="http://www.w3.org/1998/Math/MathML"> R ( h ) = E ( x , y ) ∼ D [ L ( h ( x ) , y ) ] R(h) = \mathbb{E}_{(x,y)\sim \mathcal{D}}[L(h(x), y)] </math>R(h)=E(x,y)∼D[L(h(x),y)]
- 经验误差(经验风险): <math xmlns="http://www.w3.org/1998/Math/MathML"> R ^ S ( h ) = 1 m ∑ i = 1 m L ( h ( x i ) , y i ) \hat{R}S(h) = \frac{1}{m} \sum{i=1}^m L(h(x_i), y_i) </math>R^S(h)=m1∑i=1mL(h(xi),yi)
我们希望: <math xmlns="http://www.w3.org/1998/Math/MathML"> R ( h ) ≈ R ^ S ( h ) R(h) \approx \hat{R}_S(h) </math>R(h)≈R^S(h)
但由于训练样本有限,模型可能会出现 过拟合(经验误差很小但泛化误差很大)。这时就需要一个理论来刻画 假设空间复杂度,VC 维便应运而生。
VC 维的定义
Shattering(打散)
设一个假设类(假设空间)为 <math xmlns="http://www.w3.org/1998/Math/MathML"> H H </math>H。若对某个样本集合 <math xmlns="http://www.w3.org/1998/Math/MathML"> S = { x 1 , x 2 , ... , x m } S = \{x_1, x_2, \dots, x_m\} </math>S={x1,x2,...,xm},无论如何给这些样本点分配标签(共 2m 种可能), <math xmlns="http://www.w3.org/1998/Math/MathML"> H H </math>H中都存在一个假设能完全正确分类这些样本点,则称 <math xmlns="http://www.w3.org/1998/Math/MathML"> H H </math>H能打散(shatter)集合 <math xmlns="http://www.w3.org/1998/Math/MathML"> S S </math>S。
VC 维
VC 维 定义为: <math xmlns="http://www.w3.org/1998/Math/MathML"> V C ( H ) = max { m ∣ ∃ S , ∣ S ∣ = m , H 能打散 S } VC(\mathcal{H}) = \max \{m \,|\, \exists S, |S|=m, \mathcal{H} \text{能打散} S\} </math>VC(H)=max{m∣∃S,∣S∣=m,H能打散S}
即:一个假设类能够打散的最大样本点数。
示例
- 一维阈值分类器(直线切分实数轴):
- 任何 2 个点都可以被阈值分类器打散。
- 但 3 个点无法完全打散(总有一种标签分布无法实现)。
- 因此 VC=2。
- 二维平面上的线性分类器(直线划分平面):
- 可以打散任意 3 个点(只要不共线)。
- 对于 4 个点,不是所有情况都能打散(例如四点构成凸四边形,无法实现对角点正负交替标记)。
- 因此 VC=3。
- d 维空间中的线性分类器:
- VC = d + 1
- 例如在三维空间(d=3)中,平面分类器的 VC 维为 4。
VC 维与泛化误差的关系
统计学习理论表明:当假设空间的 VC 维有限时,可以给出泛化误差的上界。
泛化界(VC 不等式)
以 0-1 损失为例,若假设空间 H的 VC 维为 h,训练样本数为 m,则对于任意 δ∈(0,1),以至少
1−δ的概率,有: <math xmlns="http://www.w3.org/1998/Math/MathML"> R ( h ) ≤ R ^ S ( h ) + h ( log ( 2 m h ) + 1 ) + log ( 4 δ ) m R(h) \leq \hat{R}_S(h) + \sqrt{\frac{h\big(\log(\frac{2m}{h})+1\big) + \log(\frac{4}{\delta})}{m}} </math>R(h)≤R^S(h)+mh(log(h2m)+1)+log(δ4)
含义:
- 泛化误差由两部分组成:经验误差 + 复杂度惩罚项。
- VC 维越大,复杂度惩罚越大,需要更多样本才能保证泛化能力。
- 训练样本数 mm 越大,复杂度惩罚项越小,模型越接近真实泛化能力。
偏差-方差与 VC 维的联系
- VC 维大 → 模型复杂度高 → 偏差小但方差大 → 容易过拟合。
- VC 维小 → 模型复杂度低 → 偏差大但方差小 → 容易欠拟合。
- 这与 偏差-方差权衡 是一致的。
在机器学习中的应用
- 模型复杂度的量化
VC 维是衡量假设空间复杂度的理论指标。
- 高 VC 维 → 模型能表示更复杂的模式,但需要更多样本。
- 低 VC 维 → 泛化能力差,难以捕捉复杂模式。
- 样本复杂度(Sample Complexity)
若假设空间 VC 维为 h,要保证泛化误差 ϵ且置信度为 <math xmlns="http://www.w3.org/1998/Math/MathML"> 1 − δ 1−δ </math>1−δ,所需样本数量级为: <math xmlns="http://www.w3.org/1998/Math/MathML"> m = O ( h + log ( 1 / δ ) ϵ 2 ) m = O\left(\frac{h + \log(1/\delta)}{\epsilon^2}\right) </math>m=O(ϵ2h+log(1/δ))
- 模型选择
VC 维可以作为模型选择的理论参考,帮助避免过拟合或欠拟合。
总结一下就是VC 维 定义了一个假设类能够打散的最大样本点数,是衡量模型复杂度的重要指标。泛化误差可以分解为 经验误差 + 复杂度惩罚项,VC 维直接影响复杂度惩罚的大小。VC 理论为机器学习提供了泛化保证,并解释了为什么需要足够多的数据来支撑复杂模型的训练。
PAC 学习
PAC 学习(Probably Approximately Correct Learning,概率近似正确学习)是统计学习理论的核心概念,由 Valiant (1984) 提出,用于严格定义"学习是否可能"。它回答了这样一个问题:在有限数据和有限计算资源下,一个学习算法能否学到接近真实的模型?
PAC 学习的核心思想
PAC 框架的目标是:
- 学习算法从有限样本中训练出一个假设 h。
- 这个假设在未来数据上的表现(泛化能力)接近最优。
- 保证这种接近最优的情况发生的概率非常高。
换句话说,PAC 学习要求算法输出的模型是:
- Approximately Correct(近似正确):预测误差不超过一个很小的 <math xmlns="http://www.w3.org/1998/Math/MathML"> ϵ ϵ </math>ϵ。
- Probably(高概率):上述结果发生的概率至少为 <math xmlns="http://www.w3.org/1998/Math/MathML"> 1 − δ 1−δ </math>1−δ。
PAC 学习的数学定义
设:
- 输入空间为 <math xmlns="http://www.w3.org/1998/Math/MathML"> X X </math>X,输出标签为 <math xmlns="http://www.w3.org/1998/Math/MathML"> 0 , 1 {0,1} </math>0,1。
- 数据样本 <math xmlns="http://www.w3.org/1998/Math/MathML"> ( x , y ) (x,y) </math>(x,y) 来自分布 <math xmlns="http://www.w3.org/1998/Math/MathML"> D D </math>D。
- 目标函数为 <math xmlns="http://www.w3.org/1998/Math/MathML"> f f </math>f,假设空间为 <math xmlns="http://www.w3.org/1998/Math/MathML"> H H </math>H。
- 学习算法输出假设为 <math xmlns="http://www.w3.org/1998/Math/MathML"> h ∈ H h∈H </math>h∈H。
- 泛化误差(真实风险): <math xmlns="http://www.w3.org/1998/Math/MathML"> R ( h ) = Pr x ∼ D [ h ( x ) ≠ f ( x ) ] R(h) = \Pr_{x \sim \mathcal{D}}[h(x) \neq f(x)] </math>R(h)=Prx∼D[h(x)=f(x)]
如果对于任意 ϵ,δ∈(0,1),学习算法能在多项式数量的样本和时间内,找到满足R(h)≤ϵ的假设,并且这种情况发生的概率至少为1−δ,则称假设类 H是 PAC 可学习的。
解释
PAC 框架告诉我们:
- ϵ控制"学习有多准":
越小代表模型越接近真实目标函数。
- 1−δ控制"学习有多稳":
1−δ是置信度,表示这种近似正确结果发生的概率。
- 样本复杂度:
- 为了达到 PAC 学习目标,所需样本数量依赖于假设空间复杂度和参数 (ϵ,δ)。
- 若假设空间 VC 维为h,则所需样本数为: <math xmlns="http://www.w3.org/1998/Math/MathML"> m = O ( h log ( 1 / ϵ ) + log ( 1 / δ ) ϵ ) m = O\left(\frac{h \log(1/\epsilon) + \log(1/\delta)}{\epsilon}\right) </math>m=O(ϵhlog(1/ϵ)+log(1/δ))
PAC 学习的两种设定
实现型 PAC 学习(Realizable Case)
- 假设存在一个真实的目标函数 <math xmlns="http://www.w3.org/1998/Math/MathML"> f ∈ H f∈H </math>f∈H。
- 目标是找到与 f 接近的假设 h。
- 常用于理论分析。
不可实现型 PAC 学习(Agnostic PAC)
- 现实中目标函数未必在假设空间 <math xmlns="http://www.w3.org/1998/Math/MathML"> H H </math>H 内。
- 目标改为找到一个假设,使其误差接近 H 中最优假设的误差: <math xmlns="http://www.w3.org/1998/Math/MathML"> R ( h ) ≤ min h ′ ∈ H R ( h ′ ) + ϵ R(h) \leq \min_{h' \in \mathcal{H}} R(h') + \epsilon </math>R(h)≤minh′∈HR(h′)+ϵ
- 更符合真实机器学习场景。
PAC 学习的意义
- 理论保证:提供了判断某个假设类能否学好的数学标准。
- 样本复杂度:解释了为什么更复杂的模型需要更多数据。
- 泛化能力:揭示了为什么经验误差小并不等于泛化误差小。
- 与 VC 维的关系:
- 有限 VC 维 ⇔ PAC 可学习。
- 这是统计学习理论中的一个核心定理。
示例
- 一维阈值分类器:VC 维为 2,因此是 PAC 可学习的,且所需样本数较少。
- 二维线性分类器:VC 维为 3,也可 PAC 学习。
- 神经网络:假设空间复杂度极高,VC 维巨大,但在足够多样本下也满足 PAC 框架。
最新的文章都在公众号aicoting更新,别忘记关注哦!!!