码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-02-16 06:48:45      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:机器学习基石

本栏目(机器学习)下机器学习基石专题是个人对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的话题。技术分享

一、什么是Overfitting

简单的说就是这样一种学习现象:VC dimension太大的时候,E_in 很小,E_out 却很大。而另外一方面,E_in 和 E_out 都很大的情况叫做 Under-fitting。这是机器学习中两种常见的问题。这里的fitting指的就是E_in。下图中,竖直的虚线左侧是"underfitting", 左侧是"overfitting”。
技术分享

发生overfitting 的主要原因是:使用过于复杂的模型(d_vc 很大);数据噪音;有限的训练数据。

二、噪声与Data Size

技术分享

如上图所示,我们可以分别从噪声与Data Size的角度理解地简单些:

有噪音时,更复杂的模型会尽量去覆盖噪音点,即对数据过拟合!这样,即使训练误差E_in 很小(接近于零),由于没有描绘真实的数据趋势,E_out 反而会更大。噪音严重误导了我们的假设

还有一种情况,如果数据是由我们不知道的某个非常非常复杂的模型产生的,实际上有限的数据很难去“代表”这个复杂模型曲线。我们采用不恰当的假设去尽量拟合这些数据,效果一样会很差,因为部分数据对于我们不恰当的复杂假设就像是“噪音”,误导我们进行过拟合。

如下面的例子,假设数据是由50次幂的曲线产生的(下图右边,without噪声),与其通过10次幂的假设曲线去拟合它们,还不如采用简单的2次幂曲线来描绘它的趋势。
技术分享

 三、确定性噪声

接下来我们探讨:什么时候需要小心Overfit会发生。

之前说的噪音一般指随机噪音(stochastic noise),服从高斯分布;还有另一种“噪音”,就是前面提到的由未知的复杂函数f(X) 产生的数据,对于我们的假设也是噪音,这种是确定性噪音。

接下来我们做一个更详细的实验:加入强度为δ^2的高斯噪声;产生数据的target function是某个多次的多项式,其中最高的次数为Q_f;训练数据大小N。我们要探讨的就是:这三个变量变化的时候,到底对Overfit的程度有什么样的影响?

如下图所示,我们就用两个学习器:二次多项式g_2与10次多项式g_10。我们将overfit的程度表示为E_out(g10) - E_out(g2)。
技术分享

下图左右两边分别表示了随机噪音和确定性噪音对于Overfitting 的影响。
技术分享

可见,数据规模一定时,随机噪音越大,或者确定性噪音越大(即目标函数越复杂),越容易发生overfitting。总之,容易导致overfitting 的因素是:数据过少;随机噪音过多;确定性噪音过多;假设过于复杂(excessive power)。

对于最后一点解释一下,右边这个图与左边的图有一些小小的不一样:靠下部分说明好像Q_f往小的方向走的时候也会有overfit的现象出现。大家接的我们overfit的衡量方式是E_out(g10) - E_out(g2),当target function是10次多项式以下的时候,那么学习器g_10就太强了。

如果我们的假设空间不包含真正的目标函数f(X)(未知的),那么无论如何H 无法描述f(X) 的全部特征。这时就会发生确定性噪音。它与随机噪音是不同的。例如,目标函数是50次的多项式,而hypothesis是10次多项式的话,一定找个target function有某些地方是没办法被任何一个hypothesis所描述的。我们可以类比的理解它:在计算机中随机数实际上是“伪随机数”,是通过某个复杂的伪随机数算法产生的,因为它对于一般的程序都是杂乱无章的,我们可以把伪随机数当做随机数来使用。确定性噪音的哲学思想与之类似。

接下来来一发练习题:
技术分享

 四、解决Overfitting

对应导致过拟合发生的几种条件,我们可以想办法来避免过拟合。

  1. 假设过于复杂(excessive d_vc) => start from simple model
  2. 随机噪音 => 数据清洗(Data Cleaning/Pruning):将错误的label 纠正或者删除错误的数据。
  3. 数据规模太小 => 收集更多数据,或根据某种规律“伪造”更多数据(Data hinting):例如,在数字识别的学习中,将已有的数字通过平移、旋转等,变换出更多的数据。

正规化(regularization) 也是限制模型复杂度的方法,在下一讲介绍。其他解决过拟合的方法在后面几讲介绍。

第14讲-------Regularization

一、正则化的Hypothesis Set

发生Overfitting 的一个重要原因可能是假设过于复杂了,我们希望在假设上做出让步,用稍简单的模型来学习,避免Overfitting 。例如,原来的假设空间是10次曲线,很容易对数据过拟合;我们希望它变得简单些,比如w 向量只保持三个分量(其他分量为零)。

也就是Hypothesis Set需要从高阶step back到低阶,例如从从10次多项式H_10走回到2次多项式H_2,如下图左所示。实际上就是代表在原来的Learning问题上加上一些限制Constraint。如果现在将左图的限制放松一些,如下右图所示。
技术分享

可是,右图中的优化问题是NP-Hard 的。如果对w 进行更soft/smooth 的约束,可以使其更容易优化。我们将此时的假设空间记为H(C),这是“正则化的Hypothesis Set”。如果我们能够顺利地解决下图的最佳化问题,找出一个好的w_reg的话,那么就是regularized hypothesis。
技术分享

二、Weight Decay Regularization

通过前面的分析,我们已经把优化问题变为:
技术分享

那如何求解这个优化问题呢?先来看看我们新加入的这个限制对优化问题造成了怎样的影响。原来没有限制的时候,只需要让目标函数沿着梯度的反方向一路滚下去知道梯度=0。那加入了限制之后,也就是说w需要在一个红色的球里滚动,如下图所示。可以想象,大部分的时候我们需要的解都是在球的边界附近,只要梯度与w不是平行的,目标函数就仍然可以向谷底滚一点点,可以得到一个更好的解。也就是说,最优的结果是梯度与w_reg是平行的
技术分享

我们要求解的话,就要找出w_reg,然后看看有没有一个相对应的lamda,让这两个向量是平行的。观察下面这个式子发现,梯度是原来E_in的微分,只要对w_reg做积分,那么就可以得到原来的目标函数的等价形式。加上的这一项通常叫做regularizer。如果给定了lamda (lamda >=0,因为它代表两个向量长度的比值而lamda = 0则就代表无限制的原问题),那么就可以通过解这个优化问题得到w_reg。也就是说,我们不再需要去求解之前的那个constrained C的优化问题了,对于使用者来说,指定C与指定lamda来说没有什么区别。
技术分享

那么,我们来看看不同的lamda到底发生了什么事情。
技术分享

总之,lambda 越大,希望的w越短越好,对应的常数C 越小,模型越倾向于选择更小的w 向量。这种正规化成为 weight-decay regularization,它对于线性模型以及进行了非线性转换的线性假设都是有效的。

另外补充一下,虽然regularization可以跟任何的transform做搭配,课件中的实验为了结果更明显一些,其实在transform的时候加入了一点小技巧。naive 多项式的transform有一些小小的缺点:如果|x| <= 1,高次x^Q是很小的数字,要想它在hypothesis中发挥影响力则需要很大的w,这就与regularization目的(将w压到很小)背道而驰。也就是说regularization会过度地惩罚了高次的x^Q,这里用的技巧就叫做legendre polynomials,如下图所示
技术分享

三、Regularization与VC Theory

根据VC Bound 理论,E_in与E_out的差距是模型的复杂度。也就是说,假设越复杂(d_vc 越大),E_out 与 E_in 相差就越大,违背了我们学习的意愿。

E_aug跟VC其实有一些异同,E_aug新加入的那项可以认为是某个单一hypothesis有多复杂;而VC则表示整个hypothesis set有多复杂。也许,E_aug是一个比原来的E_in的更好的代理。
技术分享

对于某个复杂的假设空间H,d_vc 可能很大;通过正规化,原假设空间变为正规化的假设空间H(C)。与H 相比,H(C) 是受正规化的“约束”的,因此实际上H(C) 没有H 那么大,也就是说H(C) 的VC维比原H 的VC维要小,也就是Effective VC Dimension。因此,E_out 与 E_in 的差距变小。

四、泛化的正规项 General Regularizers

刚刚讲到的regularizer都集中在weight decay上面,那如果想要换更一般的regularizer呢。指导我们更好地设计正规项的原则:最好能告诉target function在哪一个方向。

  • target-dependent:如果知道target function的特性,也许可以放进去。例如如果想要的是比较接近偶次方函数,加上的regularizer就是让奇次方的w越小越好。
  • plausible:有说服力的,例如比较平滑或者简单的regularizer。因为regularization主要是为了解决overfitting
  • friendly:方便优化求解。

当然,就算选择了一个不太好的regularizer,还有lamda = 0的保护,最差就是不用它而已。

技术分享

那接下来来看一下L2与L1的regularizer。L2非常的平滑,也易于求解。那L1的特点呢?它也是convex的,不过不是处处可微。不过L1的解常常会是sparse的,也就是w中会有很多的0,因为它的解常常会发生在顶点处。
技术分享

lamda应该如何选择?lambda 当然不是越大越好!选择合适的lambda 也很重要,它收到随机噪音和确定性噪音的影响,噪音越大,需要的lamda越大。那具体要如何选择呢?且听下回分解。
技术分享

接下来,看看如下的练习题。
技术分享

 

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

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

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

标签:机器学习基石

原文地址:http://blog.csdn.net/xyd0512/article/details/43848909

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!