热门标签 | 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中无限条的线),我们会在接下来章节重点研究解决。


推荐阅读
  • 计算机学报精选论文概览(2020-2022)
    本文汇总了2020年至2022年间《计算机学报》上发表的若干重要论文,旨在为即将投稿的研究者提供参考。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文详细介绍了如何在Spring框架中设置事件发布器、定义事件监听器及响应事件的具体步骤。通过实现ApplicationEventPublisherAware接口来创建事件发布器,利用ApplicationEvent类定义自定义事件,并通过ApplicationListener接口来处理这些事件。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 使用TabActivity实现Android顶部选项卡功能
    本文介绍如何通过继承TabActivity来创建Android应用中的顶部选项卡。通过简单的步骤,您可以轻松地添加多个选项卡,并实现基本的界面切换功能。 ... [详细]
  • 本周三大青年学术分享会即将开启
    由雷锋网旗下的AI研习社主办,旨在促进AI领域的知识共享和技术交流。通过邀请来自学术界和工业界的专家进行在线分享,活动致力于搭建一个连接理论与实践的平台。 ... [详细]
  • 机器学习实践:逻辑回归与过拟合控制
    本文深入探讨了逻辑回归在机器学习中的应用,并详细解释了如何通过正则化等方法来有效避免模型的过拟合问题。 ... [详细]
  • Bootstrap Paginator 分页插件详解与应用
    本文深入探讨了Bootstrap Paginator这款流行的JavaScript分页插件,提供了详细的使用指南和示例代码,旨在帮助开发者更好地理解和利用该工具进行高效的数据展示。 ... [详细]
  • flea,frame,db,使用,之 ... [详细]
  • 本文详细介绍了Elasticsearch中的分页查询机制,包括基本的分页查询流程、'from-size'浅分页与'scroll'深分页的区别及应用场景,以及两者在性能上的对比。 ... [详细]
  • 如何高效解决Android应用ANR问题?
    本文介绍了ANR(应用程序无响应)的基本概念、常见原因及其解决方案,并提供了实用的工具和技巧帮助开发者快速定位和解决ANR问题,提高应用的用户体验。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 管理UINavigationController中的手势返回 - Managing Swipe Back Gestures in UINavigationController
    本文介绍了如何在一个简单的闪存卡片应用中实现平滑的手势返回功能,以增强用户体验。 ... [详细]
  • 协程作为一种并发设计模式,能有效简化Android平台上的异步代码处理。自Kotlin 1.3版本引入协程以来,这一特性基于其他语言的成熟理念,为开发者提供了新的工具,以增强应用的响应性和效率。 ... [详细]
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社区 版权所有