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

个人导航

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

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

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

参考文章:各方资料

概率近似正确PAC

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

概率意义上的理论保证

ε \varepsilon ε:约束的是 模型本身的错误率
-> 控制“模型有多好”

δ \delta δ:约束的是 学习过程失败的概率
-> 控制“你对这个好结果有多大的把握”

1.近似正确AC

对任一假设 h ∈ H h \in \mathcal{H} hH,定义其泛化误差(真实错误率):
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)=PxD[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% 的样本被分错

2.概率正确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 PSDm(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) xP(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 的那个”

1.训练错误率 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)=xDPr[h(x)=c(x)]

  • 可计算
  • 可被算法直接优化
  • 很容易被压到 0
2.真实错误率 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)=xP(X)Pr[h(x)=c(x)]

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

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) 很大

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

4.为什么要“泛化能力”

学习的目标:

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

如果某个假设 h h h 在训练集上 一个都没错,则称 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

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

所有能把训练集全分对的模型h的集合
V S H , D = { h ∈ H ∣ h  在训练集  D  上无错误 } VS_{H,D} = \{h \in H \mid h \text{ 在训练集 } D \text{ 上无错误}\} VSH,D={hHh 在训练集 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 hVSH,D,errortrue(h)<ε
Haussler 定理:
P ( 版本空间未被 ϵ 耗尽 ) < ∣ H ∣ e − ϵ m P(\text{版本空间未被} \epsilon \text{耗尽}) < |H|e^{-\epsilon m} P(版本空间未被ϵ耗尽)<Heϵ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(lnH+ln(1/δ))

  • 1 ε \frac{1}{\varepsilon} ε1:要求越精确 → 数据越多
  • ln ⁡ ∣ H ∣ \ln|H| lnH:模型越复杂 → 数据越多
  • 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[hH:errortrain(h)=0  errortrue(h)>ε]
目标就是让这种事几乎不发生 -> 让 δ \delta δ足够小

结论

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

不可知学习 agnostic learning

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

PAC的核心前提是:真实世界的规律 c c c 就在假设空间 H H H

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

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

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

这时:

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

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

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

ε:训练误差与真实误差之间的偏差容忍
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)+ε

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

固定一个假设 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=1mZi=errortrain(h)

完全等价于:

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

霍夫丁不等式:
真实错误率显著大于你在训练集上看到的错误率
Pr ⁡ [ θ > θ ^ + ε ] ≤ e − 2 m ε 2 \Pr[\theta > \hat{\theta} + \varepsilon] \le e^{-2m\varepsilon^2} Pr[θ>θ^+ε]e2mε2
这件事发生的概率,会随着样本数 m m m 指数级下降

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

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

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

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

5.泛化误差界

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

P ( ⋃ i A i ) ≤ ∑ i P ( A i ) P\left(\bigcup_i A_i\right) \le \sum_i P(A_i) P(iAi)iP(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[hH:errortrue(h)>errortrain(h)+ε]He2mε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)+2mlnH+ln(1/δ) (hH)

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

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

5.为什么会出现 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的复杂度衡量
是最坏情形下, 模型的记忆能力上限

1.为什么需要 VC 维

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

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

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

VC 维不再问:

❌ 有多少个假设?

而是问:

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

2.二分法 + 打散

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 训练误差

3. V C ( H ) VC(H) VC(H)

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

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

4.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/δ)+8VC(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)

5.VC 维把整套理论“救活了”

有了 VC 维:

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

总结

可实现学习:
-> 数据足够多 ⇒ “训练全对” ≈ “真实也好”

不可知学习:
-> 数据足够多 ⇒ “训练好” ≈ “真实不会太差”

更多推荐