上一篇讲到了VC Dimension以及VC Bound。
VC Bound所描述的是在给定数据量N以及给定的Hypothesis
Set的条件下,遇到坏事情的概率的上界,即E_in与E_out差很远的概率,最多是多少。
VC Bound用公式表示就是:
其中 mH(N) 为Hypothesis Set的成长函数,有:
因为寻找所有Hypothesis Set的成长函数是困难的,因此我们再利用 Ndvc 来bound住所有VC Dimension为d_vc的Hypothesis Set的成长函数。所以对于任意一个从H中的g来说,有:
因此说想让机器真正学到东西,并且学得好,有三个条件:
- H的d_vc是有限的,这样VC Bound才存在。(good H)
- N足够大(对于特定的d_vc而言),这样才能保证上面不等式的bound不会太大。(good D)
- 算法A有办法在H中顺利地挑选一个使得E_in最小的方程g。(good A)
为什么要费那么大的力气来讲这个VC Bound和VC
Dimension呢?因为对于初学者来说,最常犯的错误就是只考虑到了第3点,而忽略掉了前两点,往往能在training
set上得到极好的表现,但是在test set中表现却很烂。关于算法的部分会在后续的笔记当中整理,目前我们只关心前面两点。
(这是重点!!!!)
几种Hypothesis Set的VC Dimension
对于以下几个H,由于之前我们已经知道了他们的成长函数(见机器学习笔记-VC Dimension, Part I),因此可以根据m_H(N)≤Nd_vc,直接得到他们的VC Dimension:
d_vc 看N的最高次项的次, d_vc = min k -1
positive rays: m_H(N)=N+1,知道d_vc=1
positive intervals:
m_(N)=12N2+12N+1
,d_vc=2
convex sets:
m_(N)=2N
,d_vc=∞
2D Perceptrons:
m_(N)≤N3forN≥2
,所以d_vc=3
由于convex sets的d_vc=∞,不满足上面所说的第1个条件,因此(很有可能)不能用convex sets这个
H
来学习。但这里要回归本意,通过成长函数来求得d_vc没有太大的意义,引入d_vc很大的一部分原因是,我们想要得到某个Hypothesis Set的成长函数是困难的,希望用
某个H的VC Dimension - 从”shatter”的角度
Homework当中的某题,求解简化版决策树的VC Dimension:
Consider the simplified decision trees hypothesis set on ℝd, which is given by
That is, each hypothesis makes a prediction by first using the d thresholds ti to locate x to be within one of the 2d hyper-rectangular regions, and looking up S to decide whether the region should be +1 or −1. What is the VC-dimension of the simplified decision trees hypothesis set?
如何去理解题意呢?用一个2维的图来帮助理解:
首先把二维实数空间 ℝ2 中的向量x,通过各个维度上的阈值t_i,转换到{0,1}2空间下的一个点v,规则为v_i=[x_i>t_i]。譬如对于t=[5,10],x=[6,8]可以转换为新的空间下的[1,0]。这样一来,原来的ℝ2空间就可以被划分为4个区块S_1~S_4(hyper-rectangular regions)。H中每一个方程h代表着一种对这4块区域是”圈圈“还是”叉叉“的决策(decision),并且这4块区域的决策是互相独立的,S_1的决策是”圈圈“还是”叉叉“和S_2,S_3,S_4都没有关系。
由于这4块区域的决策是互相独立的,那么它最多最多能shatter掉多少个点呢?4个,(当这4个点分别属于这4块区域的时候),即这4块hyper-rectangular regions所代表的类别可以是(o,o,o,o)、(o,o,o,x)、(o,o,x,o)、…、(x,x,x,x),共16种可能,因此它能够shatter掉4个点。
由上面2维的例子我们可以看出,simplified decision trees的VC Dimension,等于hyper-rectangular regions的个数。d维空间
ℝd
可以用d条直线切分出
2d
个互相独立的hyper-rectangular regions,即最多最多可以shatter掉
2d
个点,因此simplified decision trees的
dvc=2d
。
我们再来回顾一下Positive Intervals:
也可以按照上面的方法去理解,Positive Intervals有两个thresholds,把直线切分为3块空间。但这3块空间并不是相互独立,中间的部分永远是+1,左右两边永远是-1,所以还要具体看它能够shatter掉多少个点,这里最多最多只能shatter掉2个点,它的d_vc=2。
某个H的VC Dimension - 从”自由度”的角度
对于d_vc较小的H,可以从它最多能够shatter的点的数量,得到d_vc,但对于一些较为复杂的模型,寻找能够shatter掉的点的数量,就不太容易了。此时我们可以通过模型的自由度,来近似的得到模型的d_vc。
维基百科上有不止一个关于自由度的定义,每种定义站在的角度不同。在这里,我们定义自由度是,模型当中可以自由变动的参数的个数,即我们的机器需要通过学习来决定模型参数的个数。
譬如:
- Positive Rays,需要确定1个threshold,这个threshold就是机器需要根据来确定的一个参数,则Positive Rays中自由的参数个数为1,
- Positive Intervals,需要确定左右2个thresholds,则可以由机器自由决定的参数的个数为2,d_vc=2
- d-D Perceptrons,d维的感知机,可以由机器通过学习自由决定的参数的个数为d+1(别忘了还有个w_0),d_vc=d+1
VC维就是做决定参数的个数。
多个H的并集的VC Dimension
Homework当中某题,求K个Hypothesis Set的并集
d_vc(∪_k=1K_k)
的VC Dimension的上下界。下界比较好判断,是
maxd_vc(_k)_k=1K
,即所有的H都包含于d_vc最大的那个H当中的时候。上界则出现在各个H互相都没有交集的时候,我们不妨先来看看K=2的情况:
求 d_vc(_1∪_2) 的上界,已知 d_vc(_1)=d_1 , d_vc(_2)=d_2 。
从成长函数上看,有
m__1∪_2(N)≤m__1(N)+m__2(N)
,把成长函数展开,有
用 (Ni)=(NN−i) 替换RHS,有
我们可以尝试寻找下上面这个成长函数有可能的最大的break point,让N不断增大,直到出现 m__1∪_2(N)<2N 的时候,这个N就是break point。那么N要多大才够呢?
N=d_1够大吗?不够,因为:
N=d_1+d_2+1够大吗?还是不够,因为:
N=d_1+d_2+2够大吗?够大了,因为:
所以 m__1∪_2(N) 的break point最大可以是d_1+d_2+2,此时 d_vc(_1∪_2)=d_1+d_2+1 。
因此两个的并集的VC Dimension的上界为 d_vc(_1)+d_vc(_2)+1 。利用此方法,就很容易可以推出K个的并集的情况。
简单 v.s 复杂
机器学习笔记-VC Dimension, Part I一开始就提到,learning的问题应该关注的两个最重要的问题是:1.能不能使E_in与E_out很接近,2.能不能使E_in足够小。
- 对于相同的D而言,d_vc小的模型,其VC Bound比较小,比较容易保证E_in与E_out很接近,但较难做到小的E_in,试想,对于2D Perceptron,如果规定它一定要过原点(d_vc=2),则它就比没有规定要过原点(d_vc=3)的直线更难实现小的E_in,因为可选的方程更少。2维平面的直线,就比双曲线(d_vc=6),更难实现小的E_in。
对于相同的而言,d_vc大的模型,比较容易实现小的E_in,但是其VC Bound就会很大,很难保证模型对之外的世界也能有同样强的预测能力。
令之前得到的VC Bound为δ,坏事情[|E_in(g)−E_out(g)|>ϵ]发生的概率小于δ,则好事情[|E_in(g)−E_out(g)|≤ϵ]发生的概率就大于1−δ,这个1−δ在统计学中又被称为置信度,或信心水准。
setδ 8Nln(4(2N)dvcδ)‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√=4(2N)dvcexp(−18ϵ2N)=ϵ
因此E_in、E_out又有下面的关系:
Ein(g)−8Nln(4(2N)dvcδ)‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√≤Eout(g)≤Ein(g)+8Nln(4(2N)dvcδ)‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√
令 Ω(N,,δ)=...‾‾‾√ ,即上式的根号项为来自模型复杂度的,模型越复杂,E_in与E_out离得越远。
随着d_vc的上升,E_in不断降低,而Ω项不断上升,他们的上升与下降的速度在每个阶段都是不同的,因此我们能够寻找一个二者兼顾的,比较合适的d_vc*,用来决定应该使用多复杂的模型。反过来,如果我们需要使用d_vc=3这种复杂程度的模型,并且想保证ϵ=0.1,置信度1−δ=90%,我们也可以通过VC Bound来求得大致需要的数据量N。通过简单的计算可以得到理论上,我们需要N≈10,000d_vc笔数据,但VC Bound事实上是一个极为宽松的bound,因为它对于任何演算法,任何分布的数据,任何目标函数f都成立,所以经验上,常常认为N≈10d_vc就可以有不错的结果。