关闭

台大机器学习基石笔记(四)——VC 维3

435人阅读 评论(0) 收藏 举报
分类:

上一篇讲到了VC Dimension以及VC Bound。

VC Bound所描述的是在给定数据量N以及给定的Hypothesis
Set的条件下,遇到坏事情的概率的上界,即E_in与E_out差很远的概率,最多是多少。

VC Bound用公式表示就是:

[BAD] =[h s.t. |Ein(h)Eout(h)|>ϵ]4m(2N)exp(18ϵ2N)

  其中mH(N)为Hypothesis Set的成长函数,有:
m(N)i=0dvc(Ni)Ndvc ( for N2,dvc2 )

  因为寻找所有Hypothesis Set的成长函数是困难的,因此我们再利用Ndvc来bound住所有VC Dimension为d_vc的Hypothesis Set的成长函数。所以对于任意一个从H中的g来说,有:
     [|Ein(g)Eout(g)>ϵ|][BAD]=[h s.t. |Ein(h)Eout(h)|>ϵ]4m(2N)exp(18ϵ2N)4(2N)dvcexp(18ϵ2N)( if dvc is finite )

  因此说想让机器真正学到东西,并且学得好,有三个条件:


  1. H的d_vc是有限的,这样VC Bound才存在。(good H)
  2. N足够大(对于特定的d_vc而言),这样才能保证上面不等式的bound不会太大。(good D)
  3. 算法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)N3forN2,所以d_vc=3
  由于convex sets的d_vc=∞,不满足上面所说的第1个条件,因此(很有可能)不能用convex sets这个H来学习。但这里要回归本意,通过成长函数来求得d_vc没有太大的意义,引入d_vc很大的一部分原因是,我们想要得到某个Hypothesis Set的成长函数是困难的,希望用Nd_vc来bound住对应的m_H(N)。对于陌生的H,如何求解它的d_vc呢?

某个H的VC Dimension - 从”shatter”的角度

  Homework当中的某题,求解简化版决策树的VC Dimension:

Consider the simplified decision trees hypothesis set on ℝd, which is given by

={ ht,S|ht,S=2[vS]1,where vi=[xi>ti],S is a collection of vectors in {0,1}d,td}

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_1d_vc(_2)=d_2

  从成长函数上看,有m__1_2(N)m__1(N)+m__2(N),把成长函数展开,有

m12(N)i=0d1(Ni)+i=0d2(Ni)

  用(Ni)=(NNi)替换RHS,有
m12(N)i=0d1(Ni)+i=0d2(NNi)i=0d1(Ni)+i=Nd2N(Ni)

  我们可以尝试寻找下上面这个成长函数有可能的最大的break point,让N不断增大,直到出现m__1_2(N)<2N的时候,这个N就是break point。那么N要多大才够呢?

  N=d_1够大吗?不够,因为:

i=0d1(Ni)+i=Nd2N(Ni)=2N+i=Nd2N(Ni)>2N

  N=d_1+d_2+1够大吗?还是不够,因为:
i=0d1(Ni)+i=Nd2N(Ni)=i=0d1(Ni)+i=d1+1N(Ni)=2N

  N=d_1+d_2+2够大吗?够大了,因为:
i=0d1(Ni)+i=Nd2N(Ni)=i=0d1(Ni)+i=d1+2N(Ni)=2N(Nd1+1)<2N

  所以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就可以有不错的结果。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11441次
    • 积分:237
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:5篇
    • 译文:1篇
    • 评论:0条
    文章分类