为什么机器能够学习——PAC Learnability
机器学习中,我们根据训练集训练一个模型,来对测试数据进行预测。通常我们并不关心模型在训练集上的好坏(即训练误差,in sample error),举个简单例子,我们想要根据前六个月股市行情训练一个模型来对未来股市走向进行预测,即使我们的算法在过去的数据上做的再精准都没有任何意义,我们希望模型在未来某一天能够预测的准,这样我们才能赚大钱。因此我们更着重于其在从未见过的数据(测试集)上的正确率(即泛化误 差,generalization error、out sample error)。因为泛化误差从整体上告诉我们 模型表现的好坏,这是我们事先不知道的一个参数, 正是由于不知道,所以我们才要估计它, 这也是机器学习的核心任务。初看起来,这个问题有点无从下手, 因为我们没办法知道输入空间的分布,因此也没办法估计泛化误差。不过,别忘了我们手头上有一笔训练数据,我们要根据这笔资料从假设集中挑一个假设出来,对 测试数据进行分类。一个很自然的想法是,我们可以挑训练误差最小的那个假设,这点很容易理解,训练误差小的假设泛化误差也应该比较小,也就是说我们挑出来 的假设和真实的target function比较接近。那么这个想法是正确的吗? 一定意义上来说,是对的。不然也不会有经验风险最小化(ERM)算法了。ERM是说从假设集中挑一个使得训练误差最小的那个假设h。数学上定义如下:
下
面说明为什么这个方法可行。统计学里,大数定理家族有个著名的不等式——Hoeffding's
equality。这个不等式的背景是,假设有一组独立同分布的随机变量$Z_1,\ldots,Z_m$,它们都服从Bernoulli分布,
即$P(Z_i=1)=\phi,
P(Z_i=0)=1-\phi$。我们想通过这组变量的均值$\hat{\phi}\frac{1}{m}\sum_{i=1}^m
Z_i$来估计参数$\phi$的值。Hoeffding不等式从概率意义上刻画了估计值和参数值的接近程度:
\[ P(|\hat{\phi}-\phi|<\epsilon)\leq 2\exp{-2\epsilon^2 m} \]
其
中,$\epsilon>0$是一个误差限,$m$是训练集中的样例个数。这个不等式告诉我们,我们的估计和真实值得差距相差很大的概率很小,也就
是说二者接近的概率很大。因此我们可以说,$\hat{\phi}=\phi$是PAC(probably approximate
correct,可能近似正确)的。PAC这个术语很有意思,他不能打包票说二者一定是等的,他只能保证大多数情况下是这样;而这个“等”只是越等,即相
差很近但不一定完全一样,例如我投一百次硬币,最后的频率可能是0.51或者是0.49,接近0.5但不会相等。有了Hoeffding不等式的理论基
础,我们想把这个刻画参数估计和真实值接近程度的方法套用到学习问题上去。
为了能够套用Hoeffding不等式到学习问题上,我们需要做出一些
假设:
给定一个假设h,我们认为h在一个样例x上与类标号y是否一致是一个服从Bernoulli分布的随机变量,也记为Z,即$Z=I[h(x)\neq
y]=\mu$,这里$\mu$可以认为是泛化误差。我们进一步假设训练集的样本是独立同分布采样的,那么$Z_1,Z_2,...,Z_m$是一组
iid且服从Bernoulli分布的随机变量,它们的平均即训练误差(记为$\nu$)实际上就是对泛化误差$\mu$的一个估计。
根据Hoeffding不等式有:
\[P(|\nu-\mu|<\epsilon)\leq 2\exp{-2\epsilon^2 m} \]
根
据PAC理论,$\nu$和$\mu$离得很近,而且随着样本数的增加,它们的距离会越来越靠近,
如果此时训练误差$\nu$很小,那么我们可以说泛化误差$\mu$也很小是一个PAC的事件,泛化误差很小说明什么?说明我们的假设h和目标函数f真的
长得很像($h= f$ is PAC)。
至此,我们就证明了ERM确实是可行的, 那么我们就能高枕无忧了吗?今天我们选取一个假设,它的训练误差很低甚至接近于0,就能说它的泛化误差一定很低吗? 答案是否定的。 如果这个命题成立,也不会有所谓的overfitting了。
Hoeffding
不等式只告诉我们,我们抽一个样本,有很大概率抽到一个好的样本(这里好的样本指的是
训练误差和泛化误差很接近);而抽到一个坏的样本(两个误差相差很远,特指过拟合的情况,训练误差很小而泛化误差很大)的概率有一个上限且很小,
但并不等于说抽到一个bad sample就是不可能的(实际上有可能,只是概率非常小),如果不幸抽到了bad sample,
那么恭喜你,你可以去买彩票了。那么如何避免这种overfitting的产生呢?
其中一个选择是增加样例数,随着样例数的增加,Hoeffding不等式右侧的上限值会越来越小, 于是乎我们抽到bad sample的概率也就越来越小了,我们更有把握说我们的模型不容易过拟合了。
上
面说到的bad sample是相对于一个hypothesis而言的,对于每个不同的hypothesis,可能的bad sample都不同。
那么给定一个训练集,我们在假设空间中的选择是有限制的,因为我们不知道哪个假设在这个数据集上会overfit,因此在选择假设的过程可能会踩到雷。有
的时候,踩到雷是不可避免的,因为我们没有选择数据集的权利。但我们可以做的事情是 估计踩到雷的概率上限是多少。这里我们只假设
假设空间有限,且大小为K。“踩到雷”这件事从集合论的角度来讲就是 至少存在一个假设$h_i\in
\mathcal{H}$,使得$|\nu_{h_i}-\mu|>\epsilon$发生。我们记事件$A_i=|\nu_{h_i}-
\mu|>\epsilon$。利用联合界定理,我们可以推导其概率上限为
\[ P(\exists h\in
\mathcal{H},|\nu_h-\mu|>\epsilon) = P(\bigcup_{i=1}^{K} A_i) \leq
\sum_{i=1}^K P(A_i)\leq 2K\exp(-2\epsilon^2 m) \]
在假设空间有限的情况下,通过增加样本集大小m,就能减少我们在假设集上踩到雷的几率,从而估计的失真度,减少过拟合现象。
总结一下:这篇文章中我们证明了在加上一些统计学假设(训练集是独立同分布抽样) 且 假设空间是有限的情况下, PAC理论保证了学习是可行的。对于假设空间是无限的情况(比如线性分类器),需要用到VC-dimension来证明其可行性。
为什么机器能够学习——PAC Learnability的更多相关文章
- 机器不学习:CNN入门讲解-为什么要有最后一层全连接
哈哈哈,又到了讲段子的时间 准备好了吗? 今天要说的是CNN最后一层了,CNN入门就要讲完啦..... 先来一段官方的语言介绍全连接层(Fully Connected Layer) 全连接层常简称为 ...
- 理解机器为什么可以学习(二)---Training versus Testing
前边由Hoeffding出发讨论了为什么机器可以学习,主要就是在N很大的时候Ein PAC Eout,选择较小的Ein,这样的Eout也较小,但是当时还有一个问题没有解决,就是当时的假设的h的集合是个 ...
- Query意图分析:记一次完整的机器学习过程(scikit learn library学习笔记)
所谓学习问题,是指观察由n个样本组成的集合,并根据这些数据来预测未知数据的性质. 学习任务(一个二分类问题): 区分一个普通的互联网检索Query是否具有某个垂直领域的意图.假设现在有一个O2O领域的 ...
- 理解机器为什么可以学习(四)---VC Dimension
前面一节我们通过引入增长函数的上限的上限,一个多项式,来把Ein 和 Eout 的差Bound住,这一节引入VC Bound进一步说明这个问题. 前边我们得到,如果一个hypethesis集是有bre ...
- 理解机器为什么可以学习(三)---Theory of Generalization
前边讨论了我们介绍了成长函数和break point,现在继续讨论m是否成长很慢,是否能够取代M. 成长函数就是二分类的排列组合的数量.break point是第一个不能shatter(覆盖所有情形) ...
- PAC学习理论:机器学习那些事
参考翻译,有大量删除和修改,如有异议,请拜访原文.一定要看英文原文!!!. 本文转载于:深度译文:机器学习那些事 英文[原题]A Few Useful Things to Know About Mac ...
- Generalizing from a Few Examples: A Survey on Few-Shot Learning 小样本学习最新综述 | 三大数据增强方法
目录 原文链接:小样本学习与智能前沿 01 Transforming Samples from Dtrain 02 Transforming Samples from a Weakly Labeled ...
- 【腾讯Bugly干货分享】深度学习在OCR中的应用
本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5809bb47cc5e52161640c5c8 Dev Club 是一个交流移动 ...
- Deep Learning(深度学习)学习笔记整理
申明:本文非笔者原创,原文转载自:http://www.sigvc.org/bbs/thread-2187-1-3.html 4.2.初级(浅层)特征表示 既然像素级的特征表示方法没有作用,那怎样的表 ...
随机推荐
- springmvc + spring + ibatis + mysql
1.spring mvc 官网下载:https://repo.spring.io/webapp/#/artifacts/browse/simple/General/libs-release-local ...
- ASP.NET MVC4 新手入门教程之一 ---1.介绍ASP.NET MVC4
你会建造 您将实现一个简单的电影清单应用程序支持创建. 编辑. 搜索和清单数据库中的电影.下面是您将构建的应用程序的两个屏幕截图.它包括显示来自数据库的电影列表的网页: 应用程序还允许您添加. 编辑和 ...
- 简单来看看JavaBean
1.什么是JavaBean? JavaBean是一个遵循特定写法的java类. 用作JavaBean的类必须有一个公共的,无参数的构造方法. JavaBean的属性与普通的Java类的属性的概念一样, ...
- dokcer安装并开机自启动服务
linux内核最好是3.10以上.不过本次使用的是centos6.5 内核2.6 1.yum -y install docker-io 如果出现: 需要安装yum源: 3.service docker ...
- vue-cli项目打包多个与static文件同级的静态资源目录(copy-webpack-plugin插件的使用)
场景 业务要求能够直接通过 "域名+/file"的方式访问静态资源的html,然而产品绝对static暴露在url中不好看又不能直接将html放在static中.所以想到了既然st ...
- laravel验证码
登录验证码 1.首先,进入https://github.com/mewebstudio/captcha,根据captcha上的使用方法一步步来实现验证码的安装,因为是laravel5.7,所以选择了c ...
- java压缩与解压
一 概述 1.目录进入点 目录进入点是文件在压缩文件中的映射,代表压缩文件.压缩文件时,创建目录进入点,将文件写入该目录进入点.解压时,获取目录进入点,将该目录进入点的内容写入硬盘指定文件. 如果目录 ...
- Spring Boot Async异步执行
异步调用就是不用等待结果的返回就执行后面的逻辑,同步调用则需要等带结果再执行后面的逻辑. 通常我们使用异步操作都会去创建一个线程执行一段逻辑,然后把这个线程丢到线程池中去执行,代码如下: Execut ...
- Tomcat启动报错java.net.AbstractPlainSocketImpl(java/net/AbstractPlainSocketImpl.java:178:-1)Struts在网络复杂情况下启动报错解决办法
SSH项目 在网络复杂的情况(具体规律未知)下,Tomcat启动时,报如下错误: [ERROR] 2014-08-12 14:52:58,484 [org.apache.struts2.dispatc ...
- python3 报错:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 201: invalid continuation byte
代码: # -*- coding:utf-8 -*- from urllib import request resp = request.urlopen('http://www.xxx.com') p ...