您的位置:首页 > 其它

机器学习的VC维度(机器学习基石)

2018-01-31 12:27 453 查看

一个小问题引出的大思考

我们首先玩一个简单的找规律游戏

2 , 4 ......

请问第三个数是多少,6?    8?     5?又或者是其它。假如我是一个命题人你的回答可能都对又可能都错。因为满足这样的规律事实上是有无穷个而不能想当然。看来机器学习在这个小的数据集上面跑是无法学到东西,无法做出预测的。就算是这道题的包装也可能只是规律更加复杂了,这样的题严格的来说是没有答案或者有无数答案。

借助自然界的力量

自然界中老是潜藏着一些规律,我们在一个装有黑白两种颜色的罐子中随机抓一把出来。我们手中的黑白的比例大概差不多就是罐子中所有的黑白的球的比例,而且我们抓的资料越多比例就会越接近,这也是大数定理的一个很好的体现。而数学家Hoffding将这个过程进行了量化的处理得出了Hoffding`s  Inequality (霍夫丁不等式)。



在这个式子中v是样本的各个球的比例μ是总体球的比例他们之间的差距会随着右边的数据量N的变大而缩小。(ε为容错量它是一个常数)这个式子直观的说明在数据量足够的情况下我们样本中的分布与整体上数据的分布式大概差不多是相等的(及著名的Probably  Approximately  Correct  大概差不多是对的)。这是所有机器学习的基本保障。

与机器学习的联系

假设我们的理想模型是f(x)它产生了所有的数据,我们对于现象的假设为h(x)。

我们在我们的样本(独立随机抽样以保证样本与总体数据的分布统一)中给小球进行着色,着色的规则是对于某一个小球,h(x)在该小球上的预测与f(x)预测的相同时图成绿色否则图成橘色。这样一来橘色的比例就是我们的模型h(x)在样本上犯错误的比例我们称之为Ein,而在h(x)在总体数据集上所犯的错误是Eout,霍夫丁不等式告诉我们如下的规则



在数据量的保障下与随机独立抽样的条件下,我们的h(x)在样本上的错误率大概差不多等于在总体数据上的错误率。及Ein
≈Eout
。看来我们能够评判一个模型的好坏。

自由选择的代价

在上面的论述中我们做的是对一个给定的模型我们检测它的表现如何。而真正的机器学习不是单看一个模型的好坏而是要选择一个尽可能最优的结果。所以我们要加上选择的过程让学习算法去选择更好的h(x)吧。

什么是坏的资料?

在机器学习中我们把与总体数据的分布不同的样本称之为坏的资料。假如说我们有一个模型很顺应这个坏的资料(在坏的资料上的Ein
0),殊不知自己只是在样本上做的不错而与实际的总体数据格格不入这样的模型我们就称之为坏的模型。但是这些坏的资料会干扰我们的选择,会让我们有很大的几率选择到坏的模型看样子我们的学习遇到了困难。

如何避免坏的资料

但从直觉上来说,一笔坏的资料对于任何一个h(x)来说都是一件坏的事情。也就是说如果一个h(x)遇到坏资料的概率是Pd则m个h(x)遇到的坏资料的概率就是m*Pd。霍夫丁不等式的保证如下:



很显然我们可以通过提高我们的数据量来降低我们遇到坏资料的概率。在数据量的保证下看样子我们能够学到东西。

危机再现无限多个h(x)的困境

在实务上我们的h(x)是有无限多种选择的就像是一个线性二分的例子中能存在的超平面有无限多个,所以看起来我们的资料量在大也无济于事。

无限多个h(x)的条件下ML可行性的证明

首先我们再次明确目的Eout[b]≈[/b]Ein
≈0


[b]Ein
≈ 0
,[/b]由学习算法来保障,
2a427
Eout[b]≈[/b]Ein需要的是样本与总体数据的分布相同(也就是避免坏的资料)与霍夫丁不等式。

我们接下来讨论的就是如何避免坏的资料。

首先我们再次回到我们含有的坏资料的霍夫丁不等式中






我们会发现我们唯一能够降低右边式子的值的方法(在容错度ε不变的情况下)就是让后面的指数函数的下降幅度大于M的值(在N趋于大数的时候)也就是说如果现实中M能够用一个多项式的函数表达我们就能够通过增大N来避免坏的资料。

真正的M

在实务上M的个数并没有我们想象的那么多有无限个,就像是我们要将一堆资料线性二分我们会发现有很多线(或者超平面)都很相似甚至可以互相替代。我们就会选取其中的有代表性的一条作为我们的有效h(x)。而有效的h(x)正是实际当中发挥功效的h(x),所以我们想要的其实并不是M而是有效的h(x)数Mh。

[b]Mh的大小[/b]

我们在一些线性二分的模型中找到了一些Mh(具体的模型需要查阅相关资料)

[b][b]

[/b]
[/b]

显然在1,2两个模型中我们能够进行学习(Mh为多项式),第三个不行(因为是指数次的Mh)而第四个是否可以呢?使我们下来讨论的对象。

我们首先介绍2D的perceptrons他是在一个平面上二分所有点的模型下图为分割三个点的所有情况:



但是上个式子说明它的有效模型数小于2ⁿ次,直观的来说我们可以从以下的图中看出来:



这张图只取了(对称的)一半,我们可以看出(3,2)这张图是无论如何使无法用一条线分割开来的。也就是说总的次数为16先在成了14!在机器学习中我们把这样恰好不能被模型完全分割的点叫做breakpiont在2D的perceptrons中的breakpiont就是第4个点。

breakpiont与Mh的关系

我们先设一个Mh的上限函数B(N,K),解释为在N个点与第K个点为breakpiont的时候Mh的上限,通过归纳法与数学上的推导我们得到了以下的结论与表格:



这说明了一个模型在有breakpoint的情况下Mh会被限制MhMh<=B(N,K)<=N^(K-1),也就是MhMh小于一个多项式在N增大的过程中MhMh<<2ⁿ。我们能够学习了!

VC维度的提出

在实务上我们并不能获取Eout所以我们用Ein`来代替(因为霍夫丁不等式告诉我们在数据量的保障下Ein`[b][b]≈[/b]Eout[/b])但是数学上的霍夫丁不等式更加严格。最后得到



不等式右面的多项式就称为VC上限(Vnpnic-Chervorewkos
Bound)。而breakpoint点的前一个点的序号对应的维度就称为VC维度(通常写为dvc)如2D的perceptrons的dvc==3。

VC维度的意义

1.VC维度可以代表假设集合的复杂程度,这也是我们引出VC维度的初衷(我们试图解决h(x)集合太大给我们带来的坏资料的问题)。VC维度越大,一个假设集合大小的上限函数就会增加假设集合的复杂程度会增大。

2.VC维度还可以代表假设本身的复杂性,简单的例子就是我们的VC维度越高如2D的perceptrons的dvc==3而假设我们将VC维度上调为4的时候我们就能得到4个点的完全二分的集合。我们能够做出更为复杂的分割动作,也就是我们的单个模型拥有更为强大的分割能力!

综上所述我们的假设集合与单个假设的复杂度都会随着VC维度的增加而增加从而变得更加的强大。

强大的不一定是好的

我们将以上含有VC维度的霍夫丁不等式中的各个变量进行整合会得到以下的结论与曲线:



其中Ω代表我们的模型复杂度。看图我们会发现:随着VC维度的增大Ein会变得低但是ΩΩ会变得高,随着VC维度的降低Ein会变高而Ω会变得低。围绕我们的目标Eout≈Ein
≈0我们会发现我们要的最优解并不是VC维度很高的时候,而是某一个中间的地方。


VC维度在实际中的保障

在实务上我们想要训练出一个不错的模型,在理论上我们需要10000*dvc笔资料,但是经验告诉我们只需要10*dvc笔资料我们就会得到不错的结果。核心的原因就是VC上限是一个非常宽松的上限。具体体现在如下4个方面:

1.霍夫丁不等式无需关注总体数据的分布。

2.我们在实务上需要的是有效的h(x)而非所有的h(x)。

3.在有限的VC维度下我们有效的h(x)个数会被一个多项式所限制住N^dvc(事实上是上限的上限)。

4.在多个h(x)的情况下,我们遇到坏的资料的概率并非是累加的而是重叠的。

最后再次感谢台湾大学林轩田老师,特地附上主流机器学习教程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息