Machine Learning Foundations 13: Hazard of Overfitting | Cheney Shen

Technology blog

Machine Learning Foundations 13: Hazard of Overfitting


 
 

内容

  • Ocerfitting 的概念: Ein 变低, Eout 变高
  • Overfitting 很危险很容易发生,原因是:两种noise,数据不够,目标太复杂
  • 怎么解决 Overfitting:data cleaning/hinting/pruning, 等等,下面的课程继续介绍

     
     


     
     

    上一次我们讲到原来我们的model是线性的,如果我们把linear model配上non-linear的transform,那就产生的非线性的model来扩展我们的学习,代价是付出额外的model的complexity。

     
     

    今天我们从 complexity 出发,说到这额外的 model complexity 会造成机器学习里面一个很大的困难叫做 overfitting。我们首先将这个困难是如何产生的,然后说要怎么样解决它。

     
     


     
     

    我们先从一个例子出发:

     
     

    有五个资料点,X是随机产生的,Y则是X代入某个二次函数,再加上一些noise产生。

     
     

    如果我们假设我们用一四次的多项式来做回归分析,配合五个点,那就是有唯一解,也就是 Ein = 0,就是右边的红色的线,但是你会发现和蓝色的目标函数差距很大,也就是 Eout 很大。

     
     

    这个叫做:Bad Generation

    已有资料做得很好,未知资料结果就不好。

    当 Dvc 很大的时候,就会发生这样子 Ein 很小, Eout 很大的情况。

     
     


     
     

    前面提到过如果你用 1126 次方的多项式来做 learning,就会导致 Ein 很小,Eout 很大,这是不好的。

    同样讲过右边的图,Eout 会有一个先下降后上升的趋势,最低点就是最好的 Dvc 的位置。

     
     

    Overfitting: Ein越小,Fitting越好,但是会过头,造成Eout上升。

    Underfitting:fit的不够好。

     
     

    Underfitting 相对比较好解决,增加 Dvc 就可以,上次nonlinear transform就是来处理这个问题;overfitting比较不好解决,下面我们来探讨这个问题。

     
     

    Bad Generalization:描述的是一个当前状态的情况。

    Overfitting:描述的是变化的过程。

     
     


     
     

    如果选了一个好的如左图,右边是overfit的情况。

     
     

    我们如何来看这个问题,通过使用一些比喻来了解:

    overfit:好像出了车祸

    原因:开太快,等等(主观的)

    noise:路不平(客观的)

    资料量:路况(资料点够密,路熟悉)

     
     

    所以会发生overfitting:所以会发生车祸

     
     


     
     

    小测验

     
     


     
     

    为了让大家更了解 overfitting ,这里继续做一系列试验,来说明。

     
     

    还是考虑一维的回归分析,资料的产生:

     
     

    左边:

    用一个十次多项式来当作目标函数,X随机取样,Y由多项式值加上一些杂讯产生。

    右边:

    考虑一个五十次的多项式,不考虑杂讯生成 XY。

     
     

    我们用两个不同的 learning model:一个是2次的(绿色),一个是10次的(红色)。

    看哪个会表现得比较好。

     
     


     
     

    左边:g10 overfitting

    Ein: g10 < g2

    Eout:g10 >> g2

     
     

    右边:g10 overfitting

    Ein:g10 << g2

    Eout:g10 >> g2

     
     


     
     

    我们发现:

    G10,G2 如果今天这两个人都知道目标多项式,那么 G10 应该要比好吧?但是 G2 的结果反倒比较好。

     
     

    这叫做: concession for advantage (以退为进)

     
     


     
     

    为什么会这样?

     
     

    来看看 learning curve:描述得是资料量的多少和error的变化。

    上面左边的是 h2的 linear regression,其他h2类似。

    上面右边的是 h10的 linear regression,其他h10类似。Ein/Eout拉大了,因为 model complexity。

    重要的是左边的灰色区域 Eout_10 >> Eout_2。

     
     

    结论:资料量不够多的时候不用想太复杂的 model 。

     
     


     
     

    再来看没有 noise 的例子:这个时候还是 g2 做的好。

     
     

    你觉得这个时候真的是没有 noise 么?

    这里的noise的意思是:50次的 2/10 次理论上都做不到,而之间的差距就是 noise。

     
     

    结论:当你学的事情很复杂的时候,这个复杂度也可以当作是noise对结果产生影响。

     
     


     
     

    小测验。

     
     


     
     

    下面来做更细节的实验来告诉你说什么时候你要小心 overfit 会发生。

     
     

    产生资料分成三个变量:

    • Target function : 某个次方的多项式 ,多项式是 f 次。
    • Noise : Gaussion noise 强度不一样的时候对我的 overfitting 的影响,强度是 sigma^2。
    • 资料量:N

     
     

    这里要注意的是要产生真正的50次多项式,需要做一些手脚:正规化保证真正的50次。

    因为产生随机数的很多时候高次项系数为0的可能性很高。

     
     

    我们来探讨这三个变量对结果的影响。

     
     


     
     

    同样我们用两个学生来学习:

     
     

    G2: 只会最多2次多项式

    G10: 只会最多10次多项式

     
     

    结论:

    Ein_10 < Ein_2

    Overfitting 衡量: Eout_2 – Eout_10

     
     

    下面使用图示来 show overfit 的程度:

     
     


     
     

    左边:

    目标函数复杂度固定在20,横轴是资料量,纵轴是 gaussion noise 的程度 sigma^2。

    红色表示非常overfit,蓝色表示没有什么overfit。

    N 小,noise大会造成 overfit。

     
     

    右边:

    纵轴是目标复杂度,使用一样的gaussian sigma。

    目标越复杂,资料量不够会造成 overfit。

     
     

    这里的图就是 课程的 logo

     
     


     
     

    我们加上的 gasussion noise 是会对结果产生蛮大影响的,我们把它叫做 stochastic noise(随机噪声)

    我们的目标复杂度也会对结果产生很大的影响,我们把它叫做 deterministic noise(固定噪声)

     
     

    从上可以看出四个会发生 overfitting 的时间点:

    • 资料太少
    • 随机噪声太多
    • 固定噪声太大
    • 精力过剩(当今天目标函数是10次以下的时候,对于G10来说太简单,更容易 overfit)

     
     

    Overfit 很容易发生!!!

    就像小孩开大车。

     
     


     
     

    上面讲到如果今天目标函数太复杂的话和 noise 没什么区别。

    在CS里面常用:pseudo-random generator 随机数生成器 用的就是这个概念做的。

     
     

    如右图:蓝色标识的目标函数和红色标识的h之间是有差距的,当目标函数太过复杂,h没有办法表述的时候。灰色的区域就是 确定噪声。

     
     

    确定噪声特点:

    和 H 的复杂度相关

    对同一个 X 来说是一样的

     
     

    除了上面两点就是一般噪声

     
     


     
     

    小测验

     
     


     
     

    接下来我们要怎么样对付 overfitting 呢?

     
     

    机器学习:对比开车

     
     

    用简单一点的model:开慢一点

    Data cleaning/pruning:了解更精确的路况资料(下面讲)

    Data hinting(从现有的资料或者对这个问题的了解产生更多的资料):收集更多的路况资料(下面讲)

    Regularization:适时踩刹车(后面的课程讲)

    Validation:看看仪表板(后面的课程讲)

     
     

    综合使用多种工具来避免 overfitting。

     
     


     
     

    二分 1、5:

     
     

    如果把资料表示到 2d 平面就会有一群 1/5 。

    对于左上角的一个点被表示成5,你需要去确认他是 outline:

    如果标错了就改过来(Data Cleaning)。

    如果是没用的(data pruning)

     
     

    但是这里的难点是怎么去确认这个点有问题。

     
     


     
     

    Data Hinting:

     
     

    识别手写字,已有上面的这些资料,没办法再加了,但是根据我有的一些知识,对现有资料做一些小的变化,来创造出新的虚拟的资料,用在 model 里面。

     
     


     
     

    小测验。

     
     


     
     

    总结:

    • Ocerfitting 的概念: Ein 变低, Eout 变高
    • Overfitting 很危险很容易发生,原因是:两种noise,数据不够,目标太复杂
    • 怎么解决 Overfitting:data cleaning/hinting/pruning, 等等,下面的课程继续介绍

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     


One Comment

Post a Comment

Your email address will not be published. Required fields are marked *

  • Categories

  • Tags