转/参考

http://blog.sina.com.cn/s/blog_4c98b96001000bpp.html

http://blog.pluskid.org/?p=821

http://wenku.baidu.com/view/5ac5fd7c1711cc7931b716dc.html

X代表所有实例的集合,目标函数在其上定义。例如,X可表示所有人的集合,每个人描述为属性age(young或 old)和height (short或 long)。令C代表学习器要学习的目标概念集合C中每个目标概念c对应于X的某个子集,或一个等效的布尔函数c:X→{0,1}。例如,C中一个目标函数c为概念:“是滑雪者的人”。若x是c的正例,则c(x)=1;若x为反例,则c(x)=0。

    假定实例按照某概率分布D从X中随机产生。例如D可为从某体育用品商店走出来的人这样一个实例分布。一般地,D可为任何分布,而且它对学习器是未知的对于D所要求的是它的稳定性,即该分布不会随时间变化。训练样例的生成按照D分布随机抽取实例x,然后x及其目标值c(x)被提供给学习器

     在此框架下,我们感兴趣的是刻画不同学习器L的性能这些学习器使用不同假设空间H,并学习不同类别的C中的目标概念。由于我们要求L足够一般,以从C中学到任何目标概念,所以不论训练样例的分布如何,我们经常会对C中所有可能的目标概念和所有可能的实例分布D进行最差情况的分析。

为了描述学习器输出的假设h对真实目标概念的逼近程度,首先要定义假设h对应于目标概念c和实例分布D的真实错误率(true error)。非形式的描述是:h的真实错误率为应用h到将来按分布D抽取的实例时的期望的错误率。实际上第5章已经定义了h的真实错误率。为方便起见,这里重述一下该定义,使用c表示布尔目标函数。

定义:            假设h关于目标概念c和分布D的真实错误率(true error)为h误分类按照D随机抽取的实例的概率。

error(D,h)=Pr[c(x)!=h(x)](x属于D)

概念c和h被表示为X中标为正例的实例集合。h对应于c的错误率为,随机选取的实例落入h和c不一致区间(即它们的集合差)的概率。注意,错误率定义在整个实例分布之上,而不只是训练样例之上,因为它是在实际应用此假设h到后续实例上时会遇到的真实错误率。

 

 

这次我们要介绍的话题是 PAC Learnability ,直译过来就是 PAC 可学习性。可学习性听起来和计算理论里的可计算性是很类似的,当然其实也确实是类似的,而且这里也包含一些计算理论里的内容。对比来看,这里研究的主要是三个问题:

  • 计算理论研究什么时候一个问题是可被计算的,而 PAC 学习理论,或者说计算学习理论 (Computational Learning Theory) 主要研究的是什么时候一个问题是可被学习的。可计算性在计算理论中已经有定义,而可学习性正是我们待会要定义的内容。
  • 另外,计算理论中还有很大一部分精力花在研究问题是可计算的时候,其复杂度又是什么样的,因此,类似的,在计算学习理论中,也有研究可学习的问题的复杂度的内容,主要是样本复杂度 (Sample Complexity) 。
  • 最后,在可计算的时候,得到实现计算的具体算法也是计算理论中的一个重要部分;而学习理论(或者更多的在“机器学习”这个课题下)当然也会探讨针对可学习的问题的具体的学习算法。

而 PAC 模型在这里的作用相当于提供了一套严格的形式化语言来陈述以及刻画这里所提及的 Learnability 以及 (Sample) Complexity 问题。

虽然也可以扩展用于描述回归以及多分类等问题,不过最初的 PAC 模型是针对 binary classification 问题提出来的,我们这里也采用这种模型,并且可以顺便介绍这种情况下的一些特有的概念。和以前的设定类似,我们有一个输入空间 对称差来表示:

如图所示,误差在这里就很直观地用两个集合的对称差(也就是黄色的部分)的面积(用测度 衡量)了:

的问题。

对比之前的统计学习的设定,可以发现一些差异,比如这里的 target concept 是一个确定的函数,也就是说,对应 里面的,因此理论上是能达到 0 误差的。不过虽然最初基本的 PAC 学习的一些结果是在这样的框架下得到的,但是我们这里的重点是要给出 PAC Learnability 的定义,在这种情况下,这些限制都是可以放松和扩展的,我们待会再会过来看这些问题。

“计算学习理论”顾名思义会考虑“计算”在里面,因此,和普通的统计学习理论中所考虑的设定——事先给定了一个训练数据集——所不一样的是,我们这里并不给定一个数据集,而是给定一个可以生成数据集的 procedure 的运行(计算)时间是单位时间。下面我们来看一下我们理想中的学习算法应该满足一些什么条件

  • 首先对 的调用次数应该不要太多
  • 然后算法的计算量(包括对 以及本身的其他运算)不要太大
  • 算法能够得到一个误差足够小的

至于什么是“太大”或者“太多”呢?我们下面就给出严格的定义

定义 (PAC Model):我们称一个 concept class

如果 efficiently PAC learnable 的。

下面我们来细看一下这个定义,这里重要的两个参数,一个是 需要达到多少才能实现所要求的精度保证,这通常也称为样本复杂度 (Sample Complexity) 。

这里顺便可以解释一下 PAC (Probably Approximately Correct) 这个名字(不要把 PAC 和 PCA 搞混了),所谓 Approximately Correct 就是指学出的模型的误差比较小(被 限制住),因为实现零误差(absolutely correct) 是非常困难并且通常没有必要的,所以这里考虑的是 Approximately Correct ;其次,由于随机性的存在,我们只能从概率上保证 Approximately Correct 的可能性是很大的(至少 的概率),这就是该模型的名字由来。

上面的两个定义中,第一个定义是仅从统计上来考虑问题,问题是否 Learnable ,如果在这个意义下都不 Learnable 的话,就不太好玩了。在统计意义下 Learnable 之后,第二个扩展的定义再考虑计算量的问题:Learning 是否可在多项式时间内实现,这就更接近计算理论里考虑的问题了。当然,对于实际的问题来说,这是相当重要的一个因素。不过在上面关于 efficiently PAC learnable 的定义中有一些模糊的地方,一个是关于输入空间 的大小是指什么?这些概念通常从直观上是可以理解的,不过这里我们不想陷入过多的关于计算理论方面的讨论,那还将涉及到同一个 concept 以不同的 representation scheme 来表达可能会有不同的“大小”的问题,对这方面感兴趣的同学可以参考 Michael J. KearnsUmesh V. Vazirani 的书《An Introduction to Computational Learning Theory》。这里顺便 8g 一下,Michael Kearns 是 Leslie Valiant 的学生,当然也为 PAC 模型的发展做出了重要贡献咯,而 Leslie Valiant 就是今天的封面人物,提前介绍一下,PAC 模型就是他提出来的,现在在 Harvard ,2010 年图灵奖得主

For transformative contributions to the theory of computation, including the theory of probably approximately correct (PAC) learning, the complexity of enumeration and of algebraic computation, and the theory of parallel and distributed computing.

下面再回到主题,作为一个例子,我们不妨来简单介绍一下书上的一个经典的例子。这里取 是可学习的,并给出一个具体的学习算法。

下面是一个示意图,黑框表示(未知的)target concept 近似:

【ML】PAC learning model

这里我们采用一种非常简单的算法:直接无视 label 为 0 的数据点,而计算包含了所有 label 为 1 的点的最小的矩形为当前的近似 ,如上图中的红框就是在观察到了图中的这些数据点之后的学习结果。接下来我们来证明这个简单的算法是可以实现 efficient PAC learning 的。

目的要是使得 ,我们可以分为四个部分来考虑问题,首先是上面部分:

【ML】PAC learning model

了(重叠部分不用去管它,因为它并不影响我们的不等式)。

然后我们再回过头来看如何限制 是矛盾的。

这样一来,为了限制事件

其他三个矩形边上可以用同样的分析。然后,根据概率公式

因此,如果我们有 的,于是,我们达到目的了。

当然,达到目的的前提是 ,我们只需要保证

即可,解出 得到:

所以,只要我们通过 函数,因此情况更好一些)的,所以也保证了 efficient PAC learnability 。这里得到的关于样本数目的界,就是这个问题的样本复杂度 (Sample Complexity) 了。

不过我觉得这个例子似乎有一点小问题,主要在于 PAC 模型还要求对任意概率测度 绝对连续的,应该就没有问题了。这样应该可以把 PAC 模型里的“任意测度”这个条件稍微弱化一下就可以了。反正这里展示的 PAC 模型也是最简单的原型了,在不同的问题中会有各自不同的扩展和推广出现,总之主题思想是那样就可以了。

不过,不管怎么看,这个模型都有点过于简单了,至少和我们最开始做的统计学习的设定相比起来,仅限于 binary classification 这一点就不说了,统计学习中的许多分析也都这样子的。另一个比较明显的限制就是假设 target concept 没有随机性,似乎各种用 PAC 模型进行分析的时候都喜欢用这种假设,当然简化的模型便于更清楚地分析问题是没错,但是如果因此而使得得到的模型限制过大无法用到具体问题中的话,就显得有些本末倒置了。不过我们这里不妨细看一下这个问题。

一方面,带随机性的模型是包含了无随机性的模型作为一个特例的,那反过来呢?假设我们有 关于机器学习问题设定的文章中我们曾经得到一个公式:

这里 是根据回归函数定义的 Bayes 分类器。另外,容易验证

这里如果把 Bayes 分类器 上的分布,从而把原来的问题转化为一个确定性的问题,并由上面的等式知道两个问题所求出来的最优解将会是相等的。所以说,从这种意义下来说,两种模型是可以相互转化的。

这里还可以顺便看一下重新赋予的权重

除了随机性之外,我们刚才的 PAC 模型还有一个非常巨大的限制就是要求 target concept 做任何限制,通常称为 Agnostic Learning 。这看起来很简单的一个扩展,实际上就一下子把原来很简单的一个问题变得很复杂了(看看它有这么文艺的一个名字就知道不是容易对付的家伙呀)。比如说,刚 才的方形学习的例子,如果 target concept 是一个圆形(还不考虑其他更复杂的情形),那那个问题是否还是 PAC learnable 呢?用一个矩形去任意逼近以原型似乎是非常困难的哦~ 【ML】PAC learning model

在本文的最后,稍微提一下令一个扩展,叫做 weak PAC learnable ,这里就不给严格的定义了,如果以后有机会再仔细讲吧,大致意思是,普通的 PAC learnability 要求对任意的 都能实现的话,就称为 weak learnable 的,比如说,你有一个比较简单的算法,只能保证比“随机猜”算法好那么一点,但是却无法达到更高的精度了,那么用这个算法就可以实现 weak learnable ,这样的算法称为 weak learner,而实现正常的 PAC learnability 的算法称为 strong learner 。Michael Kearns (刚才提到过哦)在 1988 年提了这么一个问题:weak learner 能不能变成 strong learner 呢?Robert Schapire 在 1990 年给了确定的答案,传说 Schapire 有一次到中国,碰到一位得道高僧,便用这个问题去请教这位高僧,高僧抚掌大笑,念叨着“三个臭皮匠,赛过诸葛亮”腾云而去,于是 Schapire 得到了顿悟,发现通过组合 weak learner 的方法可以得到 strong learner ,也就是 boosting 。后来在 1995 年 Yoav FreundRobert Schapire 一起发明的 AdaBoost 算法,成为今天机器学习中应用最广的算法之一。

相关文章:

  • 2022-03-02
  • 2021-11-17
  • 2021-07-02
  • 2022-01-10
  • 2021-05-27
  • 2022-12-23
  • 2022-02-12
  • 2021-12-30
猜你喜欢
  • 2021-07-07
  • 2022-12-23
  • 2022-12-23
  • 2021-10-21
  • 2021-06-24
  • 2021-09-09
  • 2021-11-21
相关资源
相似解决方案