【机器学习笔记五】------Training versus Testing(训练与测试过程)

Recap and preview

上节讲到机器学习的可行性,如果有足够的统计资料和有限的hypothesis,通过演算法无论选择什么样的g,都会有E_{in}(g)\approx E_{out}(g);如果演算法A选择了一个hypothesis g,其中E_{in}(g)\approx 0 ,根据PCA可以保证E_{out}(g)\approx 0,可以说明机器学习是可行的。

回顾之前的课程,其中第一节是说机器学习的定义是寻找一个最好的函数g,使得很接近理想的函数f,来保证E_{out}(g)\approx 0;第二节课讲述在已知资料data上如何使E_{in}(g)\approx 0,可以使用PLA和pocket等演算法来实现;第三节课介绍机器学习的分类,训练样本为批量数据(batch),处理监督式(supervised)和二元分类(binary classfication)的问题;第四节课介绍机器学习的可行性,通过统计学的知识将E_{out}(g)E_{in}(g)联系起来,证明在一些假设条件下,E_{in}(g)\approx E_{out}(g)成立。

总结下来,将机器学习分为两个核心问题,第一个是确保E_{out}(g)\approx E_{in}(g)足够接近,第二个是使得E_{in}(g)足够小。机器学习的可行性的条件之一为hypothesis set中的个数M是有限的,那么M和核心问题之间有什么样的关系?

根据hoeffding不等式:当M小的时候,E_{out}(g)\approx E_{in}(g)发生的概率很大,但是演算法的选择有限,可能不会找到一个函数g使得E_{in}(g)足够小,不能保证核心问题二成立;当M大的时候,E_{out}(g)\approx E_{in}(g)发生的概率很小,但是有很多的选择,可以更确保有一个g使得E_{in}(g)足够小,核心问题二成立,但是一可能不成立。

可以看出,M的选择直接影响机器学习的两个核心问题,使用正确的M或者hypothesis set很重要,那么是否M = \infty就不可行呢?所以要想办法解决无限大的M的问题。如果将M限定在一个有限大的变量m_{H}内,问题就解决了。

Effective number of line

从之前学过的hoeffding不等式出发,查看为什么M无限大的没办法做?首先查看它的推导过程:如果E_{in}(h_{m})E_{out}(h_{m})之间相差很远,就说明这个hypothesis在data上是bad event,为了让演算法能够自由在hypothesis中做选择,将每个hypothesis发生bad event的几率全部或起来,(任何一个资料上发生bad event就说明这个hypothesis是不好的,使用连级的方式),计算发生bad event的几率的上限,所以当M=\infty,即有无限个项相加bound就会很大,失去意义,此时就会出现问题。

bound出现了什么问题?使用union bound是因为bad event不太会重叠,如果有两个很接近的hyothesis,那么对于大部分的训练样本D,E_{in}(h_{1})=E_{in}(h_{2}),那么E_{out}(h_{1})E_{out}(h_{2})就会很接近,所以两个hypothesis发生bad event的可能性就会非常接近。实际上,坏事情发生的情况是相互重叠的,但是使用union bound相加的时候没有考虑重叠,造成上限是过分估计的。为了解决重叠的问题,将无限个hypothesis分为有限多类。

怎样将hypothesis分类,考虑平面中有无限条直线,如果只有一个data x,那么只有两种线,将x归类为正或者负;如果有两个数据项x_{1}x_{2},那么会有四种直线;如果有三个输入,会有八种情形;

三个输入一定是8中情形吗?将三个输入换一种排列方式,发现只有六种情形。

对于四个数据的输入,发现有一种无法存在一条直线使其成立的情形,最多存在14条直线。

那么对于N个数据的输入,有效的线的个数<2^{N},表示有效直线是有限的,如果使用有限的数字取代M,如果有效的数字比2^{N}小很多很多,就可以保障机器学习可能学到东西。

Effective Number of hypothesis

引入一个新的名词:dichotomy(二分类),dichotomy就是将空间中的点(例如二维平面)用一条直线分成正类和负类。设H是将平面上的点用直线分开的所有hypothesis h的集合,dichotomy H与hypothesis H之间的关系是:hypothesis H是平面上所有直线的集合,个数可能是无限个,而dichotomy H是平面上能将点完全用直线分开的直线种类,它有一个上界就是2^{N}。接下来,尝试使用dichotomy代替M。

再引入一个新的名词:成长函数(growth function),记为m_{H}(H),其定义是对于由N个点组成的不同集合中,某集合对应的hypothesis最大,那么这个dichotomy值就是m_{H}(H),它有一个上界2^{N}成长函数就是effective lines的数量的最大值,根据成长函数的定义,二维平面上,m_{H}(H)随N变化的关系是如图的右方。

如何计算成长函数?

首先看一个简单的一维positive rays

如果有N个点,则整个区域可以分为N+1段,很容易得到成长函数m_{H}(N)=N+1,当N很大时,(N+1)< < 2^{N},这是希望看到的。

对于一维的另一种情况positive interval,它的成长函数推导如下,这种情况下,N很大时,仍满足m_{H}(N)=\frac{1}{2}N^{2}+\frac{1}{2}N+1<<2^{N}

假设在二维空间中,如果hypothesis是凸多边形或者类圆构成的封闭曲线,如下,左边是convex,右边不是convex的,对于这种的成长函数m_{H}=2^{N}。这种情况下,N个点所有可能分类的情况都能被hypothesis set 覆盖,我们把这种情况称为shattered.。也就是说,如果能够找到一个数据分布集,hypothesis set对N个输入左右的分类情况都能做到,那么成长函数就是2^{N}

Break Point

总结起来共有四种成长函数,分别为:

对于四种成长函数,positive rays和positive intervals的成长函数都是polynomial(多项式)的,如果用m_{H}代替M的话,这两种情况是比较好的,而convex sets的成长函数是exponential(指数型)的,即等于2^{N}(不等式右边前半部分是指数增长,后半部分是指数减少的),并不能保证机器学习的可行性。对于2D perceptrons,之前查看含有3个点的输入,最多可以有8种hypothesis;而4个点的时候无法做出16条直线,最多是14个hypothesis,所以,将4成为2D perceptrons的break point(5、6、7等都是break point)。假设有k个点,如果k大于等于break point时,它的成长函数一定小于2^{k}

根据break point的定义,我们知道满足m_{H}(k)=2^{k}的k的最小值就是break point。对于之前的四种成长函数,它们的break point分别是:

我们假设成长函数可能与break point存在某种关系:对于convex sets,没有break point,它的成长函数是2^{N};对于positive rays,break point  k=2,它的成长函O(N)数是;对于positive intervals,break point k=3,它的成长函数是O(N^{2}),根据这种推论,猜测2D perceptrons ,它的成长函数m_{H}(N)=O(N^{k-1})。如果成立,那么就可以用m_{H}代替M,就满足了机器学习可行的条件。

猜你喜欢

转载自blog.csdn.net/m0_38103546/article/details/82319176