[机器学习-从入门到入土] 计算学习理论

[机器学习-从入门到入土] 计算学习理论

个人导航

知乎:https://www.zhihu.com/people/byzh_rc

CSDN:https://blog.csdn.net/qq_54636039

注:本文仅对所述内容做了框架性引导,具体细节可查询其余相关资料or源码

参考文章:各方资料

文章目录

概率近似正确PAC

核心问题: 在样本有限的情况下,能否"有保证地"学到一个"足够好"的模型?

概率意义上的理论保证

ε \varepsilon ε:约束的是 模型本身的错误率

-> 控制"模型有多好"

δ \delta δ:约束的是 学习过程失败的概率

-> 控制"你对这个好结果有多大的把握"

近似正确AC

对任一假设 h ∈ H h \in \mathcal{H} h∈H,定义其泛化误差 (真实错误率):
e r r D ( h ) = P x ∼ D [ h ( x ) ≠ h ∗ ( x ) ] \mathrm{err}D(h) = \mathbb{P}{x\sim D}[h(x)\neq h^*(x)] errD(h)=Px∼D[h(x)=h∗(x)]

这是在真实分布 D D D 下的错误概率,而不是训练集上的错误

"近似正确"指的是:
e r r D ( h ) ≤ ε \mathrm{err}_D(h) \le \varepsilon errD(h)≤ε

  • 允许模型犯错
  • 但错误率不能超过一个事先给定的容忍上限 ε\varepsilonε

ε = 0.03 \varepsilon=0.03 ε=0.03:最多允许 3% 的样本被分错

概率正确PC

PAC 中的概率是 对训练样本随机性的概率
P S ∼ D m ( e r r D ( h S ) ≤ ε ) ≥ 1 − δ \mathbb{P}_{S\sim D^m} \Big( \mathrm{err}_D(h_S) \le \varepsilon \Big) \ge 1-\delta PS∼Dm(errD(hS)≤ε)≥1−δ

  • 随机抽取训练集 S S S
  • 用学习算法 A A A 得到假设 h S h_S hS
  • 至少以 1 − δ 1-\delta 1−δ 的概率,这个假设是"ε-近似正确的"

δ = 0.05 \delta=0.05 δ=0.05 表示 "学习失败(学到坏模型)的概率 ≤ 5%"

样本复杂度sample complexity

为了在 PAC 意义下学到一个"ε-近似正确、1−δ 可靠"的模型,至少需要多少训练样本 m

三种学习场景

本质差别在于:样本是怎么来的

1.查询学习(Query Learning)

学习者 主动选样本 x

直接问"老师:这个 x 的标签是什么?"

像考试前,你直接问老师

"最容易考哪道题?这题答案是什么?"

-> 现实中基本做不到

2.老师直接给样例(Teacher-generated)

老师知道真实规律 c c c, 精心生成一批 ( x , c ( x ) ) (x, c(x)) (x,c(x))

特点:

  • 数据干净
  • 分布"友好"
  • 比随机采样省数据

-> 现实中老师往往也不知道真实规律

3.随机生成(现在机器学习最常用)

样本 x ∼ P ( X ) x \sim P(X) x∼P(X) 自然随机出现

老师只负责打标签

  • 可能大量重复、简单、无区分度的样本
  • 关键难例出现概率低

-> 所以需要最多的数据(样本复杂度研究的主战场)

训练错误率 vs 真实错误率

三个"集合":X、C、H

实例集合 X X X: 所有可能输入的集合

-> 训练集只是从 X X X 中抽出来的一小撮

目标函数 C C C(或 c c c): 世界中"真正正确的分类规则"

-> 终极标准, 真实规律

-> 学习的目标是逼近这个 C C C

假设集合 H H H: 算法"能想到"的所有模型

  • 所有线性分类器
  • 所有深度 ≤ 5 的决策树
  • 所有参数在某范围内的神经网络

-> 真正的 C C C 往往 不在 H H H 里 , 我们只能在 H H H 中选"最像 C 的那个"

训练错误率 e r r o r t r a i n ( h ) error_{train}(h) errortrain(h)

模型在训练集 D D D上的错误比例:
e r r o r t r a i n ( h ) = Pr ⁡ x ∈ D [ h ( x ) ≠ c ( x ) ] error_{train}(h)= \Pr_{x \in D} [h(x) \ne c(x)] errortrain(h)=x∈DPr[h(x)=c(x)]

  • 可计算
  • 可被算法直接优化
  • 很容易被压到 0
真实错误率 e r r o r t r u e ( h ) error_{true}(h) errortrue(h)

模型在"真实世界分布 P ( X ) P(X) P(X)"上的错误概率:
e r r o r t r u e ( h ) = Pr ⁡ x ∼ P ( X ) [ h ( x ) ≠ c ( x ) ] error_{true}(h)= \Pr_{x \sim P(X)} [h(x) \ne c(x)] errortrue(h)=x∼P(X)Pr[h(x)=c(x)]

  • 永远无法精确计算
  • 只能用理论去"保证"
过拟合

e r r o r t r a i n ( h ) error_{train}(h) errortrain(h) 很小但 e r r o r t r u e ( h ) error_{true}(h) errortrue(h) 很大

本质原因: 模型"记住了样本",而不是"学会了规律"

为什么要"泛化能力"

学习的目标:

  • 不是在所有输入上都表现好
  • 而是在"高概率出现的输入"上表现好
一致性(Consistent)

如果某个假设 hhh 在训练集上 一个都没错 ,则称 h h h 与训练集 D D D 一致 (consistent)
e r r o r t r a i n ( h ) = 0 error_{train}(h)=0 errortrain(h)=0

  • 一致 ≠ 好模型
  • 复杂模型几乎总能做到一致(记忆)
  • 不会保证这个模型在新数据上好不好
版本空间 Version Space

所有能把训练集全分对的模型的集合
V S H , D = { h ∈ H ∣ h 在训练集 D 上无错误 } VS_{H,D} = \{h \in H \mid h \text{ 在训练集 } D \text{ 上无错误}\} VSH,D={h∈H∣h 在训练集 D 上无错误}

Haussler 定理

问题: 如果我随机抽 m 个样本,版本空间里还会不会混进"坏模型"

"ε-耗尽": 版本空间中 已经没有任何坏模型 :
∀ h ∈ V S H , D , e r r o r t r u e ( h ) < ε \forall h \in VS_{H,D},\quad error_{true}(h) < \varepsilon ∀h∈VSH,D,errortrue(h)<ε

Haussler 定理:
P ( 版本空间未被 ϵ 耗尽 ) < ∣ H ∣ e − ϵ m P(\text{版本空间未被} \epsilon \text{耗尽}) < |H|e^{-\epsilon m} P(版本空间未被ϵ耗尽)<∣H∣e−ϵm

  • ∣ H ∣ |H| ∣H∣:模型数量(复杂度)

  • e − ε m e^{-\varepsilon m} e−εm: 一个"坏模型"恰好在 m 个样本上都没被戳穿的概率

    "在所有 m 个样本上都没被戳穿": Pr ⁡ ( 全部分对 ) ≤ ( 1 − ε ) m \Pr(\text{全部分对}) \le (1-\varepsilon)^m Pr(全部分对)≤(1−ε)m

    对所有 0 < ε < 1 0<\varepsilon<1 0<ε<1,有 1 − ε ≤ e − ε 1-\varepsilon \le e^{-\varepsilon} 1−ε≤e−ε

    则 ( 1 − ε ) m ≤ ( e − ε ) m = e − ε m (1-\varepsilon)^m \le (e^{-\varepsilon})^m = e^{-\varepsilon m} (1−ε)m≤(e−ε)m=e−εm

  • 乘起来:"至少有一个坏模型混进版本空间"的上界

解出 m m m:
m ≥ 1 ε ( ln ⁡ ∣ H ∣ + ln ⁡ ( 1 / δ ) ) m \ge \frac{1}{\varepsilon} \big(\ln|H| + \ln(1/\delta)\big) m≥ε1(ln∣H∣+ln(1/δ))

  • 1 ε \frac{1}{\varepsilon} ε1:要求越精确 → 数据越多
  • ln ⁡ ∣ H ∣ \ln|H| ln∣H∣:模型越复杂 → 数据越多
  • ln ⁡ ( 1 / δ ) \ln(1/\delta) ln(1/δ):置信度越高 → 数据越多

定义:"存在一个训练全对、但泛化很差的模型"的概率
δ = P [ ∃ h ∈ H : e r r o r t r a i n ( h ) = 0 且 e r r o r t r u e ( h ) > ε ] \delta = P[\exists h\in H: error_{train}(h)=0\ \text{且}\ error_{true}(h)>\varepsilon] δ=P[∃h∈H:errortrain(h)=0 且 errortrue(h)>ε]

目标就是让这种事几乎不发生 -> 让 δ \delta δ足够小

结论

只要模型复杂度受控、数据足够多、并且算法能拟合训练集,那么"训练全对"就意味着"泛化也大概率不错"

不可知学习agnostic learning

为什么要引入「不可知学习」

PAC(consistent / realizable case)的核心前提 是:真实世界的规律 c c c 就在假设空间 H H H 里

而在真实机器学习中,几乎总是:

  • 模型是近似的
  • 特征不完备
  • 假设空间受限

于是:真实目标函数 c c c 根本不在 H H H 里

这时:

  • 不存在"训练误差 = 0"的好模型
  • 版本空间可能是空的
  • 一致性学习直接失效

-> 这就是不可知学习(agnostic learning)出现的原因

学习类型 核心假设 学习目标 ε的含义
PAC学习(可实现学习) 真实模型 c ∈ H c ∈ H c∈H(假设空间包含完美真理) 找到训练误差为0的假设 真实错误率的上界(保证学到的模型错误率<ε)
不可知学习 真实模型 c ∉ H c ∉ H c∈/H(假设空间不包含完美真理) 找到训练误差最小的假设 训练错误率与真实错误率的差距
ε 的含义

ε:训练误差与真实误差之间的偏差容忍
e r r o r t r u e ( h ) ≤ e r r o r t r a i n ( h ) + ε error_{true}(h) \le error_{train}(h) + \varepsilon errortrue(h)≤errortrain(h)+ε

霍夫丁不等式 (不可知学习的基础)

固定一个假设 h h h,考虑随机变量:
Z = { 1 , h ( x ) ≠ c ( x ) 0 , h ( x ) = c ( x ) Z = \begin{cases} 1, & h(x)\neq c(x) \\ 0, & h(x)=c(x) \end{cases} Z={1,0,h(x)=c(x)h(x)=c(x)

  • Z Z Z 是 伯努利随机变量
  • E [ Z ] = θ = e r r o r t r u e ( h ) \mathbb{E}[Z] = \theta = error_{true}(h) E[Z]=θ=errortrue(h)

训练集上:
θ ^ = 1 m ∑ i = 1 m Z i = e r r o r t r a i n ( h ) \hat{\theta} = \frac{1}{m}\sum_{i=1}^m Z_i = error_{train}(h) θ^=m1i=1∑mZi=errortrain(h)

完全等价于:

抛一枚正面概率为 θ \theta θ 的硬币,抛 m m m 次,观察正面频率 θ ^ \hat{\theta} θ^

霍夫丁不等式:
真实错误率显著大于你在训练集上看到的错误率
Pr ⁡ [ θ > θ ^ + ε ] ≤ e − 2 m ε 2 \Pr[\theta > \hat{\theta} + \varepsilon] \le e^{-2m\varepsilon^2} Pr[θ>θ^+ε]≤e−2mε2

这件事发生的概率,会随着样本数 m m m 指数级下降

所以:数据越多, 训练误差就越"可信"

从「单个模型」到「整个假设空间」

霍夫丁不等式只保证:对某一个固定的 h h h,训练误差 ≈ 真实误差

但算法是:在 HHH 里选训练误差最小的那个

泛化误差界

联合界 - 概率论中的基本事实:

P ( ⋃ i A i ) ≤ ∑ i P ( A i ) P\left(\bigcup_i A_i\right) \le \sum_i P(A_i) P(i⋃Ai)≤i∑P(Ai)

-> "至少存在一个坏模型"的概率 ≤ 所有模型"各自出问题"的概率之和

泛化误差界:

Pr ⁡ [ ∃ h ∈ H : e r r o r t r u e ( h ) > e r r o r t r a i n ( h ) + ε ] ≤ ∣ H ∣ e − 2 m ε 2 \Pr[\exists h\in H: error_{true}(h) > error_{train}(h) + \varepsilon] \le |H|e^{-2m\varepsilon^2} Pr[∃h∈H:errortrue(h)>errortrain(h)+ε]≤∣H∣e−2mε2

等价于说:只要数据足够多,几乎所有模型的训练误差都不会严重低估真实误差

整理得到:
e r r o r t r u e ( h ) ≤ e r r o r t r a i n ( h ) + ln ⁡ ∣ H ∣ + ln ⁡ ( 1 / δ ) 2 m ( ∀ h ∈ H ) error_{true}(h) \le error_{train}(h) + \sqrt{ \frac{\ln|H| + \ln(1/\delta)}{2m} } \quad (\forall h\in H) errortrue(h)≤errortrain(h)+2mln∣H∣+ln(1/δ) (∀h∈H)

  • 第一项:模型在训练集上的表现
  • 第二项:模型复杂度惩罚 + 数据不足惩罚

也是**结构风险最小化(SRM)**的理论原型

为什么会出现 2 ε 2\varepsilon 2ε

h h h:训练误差最小的模型(算法选的)

h ∗ h^* h∗:真实误差最小的模型(理论最优)

对任意模型都成立:
e r r o r t r u e ( h ) ≤ e r r o r t r a i n ( h ) + ε e r r o r t r u e ( h ∗ ) ≥ e r r o r t r a i n ( h ∗ ) − ε error_{true}(h) \le error_{train}(h) + \varepsilon \\ error_{true}(h^*) \ge error_{train}(h^*) - \varepsilon errortrue(h)≤errortrain(h)+εerrortrue(h∗)≥errortrain(h∗)−ε

又因为算法选择了训练误差最小的:

e r r o r t r a i n ( h ) ≤ e r r o r t r a i n ( h ∗ ) error_{train}(h) \le error_{train}(h^*) errortrain(h)≤errortrain(h∗)

合起来:

e r r o r t r u e ( h ) ≤ e r r o r t r u e ( h ∗ ) + 2 ε error_{true}(h) \le error_{true}(h^*) + 2\varepsilon errortrue(h)≤errortrue(h∗)+2ε

-> 即使世界上不存在完美模型, 我们学到的模型也不会比"理论最优模型"差太多

VC维

VC维是无限假设空间 H H H的复杂度衡量
是最坏情形下, 模型的记忆能力上限

为什么需要 VC 维

以下问题中, H H H 通常是 无限的

  • 神经网络
  • 线性分类器
  • 多项式模型

-> 那么 ∣ H ∣ |H| ∣H∣ 没法用了

VC 维不再问:

❌ 有多少个假设?

而是问:

在最坏情况下,你能"随意解释"多少个样本?

二分法 + 打散

VC 维衡量的是:在最坏情况下,假设空间 H H H 能够对多少个样本点实现"任意标记"的能力

给定数据集的 n n n 个点, 对于所有 2 n 2^n 2n 种标记方式, 如果 H H H 全都能实现

-> 数据集的 n n n 个点被 H H H 打散

如果模型仍能做到:对这 2 n 2^n 2n 种情况 全部零误差

那说明模型可以完美记忆噪声

-> 打散 ≡ 对纯噪声数据也能 0 训练误差

V C ( H ) VC(H) VC(H)

V C ( H ) VC(H) VC(H):能被 H H H 打散的最大实例集大小

-> V C ( H ) VC(H) VC(H) = 模型在最坏情况下"可以记住多少个样本点"的上限

VC维与模型复杂度的关系
  • VC维越高 → 模型拟合能力越强、复杂度越高(如高次多项式>直线)
  • VC维越低 → 模型越简单、拟合能力越弱

二维平面上线性分类器的 VC 维是 3
V C ( H ) = 3 VC(H)=3 VC(H)=3 -> 最多区分3个数据点

-> 线性模型不可能无限度拟合噪声(这就是它能泛化的根本原因)

VC维将无限假设空间的复杂度量化,使得统计学习理论可应用于复杂模型(支持向量机、神经网络等)

所需最小数据量为:
m ⩾ 1 ϵ ( 4 log ⁡ 2 ( 2 / δ ) + 8 ⋅ V C ( H ) ⋅ log ⁡ 2 ( 13 / ϵ ) ) m \geqslant \frac{1}{\epsilon} (4\log_2(2/\delta) + 8 \cdot VC(H) \cdot \log_2(13/\epsilon)) m⩾ϵ1(4log2(2/δ)+8⋅VC(H)⋅log2(13/ϵ))

本质结构是:
m    ∼    1 ϵ ( log ⁡ 1 δ ⏟ 失败概率 + V C ( H ) ⏟ 模型自由度 ⋅ log ⁡ 1 ϵ ⏟ 精度要求 ) m \;\sim\; \frac{1}{\epsilon} \Big( \underbrace{\log \frac{1}{\delta}}{\text{失败概率}} + \underbrace{VC(H)}{\text{模型自由度}} \cdot \underbrace{\log \frac{1}{\epsilon}}_{\text{精度要求}} \Big) m∼ϵ1(失败概率 logδ1+模型自由度 VC(H)⋅精度要求 logϵ1)

VC 维把整套理论"救活了"

有了 VC 维:

  • 无限假设空间也能谈样本复杂度
  • 泛化误差界仍然成立
  • 深度模型不再"理论不可分析"

总结

可实现学习:

-> 数据足够多 ⇒ "训练全对" ≈ "真实也好"

不可知学习:

-> 数据足够多 ⇒ "训练好" ≈ "真实不会太差"

VC 维:

-> 告诉你"模型有多容易骗你"

相关推荐
咕噜企业分发小米8 小时前
阿里云与华为云AI教育产品有哪些未来发展规划?
人工智能·阿里云·华为云
五度易链-区域产业数字化管理平台8 小时前
五度易链「生物医药智能决策系统」(AI智能体)上线啦
大数据·人工智能
寂寞恋上夜8 小时前
字段校验规则清单:必填/范围/唯一/组合唯一/正则(附校验表)
人工智能·prompt·测试用例·markdown转xmind·deepseek思维导图
BitaHub20248 小时前
Google 开源 A2UI 协议:让 AI Agent 告别“纯文字对话”,开启原生交互新时代
人工智能
ekkoalex8 小时前
Qwen3-vl使用到的Timemaker方法
人工智能
小李子呢02118 小时前
Javascript学习(六)--Web APIs(日期对象,节点操作,M端事件,JS插件,综合案例)
开发语言·前端·javascript·学习
低调小一8 小时前
Google A2UI 入门:让 Agent “说 UI”,用声明式 JSON 安全渲染到原生界面
人工智能·安全·ui·json
德彪稳坐倒骑驴8 小时前
集成学习Ensemble Learning
人工智能·机器学习·集成学习
阿里巴巴P8资深技术专家8 小时前
2025 年度总结:在坚持与突破中前行
java·vue.js·人工智能·年终总结·2025
冬奇Lab8 小时前
【Cursor进阶实战·04】工作流革命:从“手动驾驶“到“自动驾驶“
人工智能·ai·ai编程