这一讲主要学习了学习的可行性,将从以下的四个小节进行学习。
Learning is Impossible?
首先给出一个学习的小问题,我们也可以在很多情况看到这种类似的益智问题。在如下的3*3的方格中,有的小格被黑色所填充,有的没有,然后上面三种情况下,我们给出的y的值为-1,而下面三种情况给出的y的值为+1。问你如果遇到最下面的那种情形,值应该是多少呢?这时候你就疯掉啦,什么鬼?有啥规律呢?费劲的想吧……
其实我们说结果是-1对,说是+1也对,因为我们总可以找出一种对应规则来满足我们的结果。这时我们就可以说这个问题是不能学习的了,因为没有一种固定的规则,就无法得到一个绝对正确的答案。
接下来我们再看一个简单的二分类问题,我们给出如下的一个东西,其中已经给出了几种情况下的取值,那么如何根据输入的x的序列来判断 y 的情况,是o还是×。
也就是说我们能否在所有可能的假设中找到了一个g,使其很好的接近数据中隐藏的规则f呢?如下所示。输入特征x是二进制的、三维的,对应就有8种输入,其中已知结果的D有5个。那么,根据样本对应的输出y,假设有8个假设,这8个假设在D上,对5个训练样本的分类效果效果都完全正确。但是在另外3个测试数据上,不同的假设表现有好有坏。在已知数据D上,g约等于f;但是在D以外的未知数据上, 不一定成立。而机器学习目的,就是希望我们选择的模型能在未知数据上的预测与真实结果是一致的,而不是在已知的数据集D上寻求最佳效果。
我们只能在给定的数据上寻找到一种规则,使其很好的满足我们的猜想,但是我们无法保证对于其他的未知数据仍然是正确的。这就是No Free Lunch,不存在一种可以适应所有情况的学习算法,对于不同的情形,我们总可以找到一个好的学习器,使它的结果好于随机猜测。我们所说的什么算法比另一个要好,这种结论都是基于一定的情形下,比如数据的分布、特定的先验信息等等,在不同的应用情形下,应该选择合适的算法来满足我们的要求。
Probability to the Rescue
在前面的总结中我们提出,我们无法在现有的数据之外,去学习未知数据的某种规则,但是我们能否通过某种方法对于未知的目标做一些推论呢?不一定要完全得到最终的结果,可以尽可能的接近我们想要的结果呢?
比如我们有一个装满弹珠的瓶子,里面有绿色和橙色两种,我们能否知道橙色弹珠所占的比例呢?也许你会说,把它一颗一颗的数,不就知道了吗?NO!这只是在现实中你可以这样做,在理论上当我们有很多很多,多到不可数时,我们就没法通过暴力数的方法来得到结果。我们需要使用其他的方法来解决这个问题。
那就是通过采样的方法!既然我们无法取数所有的弹珠,我们可以一次取一部分,例如10颗,然后看这10颗中橙色的比例,然后重复着操作,不断的采样,当我们采样的次数足够多时,我们就认为在概率学意义上,样本中橙色弹珠所占的比例就是总体中橙色弹珠的比例。
如下所示,我们假设瓶中橙色弹珠所占比例为μ,绿色的自然就是1-μ了,但是我们是不知道μ具体是什么值的。通过采样,在N个样本中,我们算出橙色弹珠比例为v,绿色为1-v,这个v我们是知道的。
这种随机抽取的做法能否说明罐子里橙色球的比例一定是v呢?答案是否定的。但是从概率的角度来说,样本中的v很有可能接近我们未知的u。
那么我们如何从v中知道关于μ的一些信息呢?下面从数学推导的角度来看v与u之间的关系。如下所示,已知μ是罐子里橙色球的比例,v是N个抽取的样本中橙色球的比例。当N足够大的时候,v和μ的大小差距就会满足我们设定的概率,也就是v接近于μ。这就是Hoeffding’s inequality,它同样可以用到其他的很多问题上。
Hoeffding不等式说明当N很大的时候,v与u相差不会很大,它们之间的差值被限定在之内。我们把结论v=u称为probably approximately correct(PAC)。
最后我们结合提出的问题对Foeffding不等式做一个总结。在不等式中,我们需要给定一个误差的范围和一个足够大的N,我们不必知道要求的μ,只需要知道v,在N足够大的时候,不等式右边的概率值就会很小,那么在概率学意义上我们就可以通过知道的v,推论不知道的μ。
Connecting to Learning
通过前面弹珠的例子,我们知道了一些方法,下面我们将其推广到普遍意义上的学习中。假设我们有很多个独立的样本,在样本集合D中,我们想找到一个h(x)来接近真实的f(x),当我们的h不对时,意味着h(x)!=f(x),反之两者相等。当我们的N足够大时,我们就可以通过样本中h(xn)!=yn的概率知道总体中h(x)!=f(x)的概率。
上面所说的,映射中最关键的点是讲抽样中橙球的概率理解为样本数据集D上h(x)错误的概率,以此推算出在所有数据上h(x)错误的概率,这也是机器学习能够工作的本质,即我们为啥在采样数据上得到了一个假设,就可以推到全局呢?因为两者的错误率是PAC的,只要我们保证前者小,后者也就小了。
为了叙述的方便,这里我们引入两个值Ein和Eout。Ein(h)表示在抽样样本中,h(x)与yn不相等的概率; Eout(h)表示实际所有样本中,h(x)与f(x)不相等的概率是多少。
那么表现在不等式中就是下面的情形,在N足够大时,Ein可能会接近Eout。
类似于前面的说法,我们的假设条件如下,Ein=Eout也是PAC的,如果Ein=Eout,Ein就很小,那么就能推断出Eout很小,也就是说在该数据分布P下,h与f非常接近,机器学习的模型比较准确。
但是固定的h来说,即使在数据量足够大时有Ein约等于Eout,我们能否就可以断定g约等于f呢?我们的学习方法是一个好的学习呢?
这个需要我们分情况来看,如果对于固定的h,Ein很小并且我们的学习算法也选择了h,那么在PAC下,我们认为g=f是可行的。但是如果学习算法强制选择h作为我们最后的g,而Ein(h)并不总是很小时,这种情况下我们是不能断言这个h是合适的。
而在真实的应用中,我们应该给学习算法一个选择h的范围,而不是给一个固定的h。所以,一般会通过演算法A,选择最好的h,使Ein(h)足够小,从而保证Eout(h)很小。固定的h,使用新数据进行测试,验证其错误率是多少。
我们的学习流程图就变成了这样
Connecting to Real Learning
回到弹珠的例子上,假设我们现在又M个瓶子,里面装满的弹珠,有某一次采样时,我们拿到的都是绿色的,能否选择这个瓶子作为我们普遍采样的一个选择呢?
首先我们呢来看一个日常的抛硬币的例子,有150个人一起抛硬币,其中一名同学抛了5次都是正面,我们可以计算一下这个事件所发生的概率如下,可见这个值是很大的。但这样我们能否所这个同学所用的硬币具有普遍的代表性呢?当然是不行的啦,因为我们知道,每一枚硬币在每一次抛中,出现某一面的概率都是0.5.那么在上面弹珠的例子中,在某个瓶子中某次抽到的都是绿色,我们也不能说这个瓶子中的就都是绿色,更不能说所有的瓶子中都是绿色。
这就是Bad Sample现象。它是指Ein和Eout差别很大,即当我们的选择越多时,导致不好的情形出现的概率自然就会越大。
例如对于同一个h来说,Eout很大而Ein却很小。
根据许多次抽样的到的不同的数据集D,Hoeffding’s inequality保证了大多数的D都是比较好的情形(即对于某个h,保证Ein和Eout相近),但是也有可能出现Bad Data,即Ein和Eout差别很大的数据集D,这是小概率事件。也就是说对于不同的D,不同的h,都有可能成为Bad Sample,只要D在任意一个h上出现Bad Sample,那么这个D我们就认为是Bad Data;只有D在所有的h上都不出现Bad Sample,我们就认为是一个Good Data。
那么对于M个假设,Bad Data出现的概率上界是多少呢?我们可以通过级联的方式来看一下。
其中,M是hypothesis的个数,N是样本D的数量。该union bound表明,当M有限,且N足够大的时候,Bad Data出现的概率就更低了,即能保证D对于所有的h都有Ein约等于Eout,满足PAC,A的选择不受限制。那么满足这种union bound的情况,我们就可以和之前一样,选取一个合理的演算法(PLA/pocket),选择使Ein最小的h作为g,一般能够保证g约等于f,即有不错的泛化能力。
所以,如果假设的个数M是有限的,N足够大,那么通过A任意选择一个g,都有Ein约等于Eout成立;同时,如果找到一个g,使Ein约等于0,PAC就能保证Ein约等于0,就证明了机器学习是可行的。
我们的学习流程图如下所示
那么当我们的M是无穷大时,我们的学习是否就是不可行的了呢?后面我们会学习到它的解决办法。
Summary
下面做一个总结,我们主要是讨论了机器学习的可行性,主要内容如下四方面。