机器学习基石——第5-6讲.Training versus Testing

本栏目(机器学习)下机器学习基石专题是个人对Coursera公开课机器学习基石(2014)的学习心得与笔记。所有内容均来自Coursera公开课Machine Learning Foundations中Hsuan-Tien Lin林轩田老师的讲解。(https://class.coursera.org/ntumlone-002/lecture)

第5讲-------Training versus Testing

从这一讲开始,讲的问题就是属于Why Can Machines Learn的范畴了。

一、Hypothesis set大小的重要性

上一讲的一开始我们说Learning好像不可行,后来我们逐步发现Learning在某些条件下是可行的。这些条件就是,Learning的Data符合统计学意义上的某种分布(因此可以映射为从罐子里抽弹珠这样的问题),另外hypothesis set的选择是有限的。这样看起来Learning是可行的。

过去的四节课,第一节课就是说Learning的目标就是想找到一个g可以尽可能地接近未知的f;第二节课的时候我们不知道怎么做,但是决定先在看过的训练资料上做到尽可能好,也就是想办法让E_in(g) ≈ 0;第三节课我们承认其实是在很特定的情况下做Learning,用批次batch的数据、用supervised监督式的学习、用二元分类等等;第四节课我们终于想办法把E_in(g)和E_out(g)连起来约等于了。那,第二节课做的事情——将E_in(g)弄得越小越好,便就真的实现了我们一开始实现的目标:我希望E_out(g)要很小。

由此可见,Learning的核心已经被拆成如下的两个问题,那hypothesis set的大小M是否会影响这两个问题的解决呢:

M很小的时候,E_in(g)与E_out(g)可以认为是很接近了,可是学习算法选择有限了,不一定能选到一个E_in(g)很小接近0的hypothesis;

M很大的时候,选择很多,学习算法可以选到一个很好的hypothesis,但是E_in(g)与E_out(g)不一致的坏情况发生的概率就变大了。

因此如此看来,M的正确选择是很重要的。至于无限大的M到底是不是会很糟糕,这个问题可能需要接下来的多节课之后才能得到答案。

二、无限的M,Hoeffding不等式

如果我们回顾一下Hoeffding不等式推导的过程,就会发现不等式右边求解的是一个概率上限,是将M种hypothesis坏事件发生的概率直接加和得到的结果。仔细想一下,如果两条直线很接近,那么他们出现坏事件的情况是会overlap的,所以直接加和的结果是over-estimate的。这样看来,针对M是无限的情况,我们有必要将hypothesis set进行分类,从而得到更准确的概率上限。

很明显,训练数据是有限的,尽管hypothesis set中有无限多条线,但是可以按照对训练数据分类情况进行分类。举个例子,当训练数据只有1个时,无限的hypothesis set中就只有两类:1类将其分为+1,另一类将其分为-1;同理,当训练数据只有2个时,无限的hypothesis set中就只有8类。当训练数据只有3个时呢,初步看起来好像是8个,真的如此吗?考虑如下一种特殊的情况:

How about训练数据有4个时?如下图所示,画大叉的分类结果是没法用一条直线分出来的,也就是说这个时候hypothesis的结果只有7 x 2 = 14种,还下图对于完全相反的分类结果没有画出,例如第一幅全部分类为圈圈对应的就是分类结果全部分类为叉叉。

由此可见,对于N大小的训练数据,超平面有效的种类数量是有限的,肯定小于2^N个,那么我们就可以用这个有限的种类数量来代替原来Hoeffding不等式右边无限的M,如下所示。

三、Dichotomies的有效数量

上一节讲的将无限的hypothesis set按照对训练数据的分类情况,有一个专有名词叫做Dichotomies。它就是指hypothesis set将大小为N的训练数据分成的不同情形的集合。本节主要想求出Dichotomies的大小,这样就可以用来替换原来Hoeffding不等式中无限的M了。

经过上一节的分析,我们发现Dichotomies的大小是依赖于训练数据的分布情况的。那么我们就定义Grow Function为所有训练数据的Dichotomies最大者好了。

要想现在求出PLA的hypothesis set的Dichotomies大小还比较困难,我们可以先来看一些简单的hypothesis set的Dichotomies大小的求解。

案例一。h(x) = sign(x - a)。那么这种情况下Dichotomies大小为N+1。

案例二。h(x) = +1 iff x 在一个凸形状中,否则=-1。假设N个训练数据都分布在一个圆形上,任意选希望被分为+1的数据点连成一个凸多边形,只要将这个凸多边形稍微扩大一点点就达到了效果。这样看来Dichotomies大小为2^N,因为任何想要的分类情形都可以实现。

四、Break Point

再想一想,我们想做的事情是什么?想用Growth Function去取代原来无限的M。根据上一节的分析,Growth Function可能为polynomial多项式的,good;也可能为exponential指数级的,bad,因为不等式右边后面一部分随着N指数级减少,而Growth Function却又指数级上升的时候,我们就没法保证在N够大的时候不等式右边是一个很小的概率值。

既然如此,那我们对PLA的Growth Function到底是polynomial还是exponential就更感兴趣了。以前的分析我们只知道它随着N的增大<2^N,但仍不知道它究竟是怎样。

定义Break Point。对于2D的PLA来说,Growth Function对于3个点可以分出所有的2^3 = 8种情形,但是对于4个点就没法分出所有的2^4 = 16中情形了,只有14种。这个时候4就被我们认为是Break Point。那显然对于上面Convex set的Growth Function = 2^N,它的Break Point显然是不存在的。

那我们就有一个猜想了:没有Break Point的hypothesis set对应的Dichotomies大小肯定是2^N,如果有Break Point,是否就代表着Dichotomies大小是多项式级的呢?

第6讲-------Theory of Generalization

这一节的话题是一般化的理论,或者说来探讨一下机器学习是如何做到举一反三的。

一、Break Point的约束

根据上一节的分析,我们知道如下四种情形的Break Point的情况,以及在break point样本量的时候对应的Dichotomies大小。

既然如此,换一个角度来考虑的话那么更General的情况是:如果现在已知minimum break point k = 2,在样本量N不同的情况下对应的Dichotomies大小又是如何的状况呢?k = 2这里的意义就是说任意的两个样本点都无法被shatter到(shatter到的意思:n个样本点的2^n个情形都能出现,这里就是指2个样本点的4种情形都能出现)。

N = 1时,m_H(N)最大为2没有问题,因为这时候都没有两个样本点;N=2时,仔细想一下m_H(N)最大为3,也就是能够shatter到的情形时的4减去任意一种情况即可;那么N = 3时呢?如下图所示,会发现无论再加入那种分类情形,都能找到任意的2个样本被shatter到。所以这时m_H(N)最大为4。

总结一下,k = 2会极大程度上约束着在N > k的样本上m_H(N)的最大值。也就是说,好像只要有一个break point,对未来m_H(N)会是多少会有一个限制约束。

好,既然有这个想法以后,m_H(N)跟我们实际上的hypothesis set有关,我们不如来算一下m_H(N)在有某一个break point的前提下,到底能产生多少种可能性。如果最多的可能性,也即m_H(N)的最大值也是一个多项式的话,那么就可以放心大胆的说m_H(N)也是多项式的。进而,如果能将这个多项式的m_H(N)成功地放进我们原来的Hoeffding不等式的话,也许我们就可以说在PLA这样的无穷hypothesis set上的Learning是做得到的。

二、Bounding Function上限函数

继续上面的想法,定义上限函数Bounding Function:已知最小的break point是k,那么Growth Function的最大值。可以将它想象为:不管Growth Function究竟怎样,只是探讨在排列组合可以有多少种可能。也就是说有一堆的长度是N的圈圈叉叉组成的向量,这些向量其实就是Dichotomy。但是有一个限制,这些长度为N的向量,如果将它的某些维度遮起来只看它的其中k个维度的话,不能看到k个维度的所有的情形,也就是2^k中组合,用我们的术语来说这个k个维度不能出现shatter。

这样的话,我们就可以忽略hypothesis set的具体细节,就只用Bounding Function代表有某一个break point的时候m_H(N)的最大值。咦,这样的话我们的目标就变成了求证B(N, k) 是一个多项式级的了。

根据之前的分析,我们可以得到如下的表格,填上的都是很简单的情形:

填这个表剩下的部分显然更为困难一点。首先尝试从B(4, 3)出发,来找到其与B(3, ?)的某种联系。可以编写一个程序来寻找4个点16种的组合中,找出任意3个没有shatter的最多个向量的组合,如下为11。

然后我们尝试将B(4, 3) = 11的解做一个整理,橘色的解都是成双成对的,x1-x3都是一模一样,而x4一个是圈圈一个是叉叉;而紫色的解则都是形单影只的。如果只看x1-x3,那么B(4, 3) = 2 α + β。B(4, 3)代表的意思是x1-x4的四个点中不能有任意的三个点shatter,也就是说当然x1-x3这三个点不能shatter,所以如图左,α + β必定会<= B(3, 3);另外我们知道对于 α 被遮住的部分x4是成双成对的也即x4是shatter的,如果同时x1-x3中有任意的两个点shatter再加上x4则此时便有了3个点是shatter的这也不合理,所以α
必定<= B(3, 2)如图右。因此,有B(4, 3) = 2 α + β <= B(3, 3) + B(3, 2)。

更一般化一点便有:B(N, k) =  2 α + β <= B(N-1, k) + B(N-1, k-1)。所以我们便能完善之前的那张表格了:

根据这个递推公式进一步的推导,很容易得到Bounding Function的上限,如下图所示。B(N, k)是多项式的,那么也就说明了只要有break point存在,那么m_H(N)也是多项式的。数学上可以证明,下面这个B(N, k)的“<=”实际上就是“=”。

这样,我们进一步来看之前分析过的几种hypothesis set的m_H(N)的大小。如下图,我们也就得到了,2D的感知机hypothesis set的m_H(N)是多项式的。只要有一个break point的存在,那么hypothesis set的Dichotomies大小的Growth Function成长函数就是多项式级的。

三、最终的不等式

好,那我们现在知道了Growth Function、Bounding Function这些观念,而且知道了Growth Function是多项式的。那我们能不能用这个Growth Function来替换原来Hoeffding不等式中的M呢?实际上事情没有那么简单。

最后的最后,我们能够做到事情是一个长得差不多的版本,如下图所示。可以看到实际上的版本首先需要样本量N够大;另外比原来多了3个额外的常数。

为什么会这样的证明非常的的technical,详细的证明也不是本课能cover的。但是,这个证明里面用到的技巧和我们之后的很多讨论都还蛮有关系的。所以接下来我们会从比较宏观的角度分析这三个常数出现的原因。

第一步,想办法将式子中的E_out(h)替换掉。hypothesis set只要有一个h发生坏事情也就是E_in(h)与E_out(h)差别很大,我们就说这个训练数据D不是好的数据,我们希望坏数据D发生的概率不要太高。

这个式子的困难之处,E_in(h)与训练数据有关只有有限个,最多只有Growth Function在N时候的取值,上限当然是2^N;可是E_out(h)还是有无限个,所以造就了目前最大的困难没办法直接将这个式子去套union bound。所以第一步需要做的就是想办法讲E_out(h)替换掉。How,如何用有限多个来表示E_out(h)?这个之前有讲到过,如果用1个hypothesis那就用verification,也就是抽样来估计E_out(h)。假设我有另外的N个点,也许E_in‘(h)就能用来取代E_out(h)。想象如果有个坏事情发生,也就是E_in(h)和E_out(h)相差很远;我再抽样一次E_in‘(h),有很大的机会(坏事情发生是小概率事件,那么这个很大的机会就是1-小概率,也就是>1/2)E_in(h)和E_in‘(h)也相差的很远。所以,便可以有了如上的不等式替换。

第二步,想办法将Hyspothesis set换成某一个h。如下图所示,现在在乎的所有和BAD有关的只是E_in(h)和E_in‘(h)来决定了。也就是说,如果h在D与D‘上做出一样的dichotomy的话,那么E_in(h)和E_in‘(h)就会长一样。所以我只要把所有的hypothesis set分成|H(x1, x2..., x‘1, x‘2...)|这么多类就好,也就是在这2N个点上有多少种Dichotomies就好了。这样的话最多最多有m_H(2N)种,把每一种抓一个代表出来我们就可以使用union
bound了。

第三步,求解两次Sampling的差别。

现在我们已经是固定的h,想知道两次sampling的差别。就好像我们先有2N个样本的例子,我们抓N个出来然后比较剩下的N个;或者说我们抓N个出来,比较它跟所有2N个的平均是多少。如果想要E_in(h)和E_in‘(h)相差alpha的话,那么E_in(h)与所有人的平均需要相差alpha/2。那怎么知道E_in(h)与所有2N的差别呢?没错,就是使用Hoeffding不等式来解决,只不错这次罐子变得更小变得有限的2N个了。

所以,最后的结果就变成了如下图所示。总结来说,我们便使用了非常挥挥手的方式证明了一个定理,这个定理就是VC bound。

所以,我们现在解决了2D的perceptron,它的break point是4,所以成长函数是O(N^3),代进去则表示坏事情发生的几率会很小。也就是说样本N足够多的时候,2D 的PLA算法真的能够达到机器学习的效果。当然我们现在还没有证明任意维度的perceptron到底会发生什么事情。

关于Machine Learning Foundations更多的学习资料将继续更新,敬请关注本博客和新浪微博Sheridan

原创文章如转载,请注明本文链接: http://imsheridan.com/mlf_5th_lecture.html

时间: 2024-10-07 03:14:30

机器学习基石——第5-6讲.Training versus Testing的相关文章

【Training versus Testing】林轩田机器学习基石

接着上一讲留下的关子,机器学习是否可行与假设集合H的数量M的关系. 机器学习是否可行的两个关键点: 1. Ein(g)是否足够小(在训练集上的表现是否出色) 2. Eout(g)是否与Ein(g)足够接近(在训练集上的表现能否迁移到测试集上) (1)如果假设集合数量小(M小),可知union bound后,Ein与Eout是接近的:但由于可选择的假设集合少,Ein(g)效果可能不佳: (2)如果假设集合数量大(M大),有可能Ein(g)会获得更多的选择,测试集上效果更好:但由于M数量过大,训练集

NTU-Coursera机器学习:机器学习基石 (Machine Learning Foundations)

课讲内容 这门课以8周设计,分成 4个核心问题,每个核心问题约需2周的时间来探讨.每个约2个小时的录影中,每个小时为一个主题,以会各分成4到5个小段落,每个段落里会有一个后多个随堂的练习.我们在探讨每个核心问题的第二周.依上所述,課程的規畫如下: When Can Machines Learn? [何时可以使用机器学习] 第一周:(NTU-Coursera机器学习:机器学习问题与二元分类) 第一讲:The Learning Problem [机器学习问题]第二讲:Learning to Answ

机器学习基石笔记5——为什么机器可以学习(1)

转载请注明出处:http://www.cnblogs.com/ymingjingr/p/4271742.html 目录 机器学习基石笔记1——在何时可以使用机器学习(1) 机器学习基石笔记2——在何时可以使用机器学习(2) 机器学习基石笔记3——在何时可以使用机器学习(3)(修改版) 机器学习基石笔记4——在何时可以使用机器学习(4) 机器学习基石笔记5——为什么机器可以学习(1) 机器学习基石笔记6——为什么机器可以学习(2) 机器学习基石笔记7——为什么机器可以学习(3) 机器学习基石笔记8

林轩田《机器学习基石》 简介

转:https://blog.csdn.net/red_stone1/article/details/80517672 课程介绍 台湾大学林轩田老师曾在coursera上开设了两门机器学习经典课程:<机器学习基石>和<机器学习技法>.<机器学习基石>课程由浅入深.内容全面,基本涵盖了机器学习领域的很多方面.其作为机器学习的入门和进阶资料非常适合.<机器学习技法>课程主要介绍了机器学习领域经典的一些算法,包括支持向量机.决策树.随机森林.神经网络等等.林老师的

机器学习基石笔记5——为什么机器可以学习 (1)

致敬杜少 Lecture 5.  Training versus Testing 5.1 Recap and Preview 5.2 Effective Number of Lines 5.3 Effective Number of Hypothesis 5.4 Break Point 题外话:

机器学习基石——第15-16讲.Validation

本栏目(机器学习)下机器学习基石专题是个人对Coursera公开课机器学习基石(2014)的学习心得与笔记.所有内容均来自Coursera公开课Machine Learning Foundations中Hsuan-Tien Lin林轩田老师的讲解.(https://class.coursera.org/ntumlone-002/lecture) 第15讲-------Validation 一.模型选择问题 机器学习的每个模型都有各式各样的参数.即使只是对于二元分类,学习算法上可以选择PLA,LR

机器学习基石第二讲:learn to answer yes/no

博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) 刚刚完成了机器学习基石的第二讲,主要介绍了机器学习的定义,PLA算法和pocket PLA算法.下面将笔记整理在下面. Perceptron Hypothesis Set 延续前面的信用卡发放问题.银行已有的用户数据可能包括用户的年龄.年薪.工作时长.债务情况等特征信息,我们分别用x1,x2,-,xd来表示,那么对于每一个用户都有一个向量来表示其信息.我们为每一个特征信息分配一个权

机器学习基石——第13-14讲.Hazard of Overfitting

本栏目(机器学习)下机器学习基石专题是个人对Coursera公开课机器学习基石(2014)的学习心得与笔记.所有内容均来自Coursera公开课Machine Learning Foundations中Hsuan-Tien Lin林轩田老师的讲解.(https://class.coursera.org/ntumlone-002/lecture) 第13讲-------Hazard of Overfitting 从这一节开始,我们开始探讨How Can Machines Learn Better的

机器学习基石第六讲:theory of generalization

博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) 机器学习基石第六讲继续讨论"学习是否可行的问题". Restriction of Break Point 继续前面的讨论,我们看mH(N)是否会有一个很小的增长速度.回顾前面的四种成长函数及其break point.我们知道k是一个成长函数的break point,那比k大的值全是break point. mH(N)是一个hypothesis在N个数据点上可以产生的dic