IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 没有免费午餐定理No Free Lunch Theorem -> 正文阅读

[人工智能]没有免费午餐定理No Free Lunch Theorem

? ? ? ? 不得不说,网上博客千千万,在技术方面,我承认这些博客的重要性。然而,只要和机器学习理论挂钩,似乎都讲得不清不楚,大家都是各自地抄,抄书籍,抄论文,抄别人的博客或者直接翻译,或者讲故事一样描述,几乎没什么太深入的理解,给人的感觉是“哎?似乎是这样,我好像有一点懂了”,然后就没了,其实看这样的博客简直就是在浪费时间,凡是不能一次性地搞懂一点内容,都是扯犊子。总之,看了网上的关于机器学习博客的文章,我感觉很不理解,很困惑,很迷茫。所以我就推导了一遍周志华书籍《机器学习》没有免费午餐定理(No Free Lunch Theorem)的一个简单证明过程。

一、讲故事一样的描述

? ? ? ? 讲故事虽然并不严格,然而它还是有必要用这样的思维去描述这个定理。其用途是给别人普及,同时也方便自己记忆。

? ? ? ? 那么,如何像讲故事一样地描述没有免费午餐定理呢?最直观的,我们吃午饭都是要付钱的,哪怕有人请客,那请你吃饭的人也帮你付了钱。但这个似乎跟机器学习并没有半吊子关系。

? ? ? ? 在机器学习领域里面,有一个雷打不动的定理,即没有免费午餐定理。它被描述为:没有一个学习算法可以在所有情况下总是产生最准确的模型。也就是说,不管采用何种学习算法,至少存在一个模型,比随机猜测算法得到的模型要差。这个定理的最重要意义是,在脱离实际意义情况下,空泛地谈论哪种算法好毫无意义,要谈论算法优劣必须针对具体学习问题。所以,我们在比较学习算法的时候,需要针对具体的学习问题。针对这个问题,学习算法a可能更好;而针对那个问题,学习算法b可能更好。

? ? ? ? 周志华在他的机器学习书籍里面说到,实际上在很多时候,我们只关注自己正在试图去解决的问题并它找到一个方案,而至于这个方案在其他问题上是否为好方案并不关心。例如,为了快速从A地到达B地,如果我们正考虑的A地是南京鼓楼,B地是南京新街口,那么骑自行车是一个很好的方案;如果A地是南京鼓楼,B地是北京故宫,那么骑自行车显然是一个极其糟糕的方案,但我们对此并不关心。

? ? ? ? 总之一句话,谈论算法的相对好坏,要针对具体的学习问题。而当你的算法在某个问题取得较好的性能时,那得注意了,请你说说你为这这么好的性能付出了什么代价?

二、相对严格的描述及其证明

? ? ? ? 这个定理之所以雷打不动,是因为它是经过严格的数学证明的。下面就顺着周志华机器学习书籍里面的内容,推导一遍其证明过程。

? ? ? ? 首先,我们来看看原文,如下。

? ? ? ? 看着这些公式,确实头都大了。不过不用怕,这充其量也就是高中数学的知识。求和公式、条件概率、均匀分布,这些不都很熟悉吗?我们高中就学过。只要我们把它展开,你就明白为什么会是这样的计算过程了。

? ? ? ? 先从公式(1.1)开始理解吧。

? ? ? ? 先看左边,E_{ote}表示机器学习算法\pounds _{a}的训练集外误差,可以理解为测试集误差(因为测试集是拥有标记信息的,有标记信息才能计算误差,否则不能。由于训练集外读着很别扭,所以后文直接把训练集外的样本所构成的集合当作是测试集);

? ? ? ? 机器学习算法\pounds _{a}能够在训练集X上学习得到多个机器学习模型,而一个模型就是一个假设h,多个假设h便构成机器学习算法\pounds _{a}的假设空间;

? ? ? ? ?f是希望学习得到的目标函数,输入一个样本,经过f,那么就能够得到一个正确的标签。无论这个样本是在训练集上,还是在测试集上;

? ? ? ? 所以,E_{ote}(\pounds_a|X,f)是指给定训练集X和目标函数f,机器学习算法\pounds _{a}的测试集误差。

? ? ? ? 再看右边。有两个求和符号,第一个求和符号是遍历机器学习算法\pounds _{a}在训练集X上所有可能的模型,第二个求和符号遍历所有测试集的样本。然后就和。把右边的两层求和公式展开,然后用另外一种方式化简,最终是可以把两个求和符号进行交换的。其中P(\mathbf{x})是遍历到样本\mathbf{x}的概率,P(h|X,\pounds_a)是机器学习算法\pounds _{a}在训练集X上产生假设h的概率(记住,假设h就是一个模型)。那个指示函数就不必说了,不等于就是假设h预测错,等于就是假设h预测正确。预测正确就不管,错了,就记录,然后加起来,最后构成测试集的误差。

? ? ? ? 现在再来看看公式(1.2)的计算过程。在开始之前,先说一下目标函数f,这里的目标函数不再是固定的目标函数,而是要考虑所有可能的目标函数,这些目标函数也构成一个集合。好了,现在再来理一理思路,有一个训练集X,有一个测试集T,而X\cup T=\chi,?我们设计了一个机器学习算法\pounds _{a},任务是二分类任务。所以如果训练集+测试集有|\chi |个样本,那么可能的目标函数f就会有2^{|\chi |}种个。

? ? ? ? 所以,要求得机器学习算法\pounds _{a}的性能,还需要在公式(1.1)的基础上外加一层求和符号,以遍历所有有可能的目标函数f

? ? ? ? 那么,现在可以正式地推导这个过程了。具体如下

# 推导过程太长了,博客不是很方便看
# 详情见https://download.csdn.net/download/qq_36158230/20246322
# 主要思想:对求和公式展开,重组,利用概率论相关的知识化简

三、一个易于理解的例子

? ? ? ? 看了一长串的计算过程之后,来个直观的例子,那是最舒服的。具体如下:

? ? ? ? 给定\chi=\{\mathbf{x_1}, \mathbf{x_2}, \mathbf{x_3}\},训练集X=\{\mathbf{x_1}, \mathbf{x_2}\},测试集T=\{\mathbf{x_3}\}。那么对于二分类问题:\chi \rightarrow \{0,1\},目标函数f有以下2^{|\chi |}=2^3=8种。

? ? ? ? 给定训练集X=\{\mathbf{x_1}, \mathbf{x_2}\},根据机器学习算法\pounds _{a},得到的假设空间为\{h_1,h_2,h_3,h_4\};?根据机器学习算法\pounds _{b},得到的假设空间为\{h_5,h_6,h_7,h_8\}。方便起见,这里h_i就等于f_i。那么,现在我们利用公式(1.2)计算这两个算法的性能。由于测试集只有一个样例,即\mathbf{x}_3,故P(\mathbf{x}_3)=1

? ? ? ? 对于机器学习算法\pounds _{a},假设每个模型被选中的概率相等,那么

P(h_1|X,\pounds_a)=P(h_2|X,\pounds_a)=P(h_3|X,\pounds_a)=P(h_4|X,\pounds_a)=\frac{1}{4}

? ? ? ? 而机器学习算法\pounds _{a}对应的指示函数的值为

? ? ? ? 利用得出结论之前的公式(即公式(1.2)包含了三个求和符号的式子)计算,得到

E_{ote}(\pounds_a|X,f)=1\times 1\times \frac{1}{4}+1\times 1\times \frac{1}{4}+...+1\times 1\times \frac{1}{4}=4=2^{|\chi|-1}=2^{3-1}=2^2

? ? ? ? 同理,?对于机器学习算法\pounds _{b},假设每个模型被选中的概率相等,那么

P(h_5|X,\pounds_a)=P(h_6|X,\pounds_a)=P(h_7|X,\pounds_a)=P(h_8|X,\pounds_a)=\frac{1}{4}

? ? ? ? 而机器学习算法\pounds _{b}对应的指示函数的值为

? ? ? ? 利用得出结论之前的公式(即公式(1.2)包含了三个求和符号的式子)计算,得到

?E_{ote}(\pounds_b|X,f)=1\times 1\times \frac{1}{4}+1\times 1\times \frac{1}{4}+...+1\times 1\times \frac{1}{4}=4=2^{|\chi|-1}=2^{3-1}=2^2

? ? ? ? 经过计算发现,两个学习算法的训练集外误差竟是一样的。

? ? ? ? 也许有人要站出来问了,你两个算法的假设空间太特殊了,万一这个例子是巧合呢?

? ? ? ? 那好,现在令\{h_1,h_2,h_3,h_4\}=\{f_2,f_4,f_6,f_8\}\{h_5,h_6,h_7,h_8\}=\{f_1,f_3,f_5,f_7\}。继续用上面的方法算一算,结果发现两个机器学习算法的训练集外误差计算结果还是一样的。但是又有人要说了,你的算法的假设还是太特殊了,万一还是巧合呢?

? ? ? ? 好,现在令机器学习算法\pounds _{a}的假设空间为\{h_1,h_2,h_3\}=\{f_2,f_4,f_6\},机器学习算法\pounds _{b}的假设空间为\{h_4,h_5,h_6,h_7,h_8\}=\{f_1,f_3,f_5,f_7,f_8\}。现在再来用上面的方法算一算。这时P(\mathbf{x}_3)=1不变,而

P(h_1|X,\pounds_a)=P(h_2|X,\pounds_a)=P(h_3|X,\pounds_a)=\frac{1}{3}

?\tiny P(h_4|X,\pounds_a)=P(h_5|X,\pounds_a)=P(h_6|X,\pounds_a)=P(h_7|X,\pounds_a)=P(h_8|X,\pounds_a)=\frac{1}{5}

? ? ? ? 此时,这两个机器学习算法对应的指示函数表分别为?

? ? ? ? 它们所对应的训练集外误差分别为

E_{ote}(\pounds_a|X,f)=1\times 1\times \frac{1}{3}+1\times 1\times \frac{1}{3}+...+1\times 1\times \frac{1}{3}=4=2^{|\chi|-1}=2^{3-1}=2^2

?E_{ote}(\pounds_b|X,f)=1\times 1\times \frac{1}{5}+1\times 1\times \frac{1}{5}+...+1\times 1\times \frac{1}{5}=4=2^{|\chi|-1}=2^{3-1}=2^2

? ? ? ? 这时发现它们的计算结果依然是4(通过数指示函数表中“1”的个数,然后乘以P(h|X,\pounds),或者累加计算也行,结果是一样的),真是神奇啊!当然了,你也可以举其他的例子计算一遍,质疑一下这个雷打不动的机器学习定理。不过我推导了一遍计算过程,也用例子算了好几回,反正我是信了。

四、推荐阅读+观看

? ? ? ? 1.(强推)浙大2021-机器学习_哔哩哔哩_bilibili

? ? ? ? 2.浙江大学-研究生机器学习课程-_哔哩哔哩_bilibili

? ? ? ? 3.参考资料第2条

五、结束语

? ? ? ? 码字之余,难免疏漏,欢迎点评指出改正。同时,码字不易,不喜勿喷,文明交流。毕竟是个人理解,所以写的东西很有可能有所疏漏,但是希望大家能够文明交流。爱与尊重。

? ? ? ? 花费两天找了一些资料理解这个没有免费午餐定理,再花费一天时间把我所理解的内容全部写在博客之上。确实,在理解和作笔记的过程,都是相当艰苦的。不过有了一定的理解之后,确实让人恍然大悟,感觉收获良多。一大堆写得很复杂的公式难以让人理解,实际上是由于它的跳跃性真的太大了。如果能够缩短这个跳跃间距,那么学习便不成问题了。可惜的是,论文没有那么多的篇幅给你一步一步地计算。

参考资料

? ? ? ? 1.周志华,机器学习

? ? ? ? 2.Ho, Yu-Chi, and David L. Pepyne. "Simple explanation of the no-free-lunch theorem and its implications."?Journal of optimization theory and applications?115.3 (2002): 549-570.

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 10:51:52  更:2021-07-14 10:57:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/28 12:40:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码