NFL定理及其对学习算法的实质意义

不羁岁月 提交于 2019-12-04 03:54:15

上一篇中的NFL定理的简化论述

定理表述: 无论学习算法\(\zeta_a\)多“聪明”以及\(\zeta_b\)多“笨拙”,他们的误差期望值是相同的

定理假设:所有“问题”出现的机会相同,或者所有问题同等重要。以及我们希望学习的真实目标函数f是均匀分布的

定理的简化论证

1.假设样本空间\(\chi\)和假设空间H,令P(h|X,\(\zeta_a\))代表算法\(\zeta_a\)基于训练数据X产生假设h的概率,再令f代表我们希望学习的真实目标函数。令\(E_{ote}\)\(\zeta_a\)的训练集外误差产生概率的期望值(\(E_{ote}\)的下标ote指的是Off-training error)

2.令\(\Psi(.)\)表示一个特征函数,当(.)中的.为布尔值1时,\(\Psi(.)=1\)否则\(\Psi(.)=0\)

3.对假设空间H里的任何一个h来说,误差期望\(E^1\)=\(\sum_{x\in\chi-X}\)P(x)\(\Psi(h(x) \ne f(x))\)P(\(h|X,\zeta_a\))。这是因为,当h(x) = f(x)时,这样误差出现的概率并不需要算作期望值的一部分;而当\(h(x)\ne f(x)\)时,误差出现概率才需要记入。因此,我么可以得到对某一确定的真实的目标函数f而言,

\(E_{ote}(\zeta_a|X,f)=\sum_h\sum_{x\in\chi-X}P(x)\Psi(h(x)\ne f(x))P(h|X,\zeta_a)\)

那么,相应的,可以得到对所有真实的目标函数f而言,有如下结论:

\(\sum_{f}E_{ote}=\sum_{f}\sum_{h}\sum_{x\in\chi-X}P(x)\Psi(h(x)\ne f(x))P(h|X,\zeta_a)\)

这就是一般的学习算法\(\zeta_a\)对训练集外的所有样本以及所有真实目标函数f的误差误差概率期望

  1. Wolpert 和 Macready 证明了对所有的学习算法\(\zeta_i\),满足定理假设情况下\(\sum_fE_{ote}\)值都是相等的。(因此这一定理也被称为是“No Free Lunch Theorem”,即"没有免费午餐"理论)。关于定理的严格证明,可以自学参考相关文献。

定理在二分类下的特殊情形(也就是二分类下的说明)

若考虑的问题是二分类问题,则目标真实函数的值域被限定在Y={0,1}上,那么f即是一个\(\chi \to {0,1}\)的映射关系,若对可能的f按照均匀分布对误差求和,则有

\(\sum_f E_{ote}(\zeta_a|X,f)=\sum_f\sum_h\sum_{x\in\chi-X}P(x)\Psi(h(x)\ne f(x))P(h|X,\zeta_a)\)

该式子的意义是,对每个真实目标函数f而言,每个假设h,对每个训练集外的样本x求误差期望。因此也可以看作,对每个训练集外的样本x而言,它以P(x)的概率,对每个假设h,以P(h|X,\(\zeta_a\))的概率对所有真实目标函数f求误差期望。因此得到等价的下式:

\(\sum_fE_{ote}(\zeta_a|X,f)=\sum_{x\in\chi-X}P(x)\sum_hP(h|X,\zeta_a)\sum\Psi(h(x)\ne f(x))\)

\(=\sum_{x\in\chi-X}P(x)\sum_hP(h|X,\zeta_a)\frac{1}{2}2^{|\chi|}\)(这一步有离散数学基础的应该都能明白)

\(=\frac{1}{2}2^{|\chi|}\sum_{x\in\chi-X}P(x)\sum_hP(h|X,\zeta_a)\)(式子等价变形,将常数提到最前面)

\(=2^{|\chi|-1}\sum_{x\in\chi-X}P(x)*1\) (根据\(P(h|X,\zeta_a)\)的含义可以得到这一步的化简,\(P(h,X,\zeta_a)\)指的是算法\(\zeta_a\)基于训练集X产生假设h的概率,那么对所有假设h而言自然综合就是1,这是概论了的公理化定义里包含的)

而上式二分类的特殊情形下的推导也正显示出,总误差和学习算法无关。(非二分类也可类似推导)

小结

​ NFL定理并没有否定学习算法本身的好坏。NFL定理一个重要前提是:所有“问题”出现的机会相同,或者所有“问题”同等重要。但实际情况下并不是这样。我们总是关注我们当下要解决的问题,这就不符合假设了。另外,在二分类特例下,我们假设f是均匀分布的,实际情况下也并非这样。

因此,NFL定理的本质,不是想说明学习算法没有好坏之分,而是想说明,脱离具体问题,空泛谈论什么是好的学习算法本身是毫无意义的。因为那样他们的误差期望是相同的。要讨论某个学习算法的相对优劣,必须针对具体的学习问题。在后面的机器学习过程中,这是不可忽略的一点。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!