为什么机器能够学习——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.初级(浅层)特征表示 既然像素级的特征表示方法没有作用,那怎样的表 ...
随机推荐
- JQuery对数组的一些操作总结
JQuery对数组的处理非常便捷并且功能强大齐全,一步到位的封装了很多原生js数组不能企及的功能.下面来看看JQuery数组的强大之处在哪. $.each(array, [callback]) 遍历 ...
- ios下虚拟键盘出现"搜索"字样
最近在开发过程中,发现用户输入想要检索的内容,弹出虚拟键盘,在安卓机上虚拟键盘最右下角会有‘搜索’字样,而ios上虚拟键盘最右下角只有‘换行’字样, 这样用户体验就会大打折扣. 安卓机上虚拟键盘 io ...
- Spring Cloud个组件原理
引言 面试中面试官喜欢问组件的实现原理,尤其是常用技术,我们平时使用了SpringCloud还需要了解它的实现原理,这样不仅起到举一反三的作用,还能帮助轻松应对各种问题及有针对的进行扩展.以下是 课程 ...
- 网站大于10M的视频不能播放
IIS配置的网站,添加了几个mp4视频,有个可以正常播放,有的却不加载不出来,提示错误: net::ERR_CONNECTION_ABORTED 网上有文章说是由于安全狗bug导致,下载安装一个补丁覆 ...
- java 从Excel 输出和输入
本文实现了使用java 从数据库中获得对象,并存入集合中, 然后输出到Excel,并设置样式 package com.webwork; import java.io.File; import java ...
- [转]纯js导出json到excel(支持chrome)
转自:http://blog.csdn.net/educast/article/details/52775559 function JSONToExcelConvertor(JSONData, Fil ...
- Linux基础之-利用shell脚本实现自动监控系统服务
目的:监控集群内nginx及nfs服务运行是否正常,如任一服务异常,则发送邮件通知用户 条件: 1. 主机及子机IP地址,hostname已确定: 2. 主机与子机能够免密通讯,即基于密匙通讯(相关命 ...
- Oracle数据库中设置表字段为自动序列
--创建序列 increment ; --创建触发器 create or replace trigger zonecode_trigger before insert on org_HospitalZ ...
- JAVA的静态方法,静态变量,静态类。
静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明. (1)Java静态对象和非静态对象有什么区别? 比对如下: 静态对象 ...
- 从尾到头打印链表(C++和Python 实现)
(说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 输入一个链表的头结点, 从尾到头反过来打印出每个结点的值. ...