Foundation of Machine Learning 笔记第一部分——PAC学习框架

来源:互联网 发布:影视vip软件下载 编辑:程序博客网 时间:2024/06/04 21:16

前言

注意事项:

  1. 这个系列的文章虽然题为书本《Foundation of Machine Learning》的读书笔记,但实际我是直接对书本的部分内容进行了个人翻译,如果这个行为有不妥当的地方,敬请告知。
  2. 由于知识面限制,部分名词的翻译可能存在错误,部分难以翻译的名词保留英文原词。为了防止误导大家,在这里声明本文仅供参考。
  3. 本文基本翻译自《Foundation of Machine Learning》的2.1节。

正文

在设计和分析学习算法的时候我们会产生几个问题:哪些任务是可以有效地学习的?算法在学习过程中有哪些固有困难?要成功地学习一个任务需要提供多少样本?存在通用的学习模型吗?在这一章中,我们通过引入Probably Approximately Correct ( PAC ) 学习框架,把这些问题形式化,并将解决这些问题。根据算法要取得近似解所需要的样本数——称为样本复杂度,和学习算法所需要的时间和空间复杂度,PAC框架定义了一种可学习 ( learnable ) 的 concept。

PAC学习模型

为了理解PAC模型,我们首先引入几个定义和概念。

我们使用 χ 来表示所有可能的样本。χ 有时候也代表着输入空间 ( input space )。所有标签和目标值的集合用 Y 表示。因为这一章是介绍性的章节,我们仅讨论 Y 只有两种标签的情况,Y={0,1},即二分类问题。接下来的章节会把这里的结果拓展到更加一般的背景。

定义 concept c:XY 为一个从 XY 的映射。由于 Y={0,1},我们可以把 c 等同地看作 X 中所有对应的像为 1 的元素构成的集合。因此,接下来我们将使用从 X{0,1} 的映射或者 X 的一个子集来表示要学习的 concept。举个例子,一个 concept 可以是平面中一个三角形内的点,或者可以是这些点的一个指示函数 ( indicator function )。在这个例子中,我们可以把要学习的 concept 归纳为一个三角形。concept class 是我们可能想要学到的 concept 的集合,用 C 表示。例如,一个 concept class 可以是平面中的一系列三角形。

我们假设样本都是从某个确定但未知的分布 D 中独立抽取出来的,也就是说样本都是独立同分布的 (i.i.d)。那么学习问题就能用下面的数学语言来表示。学习主体从某个固定的 concept 的集合 H 选择合适的 concept,称 H 为假设集 ( hypothesis set ),H 不一定和C 重合。学习主体可以接收样本集 S=(x1,...,xm) 和标签 (c(x1),...,c(xm)),其中样本集根据 D 独立同分布地抽取得到,标签是基于特定等待学习的目标 concept cC 得到的。学习主体的任务就是使用带标签的样本集 S 去选择一个与 concept c 相比有较小泛化误差 ( generalization error ) 的假设 hSH 。一个假设 hH 的泛化误差也被称为真误差 (true error) 或者直接就是误差 (error),使用 R(h) 表示,它的定义如下所示。

定义 2.1 泛化误差

给定一个假设 hH,一个目标 concept cC,以及一个潜在的分布 D,泛化误差,或者说 h 的风险可以定义为

R(h)=PrxD[h(x)c(x)]=ExD[1h(x)c(x)],(2.1)
这里的 1ω 是事件 ω 的指示函数。

因为分布 D 和目标 concept c 都是未知的,所以学习主体不能直接得到一个假设的泛化误差。但是它可以测量假设在某个带标签的样本集上的经验误差 ( empirical error )。

定义 2.2 经验误差

给定一个假设 hH,一个目标 concept cC,以及一个样本集 S=(x1,...,xm)h 的经验误差,或者称为经验风险,定义为

R^(h)=1mi=1m1h(x)c(x).(2.2)

因此,hH 的经验误差就是它在一个样本集 S 上的平均误差,相对的,h 的泛化误差则是它基于分布 D 的期望误差。我们注意到,对于一个给定的 hH,它在一个服从独立同分布的样本集 S 上的经验误差的期望值等于它的泛化误差:

E[R^(h)]=R(h).(2.3)
根据数学期望的线性性质,以及因为样本集是独立同分布地抽取的,对于样本集 S 中的任一元素 x 我们可以写出
ESDm[R^(h)]=1mi=1mESDm[1h(xi)c(xi)]=1mi=1mESDm[1h(x)c(x)],
因此
ESDm[R^(h)]=ESDm[1h(x)c(x)]=ExD[1h(x)c(x)]=R(h).

接下来引入 PAC 学习框架。我们使用 O(n) 来表示任意 xX 的运算表示成本的上限,用 size(c) 表示 cC 的最大运算表示成本。例如,设 xRn 上的一个向量,它基于阵列的表示成本应该在 O(n) 以内 (我的理解:n 是样本的维数, size(c) 是函数 c(x) 的时间复杂度)。

定义 2.3 PAC学习

称一个 concept class C 是 PAC 可学习的 ( PAC-learnable ),如果存在一个算法 A 和一个多项式函数 poly(),使得对于任意 ϵ>0δ>0,对于所有 X 上的分布 D 和任意的目标 concept cC,当样本量 mpoly(1/ϵ,1/δ,n,size(c)) 都有下式成立:

PrSDm[R(hS)ϵ]1δ.(2.4)
进一步地,如果 A 运行时间复杂度小于 poly(1/ϵ,1/δ,n,size(c)),那么称 C 可有效 PAC 学习 ( efficiently PAC-learnable )。当这样一个算法 A 存在时,它被称为 C 的一个PAC学习算法。

对于某个 concept class C,如果一个算法在对关于 1/ϵ1/δ 的多项式量级的样本进行观察后返回的假设能保证以高概率 (至少 1δ) 近似正确 (误差小于 ϵ) 地对样本进行预测,就称 C 是PAC可学习的。δ>0 规定了置信度 1δϵ>0 规定了准确率 1ϵ。注意如果算法的运行时间是关于 1/ϵ1/δ 的多项式级别的,那么算法接收的样本量 m 必然是多项式级别的 ( 我的理解:否则算法在对样本进行读取这个操作本身就不可能是多项式级别的了 )。

PAC的定义中有几个值得强调的关键点。首先,PAC学习是一个对分布没有限制的模型:这里没有对样本抽取的分布 D 做特别的假设。其次,定义误差的训练样本和测试例子都是根据同一个分布 D 抽取的。为了使泛化称为可能,在大多数情况下这是一个必要的假设。最后,PAC框架解决了一个 concept class ,而不只是某一个concept,的可学习性问题。注意 concept class C 对算法来说是已知的,但目标 concept cC 是未知的。

在很多情况下,特别在 concept 的计算表示不明确的时候,我们可以忽略 PAC 定义中对 n 和 size(c) 的依赖,仅关注样本复杂度。

0 0
原创粉丝点击