第13节课 Hazard of Overfitting
- 本节课主要介绍了overfitting的概念,即当Ein很小,Eout很大的时候,会出现overfitting。详细介绍了overfitting发生的四个常见原因以及学习了解决overfitting的两种简单点的方法。这节课学习中涉及到了噪音,VC维等前面学到的知识。总之过拟合这个知识点要好好把握!也是一个难点,多回顾几遍视频。
(一)什么是过拟合
1.简单的说就是这样一种学习现象:
Ein 很小,Eout 却很大。而Ein 和 Eout 都很大的情况叫做 underfitting。这是机器学习中两种常见的问题。
我们回过头来看一下VC曲线:
上图中,竖直的虚线左侧是"underfitting", 左侧是"overfitting”。
bad generation和overfitting的关系可以理解为:overfitting是VC Dimension过大的一个过程,bad generation是overfitting的结果。
2.发生overfitting 的主要原因是:(1)使用过于复杂的模型(dvc 很大);(2)数据噪音;(3)有限的训练数据。
(二)噪音与数据规模
1.引例:为了尽可能详细地解释overfitting,我们进行这样一个实验,试验中的数据集不是很大。首先,在二维平面上,一个模型的分布由目标函数f(x)(x的10阶多项式)加上一些noise构成,下图中,离散的圆圈是数据集,目标函数是蓝色的曲线。数据没有完全落在曲线上,是因为加入了noise。
然后,同样在二维平面上,另一个模型的分布由目标函数f(x)(x的50阶多项式)构成,没有加入noise。下图中,离散的圆圈是数据集,目标函数是蓝色的曲线。可以看出由于没有noise,数据集完全落在曲线上。
现在,有两个学习模型,一个是2阶多项式,另一个是10阶多项式,分别对上面两个问题进行建模。首先,对于第一个目标函数是10阶多项式包含noise的问题,这两个学习模型的效果如下图所示:
由上图可知,虽然10阶模型的Ein比2阶的小,但是其Eout要比2阶的大得多,而2阶的Ein和Eout相差不大,很明显用10阶的模型发生了过拟合。
2.我们可以理解地简单些:有噪音时,更复杂的模型会尽量去覆盖噪音点,即对数据过拟合!这样,即使训练误差Ein 很小(接近于零),由于没有描绘真实的数据趋势,Eout 反而会更大。即噪音严重误导了我们的假设。
如下面的例子,假设数据是由50次幂的曲线产生的(下图右边),与其通过10次幂的假设曲线去拟合它们,还不如采用简单的2次幂曲线来描绘它的趋势。
(三)随机噪音与确定性噪音
1.之前说的噪音一般指随机噪音(stochastic noise),服从高斯分布;还有另一种“噪音”,就是前面提到的由未知的复杂函数f(X) 产生的数据,对于我们的假设也是噪音,这种是确定性噪音。
上图是关于2次曲线和10次曲线对数据的拟合情况,我们将overfit measure 表示为Eout(g10) - Eout(g2)。
2.下图左右两边分别表示了随机噪音和确定性噪音对于Overfitting 的影响。
上图解释:红色越深,代表overfit程度越高,蓝色越深,代表overfit程度越低。先看左边的图,左图中阶数Qf固定为20,横坐标代表样本数量N,纵坐标代表噪声水平σ^2。红色区域集中在N很小或者σ^2很大的时候,也就是说N越大,σ^2越小,越不容易发生overfit。右边图中σ^2=0.1,横坐标代表样本数量N,纵坐标代表目标函数阶数Qf。红色区域集中在N很小或者Qf很大的时候,也就是说N越大,Qf越小,越不容易发生overfit。上面两图基本相似。(参考的资料)
可见,数据规模一定时,随机噪音越大,或者确定性噪音越大(即目标函数越复杂),越容易发生overfitting。
总之,容易导致overfitting 的因素是:
①data size N ↓ 数据过少;
②stochastic noise σ^2↑ 随机噪音过多;
③deterministic noise Qf↑ 确定性噪音过多
④excessive power ↑ 假设过于复杂。
如果我们的假设空间不包含真正的目标函数f(X)(未知的),那么无论如何H 无法描述f(X) 的全部特征。这时就会发生确定性噪音。它与随机噪音是不同的。
1.避免overfitting的方法主要包括:
①start from simple model
②data cleaning/pruning
③data hinting
④regularization
⑤validataion
这几种方法类比于之前举的开车的例子,对应如下:
2.主要介绍以下两种:
(1)数据清洗(data ckeaning/Pruning)
将错误的label 纠正或者删除错误的数据。
(2) Data Hinting: “伪造”更多数据, add "virtual examples"
例如,在数字识别的学习中,将已有的数字通过平移、旋转等,变换出更多的数据。