在进入本篇文章之前,让我们来串联一下之前几篇文章我们都说了些什么。第一篇文章中,我们说machine learning目标在于在样本空间内找到一个g来近似于目标函数f(数学表达g ≈f ,即Eout(h)≈0)。第二篇文章,我们使用了某一具体的感知机算法,来找到在训练集中能使Ein(g)≈0的hypothesis。第三篇文章,对machine learning进行了分类,并指出batch supervised binary classficition是machine learning 核心的问题。看看我们所学的,我们有了Ein(g)≈0 ,想要证明Eout(h)≈0,那么我们可以证明Eout(h)≈Ein(g)。所以在第四篇文章,我们着手于证明这个表达式,但是最后我们只能说在特定的情况下(hypothesis个数有限,训练集内样本个数很多很多的时候,有这个表达上的成立,也就是说机器根据训练集确实能学习到一些规则,这些规则可以用到服从相同概率分布的样本上,在这个程度上,机器学习有理论支撑,靠谱的!),但是很多问题,hypothesis set内个数是无穷的,这样的证明显然是不够的,而且其实在上篇文章证明中,我们忽视了重要的问题(证明上线的时候,忽视了bad data 的overlap,导致最终计算的上限偏大,这也是为什么我们可以进一步缩小上限,试图不以hypothesis 个数来表达上限,而且最好是找到一个有限值来表达上限!)那么我们就开始对之前的证明进行改造吧!
在本篇文章将引入成长函数和break point 概念,为之后证明成长函数代替M和远小于2N做准备。
从训练集看,hypothesis 种类个数有限的!
之前的证明里,忽视了对于不同的hypothesis 来说bad data可能overlap ,因此最终计算得来的上限偏大,这里的关键问题就是不同的hypothesis 却有着相同的bad data ,这说明这些不同的hypothesis 其实很相似,进而导致他们的bad data 差不多。从这里出发,我们希望对hypothesis 进行分类,由于训练集样本个数有限,因此分类的可能性是确定的,倒推回去我们知道hypothesis 种类也是有限的。我们使用不同类别的hypothesis 的bad data来计算上限,此时他们的bad data 就不会出现overlap ,我们的上限将能被更精确地表达出来!
下面来具体看看在二维感知机问题上,对不同的训练集来说,hypothesis 种类的个数是多少。
这里比较特别,同样是三个样本,可是样本的不同,导致hypothesis 种类个数呈现不同,在之后的证明里,为了忽视具体的样本的差别,我们取最大的hypothesis 类别个数。
所以我们需要证明两件事,第一件之前的上限中的M为什么可以被现在的hypothesis 种类个数代替,第二件事hypothesis 种类个数代替要远小于2N,才能表明当N很大时,上限近似于0,进而Eout(h)≈Ein(g)。
为便于我们的证明,引入几个符号。
mh(N) 表示给定训练集后,根据训练集所确定来的不同种类的hypothesis个数,也称作成长函数。
先来看看几个简单的给定训练集的成长函数值:
break point :第一个样本可能产生所有结果个数不等于成长函数值的训练集大小。
引入break point定义,是因为成长函数的表达与break point有关,且是多项式形式。