【机器学习基石】VC维的物理意义,深入了解VC dimension 7-3, 7-4

7-3 VC dimension 的物理意义

dVC = d+1, 那么 d+1是什么,d+1 就是perceptron的维度,VC dimension 跟 perceptron的dimension 就扯上关系了。或者进一步来说,我们可以看成,这些perceptron, 这些hypothesis,它是用这些w来表示,这些w是什么,W实际上代表了我们的hypothesis set里面的degrees of freedom (自由度)是多少。

hypothesis 有无限多个的意思是,这些旋钮每个都有无限多种可能性,你可以调整它们。

针对2D Perceptron,当它有VC dimension的时候,它代表的是有效的二元分类的自由度是多少。假如有一些旋钮根本是没有作用的,那它就不会被算到有效的里面去。

VC dimension的物理意义大致就是,在我要做二元分类的状况下,到底有多少的自由度。衡量这个自由度就能告诉我们这个hypothesis set 到底能产生多少的dichotomy。它的意义就是告诉我们这个hypothesis set 到底强不强,到底有多强。

之前我们在positive rays 的时候,就有一个旋钮,可以设置 a 的位置;在Positive Intervals的时候,就有两个旋钮可以设置,左边的位置、右边的位置。

VC dimension 的物理意义就是我们大致上有多少个可以调的旋钮。这件事大致上是对的,不是总是对的。如果你想估计VC dimension大概是多大的话,可以看看你有多少可以调的旋钮(不是总是对的)。

VC dimension 代表了 hypothesis 的自由度,之前我们说过,在learning 里面,有两个关键的问题:

① 一个是Ein 和Eout 是否足够接近;

② 第二个是Ein会不会够小。

那个时候我们用来衡量hypothesis 自由度的是 hypothesis 的数量 M,如果M不太大的话,对问题①来说是好的,因为这样坏事情发生的几率很小,代表大部分的时候Ein 和 Eout 都足够接近;但这样选择太少,你的演算法可能找不到一个能使Ein很小的 h。当M很大的时候,你可能能选到一个好的Ein,但是坏事情发生的几率变大了,Ein 和Eout 可能隔得很远。

现在我们有了VC dimension这个工具后,我们可以用它取代这个M,当dVC 很小,这对Ein 与Eout 大部分时间足够接近来说是件好事,但 Ein 可能没有办法做到很小,自由度受到了限制;如果dVC 很大,自由度很高,我们可能可以选到一个Ein 很小的 h,但没法保证Ein 和 Eout 大概率接近。

和M一样,dVC变成了一个重要的选择,我们在看一个learning model 的时候,看它的性质,这会告诉我们说,未来我们要怎么样用dVC或类似的信息,来选择根据已有资料所适合的learning model、hypothesis set来做到最好。


7-4 深入了解VC dimension

要了解VC dimension更深入的意义,我们先把VC bound 表达式重新写一下,原来的VC bound 式子说,坏事情发生的几率会很小很小。

我们把右边“很小很小”看作是 δ 的话,能不能描述出好事情发生的几率?坏事情发生的几率很小的另一个说法就是好事情发生的几率很大。

那么可以说,有很高的机会,generalization error (Ein和Eout的差距)会被限制在某个很小的值以内:

那么Eout 的信赖区间如下。左边的部分标灰因为我们不关心Eout 的下界,而关心Eout 的上界,最坏有多坏。

而右边这部分,根号里与N、H、δ 有关的东西通常被被称为模型复杂度 model complexity。这个model实际上指的是hypothesis set。可以说我的hypothesis set今天到底有多么地powerful 有力,但是我在generalization的时候要付出的代价就是这么多。一般用Ω(N,H,δ)来表示。N代表有多少个资料点,H是hypothesis set 的数量,相当于告诉你dVC 是多少,δ表示坏事发生的几率。

有很高的几率,Eout 比 Ein加上一个很小的值要小。我们可以做出下面这张图,横轴是dVC,纵轴是Error,红色的线代表model complexity,即Ω,蓝色的线代表 Ein, 紫色的线代表Eout。model complexity 随着dVC变大也会变大,这是我们已知的;Ein 随着dVC 变大的时候,通常Ein会变小,因为可以shatter的点就变多了,可能有更多中的排列组合,有更多的机会找到合理的learning algorithm,有机会找到更小的Ein。Ein 变小了,model complexity变大了,Eout 常常就会像下面画的这样形成一个山谷。一开始的时候,Eout会下降,但逐渐地,获得自由度的代价变大了,Eout上升了,这个时候就过拟合了。

所以要让learning做得更好,不是单纯使Ein降到最小就可以,而是权衡自由度带来的成本,找到良好的Ein 和所要付出的自由度的代价的折中。

VC bound 还有另外一个意思,那就sample complexity,样本的复杂度。想象你老板给你开出了一些规格:希望Ein 跟Eout 最多差0.1(ε),希望坏事情发生的机会(δ)最多是10%,给你一个learning model,假设它dVC 是 3,比如说2D perceptron, 然后问你到底要多少的资料才够?那我现在已经有dVC了,现在把数字代进去,看看今天是100笔资料的时候,我得到的上限是多少(δ),但刚开始发现资料量不够,上限很大,后来资料量很大的时候,上限终于变得很小,大概在29300的时候,可以达到老板的要求 δ为0.1左右。

如果真的计算的话,把不同的VC dimension 代进去,最后算出理论上差不多要1w倍 VC dimension 的资料量才能达标。不过有个好消息是,在实际的运用中,大概10倍VC dimension的资料量就足够获得较好的表现了。

这也就是说,其实目前我们求得的VC dimension其实是非常地宽松的,理论上我们求出的是1w倍,实际上表现良好的是10倍,这中间的差距就是它到底有多宽松。那这个宽松的空间来自哪里呢?例如:

① 我们使用了霍夫丁:霍夫丁确保我们不用知道分布P,也不用知道目标函数F,也就是任何的distribution,任何的target,都可以把它用这个bound 来圈住。也就是它非常地包山包海,包得非常地广。

② 我们并没有用hypothesis set产生的dichotomy的真正的数量,而是用成长函数来估计的数量,成长函数确保我们在做分析的时候可以使用任何的资料,而不是真正适合我们只抓在手上的当前的资料,从sample的distribution去看到底发生什么事情。成长函数可以看作是dichotomy数量的高估。

③ 我们用一个多项式来做上限的上限的上限,我们不是真的用成长函数,我们用上限的上限的上限,这样可以确保说,我们看一个hypothesis set,只要看一个数字就好,即看它的dVC,而不用看这个hypothesis set 所有的细节。但是这里要记得,成长函数说,如果今天是4个点的话,然后我们不能够shatter,最多是有15个。但是perceptron实际上有14个,如果再用N的多少次方的话,这边只会更宽松而已。

④ 我们使用了union bound,虽然我们尽量把重叠的地方处理得很好,但是我们使用union bound时考虑最差的状况,我们想象我们的演算法一定可能踩到雷,只要有雷它就可能踩到,而实际上可能没有那么容易踩到雷。

我们在VC bound上一路的推导都很宽松,导致了VC bound 很宽松。很多学者尝试缩小它,但要做到跟VC bound 一样的适用性,还是很难比VC bound做得更好。

你可能感兴趣的:(【机器学习基石】VC维的物理意义,深入了解VC dimension 7-3, 7-4)