02-05(选修)谈谈机器学习的原理
- 总结
- 引例 - 宝可梦/数码宝贝 分类器
- 如何找到一个合适的函数?- 领域知识
- 如何定义损失函数?- 经验
- 训练 - 目的:得到最好的模型参数
- 如何衡量现实损失和理想损失接近程度?- L ( h t r a i n , D a l l ) − L ( h a l l , D a l l ) ≤ σ L(h^{train}, D_{all}) - L(h^{all}, D_{all}) \le \sigma L(htrain,Dall)−L(hall,Dall)≤σ
- 如何才能使现实损失和理想损失接近?- 只要取样数据集跟总样本数据集很像
- 如何得到跟含所有样本数据集很像的取样数据集?- ∀ h ∈ H , ∣ L ( h , D a l l ) − L ( h , D a l l ) ∣ ≤ σ / 2 \forall h\in \mathcal H, |L(h, D_{all}) - L(h, D_{all})| \le \sigma/2 ∀h∈H,∣L(h,Dall)−L(h,Dall)∣≤σ/2
- 取样得到坏的数据集的概率多大?- 上界 ∑ h ∈ H P \sum_{h\in\mathcal H} P ∑h∈HP(D t r a i n _{train} train is bad due to h)
- 如何减小取样坏样本集的概率?- 增大样本集&减小参数可能值个数
- 为什么实际情况中都是增大样本集使得理想和现实损失值接近,而不是减小 H \mathcal H H?- 减小 H \mathcal H H会导致找不到最佳参数
- 有没有办法使得现实的损失值小并且理想与现实的损失值差距也小?- 有,深度学习。
- 深度学习如何做到现实的损失值小并且理想与现实的损失值差距也小?-【待补充】
总结
本节讨论话题:为什么参数越多越容易过拟合?
因为模型参数越多,即 ∣ H ∣ |\mathcal H| ∣H∣很大,现实的损失值小,理想与现实的损失值差距大。
引例 - 宝可梦/数码宝贝 分类器
例子:对宝可梦和数码宝贝进行分类。(每一只宝可梦都对应一种相似的数码宝贝,例如小火龙和亚古兽)
如何找到一个合适的函数?- 领域知识
确定一个参数未知的函数,需要建立在领域知识的基础上。先对资料进行观察。
经过对样本的观察发现:数码宝贝线条复杂,宝可梦线条简单。
因此,考虑可以根据线条的复杂程度判断一只动物是宝可梦还是数码宝贝。
设计一个 edge detection 函数记为 e ,可以提取动物的线条,并计算出线条的数量。
由此,可确定出一个含未知参数的函数 f h f_h fh,其中参数h未知。h可能值的数目称为模型的复杂度。
如何定义损失函数?- 经验
参考:分类与回归问题中的损失函数——交叉熵、L1、L2、smooth L1损失函数及python实现 - 默里的文章 - 知乎
如何得到函数的损失值?- 训练集
从所有h的可能值中,选择一个值,使用训练集数据进行训练,每个样本的损失值 l l l进行平均,得到该h值对应的整个资料集的损失 L L L。
l l l 可以使用 cross-entorpy 定义,也可以使用是否等于标签值进行定义,后面的讲解与损失函数的定义无关,所以使用简单直观的后者作为损失函数进行讲解。
训练 - 目的:得到最好的模型参数
如果可以收集到所有的宝可梦和数码宝贝数据,那么可以得出最好的模型参数。
但是,现实问题中,大多数问题只能收集到一部分样本(取样),并不能找到所有的样本数据。取样的要求:独立同分布(independently and identically distribution,i.i.d.)
如何衡量现实损失和理想损失接近程度?- L ( h t r a i n , D a l l ) − L ( h a l l , D a l l ) ≤ σ L(h^{train}, D_{all}) - L(h^{all}, D_{all}) \le \sigma L(htrain,Dall)−L(hall,Dall)≤σ
期望:现实损失和理想损失接近。
如何才能使现实损失和理想损失接近?- 只要取样数据集跟总样本数据集很像
接下来讨论问题:现实版的最佳参数和理想中的最佳参数差异多大?
如上图所示,假设现在找到的数据集就是所有样本的数据集(现实中不可能),宝可梦819,数码宝贝971,训练得到最好的模型参数 h a l l h^{all} hall为 4824 对应损失值为0.28。
从该数据集中取样200个宝可梦和数码宝贝,训练得到最好的模型参数 h t r a i n 1 h^{train1} htrain1为 4727 损失值为0.27。但是,将 h t r a i n 1 h^{train1} htrain1代入到所有样本集,得到损失值为0.28,跟 h a l l h^{all} hall对应得到损失值的一样。
为什么 L ( h t r a i n , D t r a i n ) < L ( h a l l , D a l l ) L(h^{train}, D_{train}) \lt L(h^{all}, D_{all}) L(htrain,Dtrain)<L(hall,Dall) ?
这种情况很正常,例如,只取样两个样本,肯定能找到一个最佳参数将这两个样本分开,损失值为0,一定比在所有数据集上计算出的损失值小。
从该数据集中重新取样200个宝可梦和数码宝贝,训练得到最好的模型参数 h t r a i n 2 h^{train2} htrain2为 3642 损失值为0.20。但是,将 h t r a i n 1 h^{train1} htrain1代入到所有样本集,得到损失值为0.37,大于 h a l l h^{all} hall对应得到损失值0.28。
为什么 L ( h t r a i n , D a l l ) L(h^{train}, D_{all}) L(htrain,Dall)一定大于等于 L ( h a l l , D a l l ) L(h^{all}, D_{all}) L(hall,Dall) ?
因为在 D a l l D_{all} Dall上找到的 h a l l h_{all} hall一定是 D a l l D_{all} Dall对应的最好的参数。
结论:只要取样的数据集跟含所有样本的数据集很像,那么 L ( h t r a i n , D a l l ) L(h^{train}, D_{all}) L(htrain,Dall) 一定会接近 L ( h a l l , D a l l ) L(h^{all}, D_{all}) L(hall,Dall)。
如何得到跟含所有样本数据集很像的取样数据集?- ∀ h ∈ H , ∣ L ( h , D a l l ) − L ( h , D a l l ) ∣ ≤ σ / 2 \forall h\in \mathcal H, |L(h, D_{all}) - L(h, D_{all})| \le \sigma/2 ∀h∈H,∣L(h,Dall)−L(h,Dall)∣≤σ/2
接下来讨论的问题:如何得到跟含所有样本数据集很像的取样数据集?
只要满足②,就会得到一个跟含所有样本数据集很像的取样数据集,就一定满足①(即:达到目的:理想和现实的损失值接近)。
取样得到坏的数据集的概率多大?- 上界 ∑ h ∈ H P \sum_{h\in\mathcal H} P ∑h∈HP(D t r a i n _{train} train is bad due to h)
接下来讨论的问题:取样得到坏的数据集的概率多大?
说明:① 以下的讨论与模型没有关系,适用于深度学习或其他模型;② 以下的讨论没有对数据假设任何的数据分布;③ 以下的讨论与损失函数无关,适用于任何损失函数,因为分类和回归只是损失函数不同,所以以下讨论同时适用于分类和回归。
如图所示,一个点代表一组样本,蓝色点代表好的训练样本集,黄色点代表坏的训练样本集。
枚举所有样本集,计算是否是坏样本集,比较繁琐,所以使用如下方法,给定参数 h ,计算哪些样本集是坏样本集,并求出这些样本集占总样本集的概率。
求并集一定不会大于1,但是求和可能大于1,通常求和算出的P的上界都远远大于1,这时该理论无效。
上图中,使用的是霍夫丁不等式。
参考:霍夫丁不等式(Hoeffding’s inequality) - Pikachu5808的文章 - 知乎
如何减小取样坏样本集的概率?- 增大样本集&减小参数可能值个数
如上图所示,坏样本集的概率大小为 ∣ H ∣ ⋅ 2 e − 2 N ε 2 |\mathcal H|·2e^{-2N\varepsilon^2} ∣H∣⋅2e−2Nε2。如果要使得坏样本集的概率变小,有两种办法:一是增大样本集样本个数N;二是减小 h 可能值的个数。
实际使用中,计算出的坏数据集的概率的上界往往大于1,该理论没有什么用。
可以通过公式,计算出训练集中样本个数的下限N。
问题: H \mathcal H H 是否是连续的?
如果 H \mathcal H H是连续的,那么 H \mathcal H H就是无穷大, ∣ H ∣ ⋅ 2 e − 2 N ε 2 |\mathcal H|·2e^{-2N\varepsilon^2} ∣H∣⋅2e−2Nε2 也是无穷大,这个不等式将失去存在的意义。
解释一:计算机中没有绝对连续的数据。
解释二:vc-dimension(描述模型复杂程度的指标),即使
H
\mathcal H
H 是连续的,那么
H
\mathcal H
H不一定是无穷大,还是有办法估计。
为什么实际情况中都是增大样本集使得理想和现实损失值接近,而不是减小 H \mathcal H H?- 减小 H \mathcal H H会导致找不到最佳参数
因为减小
H
\mathcal H
H会导致 h 可能选择的值很少,进而导致在总样本中选择不出使损失值很小的
h
a
l
l
h_{all}
hall,理想崩坏。
想要理想与现实接近,需要满足两个条件:① Larger N 大样本集;② smaller ∣ H ∣ |\mathcal H| ∣H∣ 参数可选值少。
∣
H
∣
|\mathcal H|
∣H∣很小时,理想的损失值大,理想与现实的损失值差距小。
∣
H
∣
|\mathcal H|
∣H∣很大时,理想的损失值小,理想与现实的损失值差距大。