热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

机器学习基石(四):概率角度分析机器学习的可行性

一、前言什么是机器学习的可行性?算法是否具备学习能力。衡量学习能力是通过在训练数据集之外的数据来进行验证。这个学习能力,也就是算法的泛化能力。在机器学

一、前言

什么是机器学习的可行性?
算法是否具备学习能力。衡量学习能力是通过在训练数据集之外的数据来进行验证。这个学习能力,也就是算法的泛化能力。在机器学习中,我们的目标是要寻找高泛化能力的模型。

二、从概率论到机器学习

构建一个弹珠罐子模型,其中装满绿色和橘色弹珠,从中抓一把个数为N的弹珠作为样本。如下图所示。

在这里插入图片描述
用数学语言来描述上图中ν\nuνμ\muμ的关系,就是著名的霍夫丁不等式(Hoeffding’s Inequality)

P[∣ν−μ∣>ϵ]≤2exp(−2ϵ2N)(1)P[|\nu-\mu| > \epsilon]\le 2 exp(-2\epsilon^2N) \tag 1P[νμ>ϵ]2exp(2ϵ2N)(1)

公式(1)说明,ν\nuνμ\muμ是否相似,与μ\muμ的具体数值无关,只与样本容量N,容忍度ϵ\epsilonϵ有关。


接下来,我们从弹珠罐子模型转到机器学习模型。

在这里插入图片描述
如上图所示的一一对应。
在罐子里,我们不知道橘色真实占据全部弹珠的比例,同样,对于某个固定的假设h(x)h(x)h(x),我们不知道是否就是目标函数f(x)f(x)f(x)

样本空间中的每一个样本点x∈X对应于bin中的每一个marble,当假设h(x)和f(x)不一样时,我们就把球漆成橘色;一样时,我们就把球漆成绿色。

从球罐中抽取的size-N marble对应到学习问题中的训练集D,采样方式均为iid采样。

球罐模型的目的是用抽样计算出的比例估计真实的比例,而学习问题中我们的目的是用样本内误差in sample error估计样本外误差out sample error。

对于某个固定的h假设,我们可以将样本内外误差做如下定义:

Eout(h)=εx→P[h(x)≠f(x)]E_{out}(h)=\varepsilon_{x\rightarrow P}[h(x)\ne f(x)]Eout(h)=εxP[h(x)=f(x)]

Ein(h)=1N∑n=1N[h(xn)≠yn]E_{in}(h)=\frac{1}{N}\sum_{n=1}^N[h(x_n)\ne y_n]Ein(h)=N1n=1N[h(xn)=yn]

其中EoutE_{out}Eout表示out-of-sample Error,整个P中犯错误的概率,样本外误差,期望损失;EinE_{in}Ein表示in-sample Error,在样本空间N中犯错误的概率,样本内误差。

现在,我们就可以使用EoutE_{out}EoutEinE_{in}Ein重写霍夫丁不等式:
P[∣Ein(h)−Eout(h)∣>ϵ]≤2exp(−2ϵ2N)(2)P[|E_{in}(h)-E_{out}(h)| > \epsilon]\le 2 exp(-2\epsilon^2N) \tag 2P[Ein(h)Eout(h)>ϵ]2exp(2ϵ2N)(2)

同样,在使用样本求出来的EinE_{in}Ein,在样本数量N足够大的情况下,也能近似表示EoutE_{out}Eout,前提是都是针对该固定的h假设。

所以在手中拿着fixed的假设h的时候,如果Ein(h)E_{in}(h)Ein(h)很小的话,根据公式(2)也可以PAC(probably approximately correct)的说明Eout(h)E_{out}(h)Eout(h)也很小。也就说明,这时候的h和f很接近。

但是,截止目前为止,我们所有推论仅仅用于验证h是否是一个好的假设。至于固定的这个hhh,我们没办法保证他一定会生成很小的Ein(h)E_{in}(h)Ein(h)

三、在假说集合中挑选h

在上一节的基础上做拓展。我们一个假说,对应一个bin,那么有很多假说时候,就表示我们有很多bin。很容易做出推断,判断某个假说是否为好的假说,就是在看Ein(hi)E_{in}(h_i)Ein(hi)是否足够小。
在这里插入图片描述

真的是这样吗?

如上图所示,在假设hMh_MhM下,我们get到全为绿色的球,说明使用该假说的话,能够达到100%的准确率。但是从上帝视角来看,该EinE_{in}EinEoutE_{out}Eout还差很多。

接下来,我们来量化分析下,在多种h假设中选取最佳h的情境,对应的数学模型。

首先,定义坏的sample。

如果这份样本使得EinE_{in}EinEoutE_{out}Eout相差很多,我们将这份sample称为 BAD sample

霍夫丁不等式告诉我们,对于某个fixed h,出现BAD sample的概率是有限的。如下图所示:
在这里插入图片描述

但是,当整个学习过程中存在选择的时候,我们往往会选择对应EinE_{in}Ein小的h,这其中就有了偏见,不再公平。

用铜板举例子:

用铜板丢正反面,一次试验(一个固定的h)的时候,五次都为正面的概率为1/32, 如果重复150次试验(150个h),那么其中出现五次正面的概率高达99%。如果我们在其中挑选最好的那个h,基本拿到5次正面的那个h的概率就是99%以上。

我们来看在很多假设h的时候,如何定义bad sample
在这里插入图片描述
只要存在h使得该sample属于bad sample,我们就将其定义为bad sample

那么在算法可以自由在h中做挑选的时候,选中的概率bad sample的概率计算方法如下:
在这里插入图片描述

综上,如果∣H∣=M|H|=MH=M,其中M有限(H假设空间的h个数有限),N足够大,那么我们总能找到h,使得Ein(h)E_{in}(h)Ein(h)最接近0,同样对应Eout(h)E_{out}(h)Eout(h)也最接近0
这说明机器学习在一定范围内是可行的,我们的确能够学到一些东西,使得算法拥有对应的泛化能力。

四、总结

在这里插入图片描述
上图中黑色实线流程,与之前机器学习流程没有差别。

虚线部分,就是本章的重点,左侧指向training examples表示产生样本的方式。右侧的x表明,用于验证算法g的数据。

同样说明,用于测试和用于训练的数据,都是来源于同一个distribution。

最后,本节面向的对象是假说集hypothesis set H中容量有限的(finited M),如果M无限多的情况怎么办(LPA中无限条的线),我们会在接下来章节重点研究解决。


推荐阅读
  • 贪心策略在算法设计中的应用与优化
    贪心算法在算法设计中具有广泛的应用,特别是在解决优化问题时表现出色。本文通过分析经典问题“买卖股票的最佳时机II”,探讨了贪心策略的基本原理及其在实际问题中的应用。通过实例分析,展示了贪心算法如何通过局部最优选择逐步达到全局最优解,并讨论了其在时间和空间复杂度上的优势。此外,还提出了一些优化方法,以提高算法的效率和适用性。 ... [详细]
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
  • 本文深入探讨了二叉树路径和问题的算法优化方法。具体而言,给定一棵二叉树,需要找出所有从根节点到叶节点的路径,其中各节点值的总和等于指定的目标值。通过详细分析和优化,提出了一种高效的解决方案,并通过多个样例验证了其有效性和性能。 ... [详细]
  • 清华大学出版社 | 杨丹:基于MATLAB机器视觉的黑色素瘤皮肤癌检测技术及源代码分析(第1689期)
    清华大学出版社 | 杨丹:基于MATLAB机器视觉的黑色素瘤皮肤癌检测技术及源代码分析(第1689期) ... [详细]
  • 希尔伯特曲线是一种能够完全填充平面正方形的分形曲线,最早由数学家大卫·希尔伯特于1891年提出。该曲线具有二维豪斯多夫维数,表明其能够完全覆盖平面区域。当所填充的正方形边长为1时,第n阶希尔伯特曲线的总长度为2^n。本文详细探讨了希尔伯特曲线的空间填充算法实现,并对其在多个实际应用中的性能进行了深入分析。 ... [详细]
  • C# .NET 4.1 版本大型信息化系统集成平台中的主从表事务处理标准示例
    在C# .NET 4.1版本的大型信息化系统集成平台中,本文详细介绍了主从表事务处理的标准示例。通过确保所有操作要么全部成功,要么全部失败,实现主表和关联子表的同步插入。主表插入时会返回当前生成的主键,该主键随后用于子表插入时的关联。以下是一个示例代码片段,展示了如何在一个数据库事务中同时添加角色和相关用户。 ... [详细]
  • 本文深入解析了Java 8并发编程中的`AtomicInteger`类,详细探讨了其源码实现和应用场景。`AtomicInteger`通过硬件级别的原子操作,确保了整型变量在多线程环境下的安全性和高效性,避免了传统加锁方式带来的性能开销。文章不仅剖析了`AtomicInteger`的内部机制,还结合实际案例展示了其在并发编程中的优势和使用技巧。 ... [详细]
  • 本文探讨了 Java 中 Pair 类的历史与现状。虽然 Java 标准库中没有内置的 Pair 类,但社区和第三方库提供了多种实现方式,如 Apache Commons 的 Pair 类和 JavaFX 的 javafx.util.Pair 类。这些实现为需要处理成对数据的开发者提供了便利。此外,文章还讨论了为何标准库未包含 Pair 类的原因,以及在现代 Java 开发中使用 Pair 类的最佳实践。 ... [详细]
  • AIX编程挑战赛:AIX正方形问题的算法解析与Java代码实现
    在昨晚的阅读中,我注意到了CSDN博主西部阿呆-小草屋发表的一篇文章《AIX程序设计大赛——AIX正方形问题》。该文详细阐述了AIX正方形问题的背景,并提供了一种基于Java语言的解决方案。本文将深入解析这一算法的核心思想,并展示具体的Java代码实现,旨在为参赛者和编程爱好者提供有价值的参考。 ... [详细]
  • 【图像分类实战】利用DenseNet在PyTorch中实现秃头识别
    本文详细介绍了如何使用DenseNet模型在PyTorch框架下实现秃头识别。首先,文章概述了项目所需的库和全局参数设置。接着,对图像进行预处理并读取数据集。随后,构建并配置DenseNet模型,设置训练和验证流程。最后,通过测试阶段验证模型性能,并提供了完整的代码实现。本文不仅涵盖了技术细节,还提供了实用的操作指南,适合初学者和有经验的研究人员参考。 ... [详细]
  • 本文详细介绍了在C#编程环境中绘制正方形图像的技术和实现方法,通过具体示例代码帮助读者理解和掌握相关技巧。内容涵盖从基础概念到实际应用的各个方面,适合初学者和有一定经验的开发者参考。希望对您的C#学习之旅有所帮助,并激发您进一步探索的兴趣。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • 探索偶数次幂二项式系数的求和方法及其数学意义 ... [详细]
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
  • 在HTML5应用中,Accordion(手风琴,又称抽屉)效果因其独特的展开和折叠样式而广泛使用。本文探讨了三种不同的Accordion交互效果,通过层次结构优化信息展示和页面布局,提升用户体验。这些效果不仅增强了视觉效果,还提高了内容的可访问性和互动性。 ... [详细]
author-avatar
刘华兰2011_423
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有