在前一讲,我们用一个上限的上限来框住成长函数,说它最后一定不会很大。还记得上限的上限吗?指Generalization的时候,选成长函数用上限bounding function。求bounding function时,用的又是它的上限。其实,M的边界是非常宽松的。选假设个数时,就是选能做出dichotomy最多的,比如N=3时,有6种和8种,我们就选8种。
这是上讲求的成长函数:
可以看到,最高次幂是,我们对比下B(N,K)和
发现,B(N,K)比小很多,大概从N=2,K=3开始,就比
小很多。
所以,成长函数取上限的上限,
把上面的上限的上限代入Hoeffding’s Inequality,可以求得:
为什么是(2N)在上讲最后一个部分提到过。
可以看到,机器学习如果要可行,需要
1)要好的h。就是mH(N)是会被石头绊倒的,即会有break point。
2)数据D要够大
3)算法找的出g,使Ein很小。
重点:VC维度(VC Dimension)
VC维度(dvc)就是假设能够shatter数据的最大的N。什么意思?第六讲说到,数据总是挑战假设。数据给了4个点,假设最多只能做出14种dichotomy,然后假设输了。即不能shatter。VC维度就是数据给N个点,假设能做到shatter的最大N。
比如,N=3的时候:
左边,假设可以做出8种dichotomy;右边,假设可以做出6种。就说N=3时,假设可以shatter数据。而N=4,上面说到不能shatter。所以VC维度,dvc=3
dvc=’minimum k’ - 1,它就是数据D被绊倒之前的最大N。
当N≤ dvc时,h有可能shatter这N个点。为什么是“有可能”呢?因为,如上右图,如果是那样的分布,就做不出8种dichotomy。
当k > dvc时,k是break point。也就是说h不可能shatter这k个点。
我们在前面对比下B(N,K)和发现B(N,K)会被
框住,而dvc=’minimum k’ - 1
所以
看几个例子:
所以,如果要成长函数有限,只要看dvc是否有限就可以了。
如果dvc有限,这时选出的g,Ein和Eout一定很接近。这个结论与f长什么样无关,与概率分布p无关,也与算法A无关。它与数据D数量N有关,与h有关,且最后看是否g≈f。
上面说“如果dvc有限”,那么,它真的有限吗?
看那几个例子,好像dvc可以是有限,2D perceptron的dvc 就只有3。当然凸多边形的是无限的。我们暂且看N维空间的。
现在,问d维perceptron的dvc ?猜测是dvc =d+1
我们要证明,可以从两步入手:
dvc ≥ d + 1
dvc ≤d + 1
先证明dvc ≥ d + 1
只要证明N=d+1时,有一种点的分布可以被shatter就可以了。
让我们构造在d维空间的特定N=d+1个点,能被假设shatter
用下面这个矩阵来构造:
灰色的一列1是x0也就是阈值(threshold)
橙色的就是我们在d维空间分布的点。橙色的部分有d+1笔,第一笔全是0,就是原点。第二笔在第一个方向上有一个分量,其他都是0。第二笔就是在第二个方向上有一个分量,其他都是0。……这是一个可逆的矩阵。
看一个二维的例子:
我们很容易知道,这三个点是能被shatter的。
能shatter是什么意思?就是说有h能够把点都分到对的阵营。也就是:
其中一种情况就是,如果不用取正负号也能做到。
x是可逆的,y又是数据中给出的,所以,可以求出这样的w。也就有这样的h,可以shatter这个特殊的矩阵的d+1个点。我们只要找到一个能shatter的例子,就说明N=d+1是能够被shatter,所以dvc ≥ d + 1
接下去证明dvc ≤d + 1
要证明d维空间,N=d+2时,任何点的分布的情况都不能被shatter。
还记得2D中N=4时,最多只有14中dichotomy,即假设不能shatter。
我们可以很清楚看到不能做出dichotomy的那种了。
也就是给了三个点
“?”如果是x的话不行,那样的dichotomy没有办法产生。
从数学的角度分析:
四个点的矩阵是(就是前面的三个点加一笔资料):
所以,上面,已知的点是,x是x1(0,0),两个o是x2(1,0)和x3(0,1),“?”是x4(1,1)。
从上面矩阵中可以看出,有x4=x2+x3-x1(x1是x(-1),所以前面是-,另外两个是o是+的)。(个人认为,单纯从矩阵看好像是可以+x1,但是从图上看,我们在分“敌我”阵营,x1是会误导我们的,所以好像惩罚一样的,要把它减掉。)
左右同时乘也是正确的,
如果x2、x3是o,x1是x,所以和
是正的,
是负的。所以三项加起来的话,一定是正的。就是,如果把x4表示成其他三个向量的线性组合的形式,线性依赖的关系会限制产生dichotomy的数量。
这个例子还是特殊的,我们看一般情况:
不要忘记目的:要证明N=d+2时,任何点的分布的情况都不能被shatter。
所以,d+2笔资料列在一个矩阵中,row有d+2行,column有d+1列。行表示的是资料的数量d+2笔;列表示空间维度d维加原点(全0),所以是d+1。
这说明什么?学过线性代数的,都应该知道,如果向量的个数超过空间维度,就一定会存在线性相关。如上面所示,xd+2就可以表示成其他向量的线性组合。ai有的是正的,有的是负的,有的是0,但是不能全为0。
假设h可以shatter这些数据。即有一组W,这组W在前面d+1笔资料产生的情形,和ai的符号一样,如下图,a1是正的,x1在W产生的情形是正的;a2是负的,x2在W产生的情形是负的……那么是正的,a1
是正的;
是负的,a2
是正的……
所以xd+2一定是正的。
这里,好像有点糊涂。其实,意思就是说,因为有线性相关性,xd+2会由前d+1决定,如果前d+1决定xd+2是正的,那么它不可能取负的,这样xd+2为负的dichotomy不能做出来。
简单的例子,在前面的四个点已经说明了,x4已经被前三个决定必须是正的,所以不可能有2^4种dichotomy,也就不可能shatter。
综上:d维空间不可能shatter任何d+2个点。所以dvc ≤d + 1
因为
dvc ≥d + 1
dvc ≤d + 1
所以dvc =d + 1
我们之所以有不同的假设h,是因为参数不同,,这里说自由度就是说可以自由变换的变量个数(就是可以自由变化的参数个数),即wi的个数。就像下图中的控制面板,有10个旋钮,类比h就是有10个wi,d=9。通过调节10个旋钮,产生不同的h。而dvc 就是这个控制面板的自由度10,dvc =10。
为什么要加上可以“自由变化”呢?因为有的如:有约束条件规定,则w9就不能自由选择,因为
,这和xd+2一样,是由前面d+1个决定的,它不能自由选择自己的值。
看几个例子:
正射线自由度
切成两半的位置,一个参数。
正区间自由度:左边的位置,右边的位置。两个参数。
我们其实可以看到,dvc 越大,就是说可以shatter的点越多,h的power也越大。这很容易理解,数据来挑战h的时候,dvc 越大,它出1个点可以shatter,出2个点可以shatter……出dvc 个点可以shatter。但是,dvc 不是越大越好。
来看个数学解析:
我们把原来的Hoeffding’s Inequality改写一下,就是VC bound
VC bound最后整理为(中间过程都是数学替换,可以看课件)
左边部分不太重视,只取右边为:
我们把叫做“penalty for model complexity”
看下面的图:
横轴是dvc 纵轴是error。随着dvc 增加,Ein变小,因为可以shatter的点变多,那就可以找到合理的h。Ω变大,因为模型越复杂。
随着dvc 变小,Ein变大,Ω变小。
所以,最好的dvc 在中间。
上面还解释一些现象,我们开始学机器学习,会希望Ein很小。从上图看,那样就会要更大的dvc 这样使h变得等强大,但不见得就好,因为代价就是模型复杂。(这个在《A Few useful things to Know About machine Learning》 读后感中有讲到)
成本函数里面有个N,是资料的数量,我们总说够大的N,够大到底是多大?无穷还是一些些?
根据VC bound
做这样一道题
Ein和Eout差最多0.1,坏事发生的概率最多10%,模型的dvc是3,比如2D的perceptron。问:需要多少的数据量?
理论上N=10000dvc,但是实际
也就是上面的2Dperceptron 只要30个点就够了。(想象在一个二维平面,给30个点,找一条线)
所以,可以看到,理论值与实际值差很远,这个bound是非常loose的。为什么呢?
从这个图可以看出,VC bound看的都假设在最糟糕的情况。