机器学习 - ”没有免费的午饭“定理的理解

最近在看周志华的《机器学习》西瓜书,第一章绪论部分最值得讨论的恐怕就是”没有免费的午饭“定理(No Free Lunch Theorem),这个定理的完整证实很复杂,书里尽量地将问题简化,可是彷佛仍是有一些晦涩难懂,尤为是数学公式部分。因此对这一段的内容,本文阐述一下我我的的理解,或许能帮助到你们,或许有不周全的地方也欢迎留言讨论。算法

直观理解

首先咱们避开复杂的理论分析过程,直接跳到结论部分,来看一下这个定理本质上是要告诉咱们什么,这一点相信不少读者应该也很清楚。书中使用了以下的例子:框架

image.png

训练数据集是图中的黑点,若是采用两种不一样的算法,他们有着不一样的概括偏好,或者说训练策略,可能会训练出 A 和 B 两个模型(即假设),那么对于第一张图中的测试数据集(白点),显然 A 比 B 拟合得更好,即 A 的泛化能力更强;而对于第二张图则相反,B 在测试数据集上表现更出色。机器学习

即使左边的图中的数据点的平滑分布彷佛是一个更”常见“,更”合理“的现实问题,但很遗憾这只是你的一厢情愿。从数学上讲左右两张图所描述的问题,它们的地位是同样的,出现的可能也是同样,并不存在谁比谁更常见更符合现实。函数

”没有免费的午饭“定理正是要告诉咱们,没有什么算法是适用于全部的现实问题的,任何两个算法,以及它们训练出来的模型,在全部的现实问题的集合面前是无优劣的,它们的性能的数学指望值是同样的。对于不一样的现实问题,要选择相应的算法来解决。性能

概念阐述

在进入理论分析前,咱们先将书中提到的几个重要的概念阐述清楚,这些概念咋一看你可能都没在乎,或者没仔细思考过它的含义到底是什么,因此这里把它们都厘清:学习

问题

这实际上是最核心的一个概念,但书中并无给出一个明确的阐述,到底什么是所谓的问题。这里的问题,其实就是指一个函数,从输入能够计算获得输出的函数,或者说从输入到输出的映射。咱们获取了一堆样例数据,想要求解这个目标函数,通俗来讲就是要解决这个问题测试

因此能够这样简单地等价,一个问题就是一个目标函数,问题的集合,就是目标函数的集合,就是书中所说的函数空间,其实也等价于假设空间 $\cal{H}$,由于咱们求解出来的假设 $h$ 必然是属于上述函数空间中的某一个函数,只是它并不必定刚好是目标函数(或者说几乎不多是),因此在测试样本集上 $h$ 必然会产生偏差。spa

样本与样例

有了问题,或者说目标函数,就有了样本数据,全部样本的集合就是样本空间。不一样的目标函数,在样本上会求出不一样的标签,这些带了标签的样本就是样例。咱们的任务,就是从有限的样例数据中尽量地能还原出目标函数,使之能很好地描述(拟合)真实问题。3d

假设

就是咱们根据训练数据集,训练出来的函数,这个函数可能并非这个问题真正的目标函数,但值得注意的是,不论是真正的目标函数,仍是咱们训练出来的假设函数,它们都来自同一个函数空间对象

数学建模

在“免费的午饭”问题中,咱们评定一个假设,或者说模型的性能,并非测试它在某一个单独问题上的表现,是将其放在全部问题的集合上,计算它的偏差的理论指望值,这也正是书中的公式所要计算的。

看完书中这一段理论推导,个人第一感受是:彷佛能理解了,但又总以为无法从数学上彻底说服本身。不知道多少人和个人感受是同样的,因此这里咱们仔细来分析这段理论推导,来把它的含义真正理解清楚。

问题集合

书中为了简化,将所讨论的问题局限于二分类问题,全部问题出现的可能性是平均分布的,而且样本空间 X 的大小也是有限的。这种简化是为了方便咱们理解, 也是合理的。因此咱们首先要弄清楚,在这种简化的前提之下,咱们所面对的问题集合,或者说函数空间 到底是什么:

假设咱们正处于一个问题之下,样本空间 $\cal{X}$ 的大小是 |$\cal{X}$|,每一个样本点的标签是 0 或 1。虽然咱们并不知道这个问题真正是什么,也就是说并不知道真正的目标函数是什么,可是咱们能够知道目标函数来自的集合。对于二分类问题,咱们样本空间总共有 |$\cal{X}$| 个样本,映射到 |$\cal{X}$| 个标签上,每一个标签都有 0 或 1 两中可能性,那么 $\cal{X}$ 个点就有 $2^{|\cal{X}|}$ 种映射的可能。也就是说对于样本空间 $\cal{X}$,咱们的函数空间无非就是这 $2^{|\cal{X}|}$ 个函数(映射)。真正的目标函数一定是这 $2^{|\cal{X}|}$ 个函数中的一个;一样,训练出来的假设也只能来自于这 $2^{|\cal{X}|}$ 个函数的集合,这就是问题集合

算法与假设的关系

书中的第一条公式 1.1,如图所示:

image.png

已经在讨论某一个算法的偏差指望值了,这其实在思惟上已经有了一个跳跃。咱们这里先给它降维,首先讨论某一个假设的偏差。注意这里算法假设的区别,按照书中的表述,在同一个问题之下,基于训练数据集 $X$,一个算法 $\cal {L_a}$ 可能会训练出不一样的假设 $h$,它们符合必定的几率分布 $P(h|X,\cal{L_a})$。

你可能会问,一个特定算法,在特定的训练集上,训练出的假设不该该是固定的吗,为啥会有一个几率分布?关于这一点我也是存在困惑,可是咱们能够先认可这一前提。个人我的解释是,算法是任意的,它的策略中可能也包含了某些随机因子,即使是同一份训练数据集,也可能产出不一样的假设。固然你也能够说通常的算法不包含随机因子,基于同一份数据训练出的结果是必定是肯定的,那么这个几率分布就只有一个样本,几率为 100%,可是这仍然能够囊括在上述的几率分布理论中,也就是说咱们能够认为这个关于 $h$ 的几率分布理论是通用的。

计算偏差的指望值

假设在单样本上的偏差总和

然而在讨论算法的性能以前,咱们首先跳过算法,只关注最后训练出来的假设自己:即对于某一个假设 $h$,它的“训练集外偏差”是多少?

在二分类问题的框架之下,咱们的函数空间里一共有 $2^{|\cal{X}|}$ 个函数,即 $2^{|\cal{X}|}$ 个问题。咱们如今训练出一个假设 $h$,这个 $h$ 固然是这 $2^{|\cal{X}|}$ 个函数中的某一个,那么咱们须要计算的就是 $h$ 在这全部 $2^{|\cal{X}|}$ 问题上的总偏差是多少。考虑任意单同样本点 $x$,经过 $h$ 可以计算出它的预测标签 $y$,是 0 或 1;而 $x$ 在全部 $2^{|\cal{X}|}$ 个问题上的真正标签,显然其中有一半即 $2^{|\cal{X}|-1}$ 个是 0, 另一半是 1,所以假设 $h$ 对于样本点 $x$ 的预测标签,在一半的问题上能预测正确,在一半的问题上预测错误,因此偏差的指望值综合总和即为 $2^{|\cal{X}|-1}$。

以上讨论,须要理解的是:

  • 上面计算的是单个假设 $h$,预测单个样本点 $x$,在全部问题上的偏差之和;须要注意,这个单点样本 $x$ 是任意的,但并不影响最后的计算结果,也就说对任意一个样本 $x$,假设 $h$ 在全部问题集合上的预测偏差总和是同样的,都是 $2^{|\cal{X}|-1}$;
  • $h$ 来自于函数空间中 $2^{|\cal{X}|}$ 个函数中的某一个,而函数空间即等价于问题集合。$h$ 与函数空间中的全部其它函数的偏差之和,就是它在全部问题全集上偏差总和;
  • 样本 $x$ 同样, 假设 $h$ 也是任意的,可是不论是哪个 $h$,一样不影响最后的计算结果,也就是说在全部问题集合面前,任意一个 $h$ 的预测偏差总和是同样的,即全部 $h$ 的性能都是同样的;

综上所述咱们得出一个基本结论:

  • 对于任意一个假设 $h$,预测任意一个样本 $x$,在全部问题的集合面前,它的预测偏差总和是同样的。

这个偏差之和,咱们能够这样表示:

$\sum_f{\Bbb {I}}(h(x){\neq}f(x))$ = $2^{|\cal{X}|-1}$

其中 ${\Bbb {I}}$ 为书中的偏差函数,为真则取值 1,假则取值 0;$f$ 为真实的目标函数,对全体 $f$ 求和,即表示这个假设 $h$ 在全部问题集合上的偏差总和。

咱们须要理解的一个核心结论就是:这个结果是一个常数 $2^{|\cal{X}|-1}$,与咱们所使用的假设 $h$ 和 样本 $x$ 都无关。

假设在数据集上的偏差总和指望值

上述表达式针对的是单个样本 $x$ 的,若是将求和扩展到全部“训练集外数据” ${{\cal{X}}-X}$ 上,假设样本 $x$ 在 ${{\cal{X}}-X}$ 上符合分布 $P(x)$ ,则偏差总和指望值为:

$\sum_{{\cal{X}}-X}\sum_fP(x){\cdot}{\Bbb {I}}(h(x){\neq}f(x))$
= $\sum_{{\cal{X}}-X}P(x){\cdot}\sum_f{\Bbb {I}}(h(x){\neq}f(x))$ = $2^{|\cal{X}|-1}\sum_{{\cal{X}}-X}P(x)$

对于上述结论,咱们能够理解为,因为 $h$ 对于任意一个样本 $x$ 作预测的偏差总和都是 $2^{|\cal{X}|-1}$,这个结果与咱们采用哪个样本 $x$ 是无关的。也就是说,无论 $x$ 在 ${{\cal{X}}-X}$ 上符合怎样的分布,$\Bbb {I}$ 与 $x$ 无关,所以上述计算公式,能够将关于 $x$ 和 $\Bbb {I}$ 的部分提取出来分别求和,最终获得 $2^{|\cal{X}|-1}\sum_{{\cal{X}}-X}P(x)$。

所以对 $x$ 求 $\sum$ 后,咱们的结论进一步变成:对于任意一个假设 $h$,在全部问题集合面前,对训练集外数据的预测偏差总和的指望值是同样的,都是 $2^{|\cal{X}|-1}\sum_{{\cal{X}}-X}P(x)$,这个结果与假设 $h$ 无关。

算法的偏差指望值

最后咱们终于能够回到“没有免费午饭”理论所讨论的真正对象,即一个算法的性能。前面已经提到过,在同一个问题之下,一个算法 $\cal{L_a}$​,可能会训练出不一样的假设 $h$,这一点书中的描述方式是,一个算法 ,基于训练数据集 $X$,它训练出的假设 $\cal{h}$ 是符合分布 $P(h|X,\cal{L_a})$ 的。

前面的结论已经告诉咱们,对于任意一个假设 $h$,在全部问题集合面前,预测偏差总和的指望值是同样的,与 $h$ 无关。既然如此,那么无论一个算法根据什么样例数据,最终训练出的假设 $h$ 是什么,在全部问题的集合面前,这些假设的最终性能都是同样的,偏差总和的指望值都是 $2^{|\cal{X}|-1}\sum_{{\cal{X}}-X}P(x)$。所以对于一个算法而言,它的偏差指望值也是 $2^{|\cal{X}|-1}\sum_{{\cal{X}}-X}P(x)$,由于偏差与它训练出来的假设 $h$ 无关。

从数学公式的角度看,一个算法的偏差指望值,就是对它所能训练出来的全部 $h$ 的偏差求指望值,因而能够用下面的公式表示:

$\sum_h\sum_{{\cal{X}}-X}\sum_fP(h|X,{\cal{L_a}}){\cdot}P(x){\cdot}{\Bbb {I}}(h(x){\neq}f(x))$
= $\sum_h(h|X,{\cal{L_a}}){\cdot}\sum_{{\cal{X}}-X}P(x){\cdot}\sum_f{\Bbb {I}}(h(x){\neq}f(x))$ = $1{\cdot}\sum_{{\cal{X}}-X}P(x){\cdot}\sum_f{\Bbb {I}}(h(x){\neq}f(x))$ = $2^{|\cal{X}|-1}\sum_{{\cal{X}}-X}P(x)$

这个结论就是书中的最终结论,即对于一个算法 $\cal {L_a}$,它所训练出来的全部可能的假设 $h$,在全部问题集合上的偏差指望值是同样的,为 $2^{|\cal{X}|-1}\sum_{{\cal{X}}-X}P(x)$

总结

上面这个复杂公式,即为书中给出的数学表达式,只是我把三个求和符号 $\sum$ 按照我我的的理解方式调换了一下顺序。其中我认为最重要的就是最内层求和,即一个假设 $h$,在单同样本 $x$ 上作预测,在全部问题集合上的偏差总和:

$\sum_f{\Bbb {I}}(h(x){\neq}f(x)) = 2^{|\cal{X}|-1}$

该结果与所使用的假设 $h$ 和样本 $x$ 都无关。所以咱们再对全体 $h$ 和 $x$ 求指望值,那三个 $\sum$ 能够分别单独求和, 感性的认知就是,无论 $h$ 在某一算法 $\cal {L_a}$ 训练下的分布如何,也无论 $x$ 在样本空间 ${{\cal{X}}-X}$ 下的分布如何,最终的指望值都是 $2^{|\cal{X}|-1}\sum_{{\cal{X}}-X}P(x)$,是一个常数。事实上,若是咱们把 $x$ 的求和范围扩展到全体样本空间 ${\cal {X}}$,则最终的指望值为 $2^{|\cal{X}|-1}\sum_{\cal{X}}P(x)$ = $2^{|\cal{X}|-1}$,这是一个更简洁的结果。

这也就是“没有免费午饭”定理所要最终阐述的结论,即无论任何算法,它们会训练出怎样的假设(模型),若是假设全体问题集合的分布是均匀的,那么假设与假设之间就不存在任何优劣之分,算法与算法之间也不存在任何优劣之分,它们的性能指望值都是相等的。固然,必须注意这个结论的前提,就是全体问题,以及它们的分布是均匀的,地位均等,才能推出全部假设和算法的的地位也均等。

可是在现实应用中,咱们评估一个算法或者假设的性能,不会把它应用在全部问题上作测试,这显然是不合理的。任何算法和假设都有其特定的适用场景,咱们关心的是它们在本身适配的场景上,即在某些问题上,可否表现出最优异的性能。

相关文章
相关标签/搜索