赞
踩
目录
举一个简单的例子:我们设计了一个模型来判断 一件物品是否为树叶。喂养这个模型的数据集中含有几张带有尖刺边缘的树叶。模型的设计者希望模型能满足每一个训练数据,模型就将尖刺边缘也纳入了参数中。当我们测试这个模型的泛化性能时,就会发现效果很差,因为模型钻牛角尖,它认为树叶必须带有尖刺边缘,所以它排除了所有没有带有尖刺边缘的树叶,但事实上,我们知道树叶并不一定带有尖刺边缘。结果为什么会这样?因为模型设计者的强迫症使得这个模型过分贴合整个训练集,结果把噪音点也拟合上了。
通俗的来说过拟合就是模型在训练集上表现得非常好,但是在测试集的数据下表现很差。
例如,以下是一张使用线性回归拟合二维样本数据的matlab输出图片,其中Normal曲线是使用使用了带参数空间限制的最小二乘法进行求解的模型,Overfit曲线是使用最小二乘法直接求解得到的。 可以看到虚线输出的模型可能并不是我们现实生活中所想要的模型,当我们得到Overfit所学的模型后,用于实际回归任务中,可能对于验证集、测试集、预测集效果并不好。它会产生这样一种现象:**一个假设在训练数据上能够获得比其他假设更好的拟合,但是在训练数据外的数据集上却不能很好的拟合数据**。此时我们就叫这个假设出现了**过拟合**的现象。
以多项式拟合举例,其随着多项式维数的增加,模型在训练集上的表现越来越好,但在交叉验证集上的误差却越来越大,这显然不是我们想要的,因为其泛化能力和鲁棒性也越来越差。
偏差/方差与欠拟合/过拟合有着密不可分的关系,我们现在讨论如上图中右下角的低偏差高方差即只有过拟合现象的原因。
1.(针对问题1)解决过拟合的根本方法是增加数据集的规模,理论上只要样本数足够多,即使模型足够复杂,有一定的噪声,模型也会收敛到一个比较好的结果。
实际中由于数据集采集成本过高,通常使用一些退而求其次的方法来制造数据集,比如在图像处理中,可以利用反转、平移、切割、调整光亮,使用不同滤波来扩充数据集。
而在模型的训练阶段,为了节省数据成本,我们会采取诸如留一法、交叉验证法、自助法等用于数据采样。
2.(针对问题2)对于模型过于复杂,我们可以做的事情很多。
对于线性回归我们可以降低多项式的次数,对于神经网络我们可以减少隐藏层层数,节点数等,对于决策树,我们可以进行剪枝操作等。
正则化是解决过拟合最常用的方法之一,最为常用的用为L1正则化与L2正则化。L0可以最自然的实现“稀疏约束”,但其求解性质不太良好,利用L1范数是L0范数的最优凸近似,又有较好的求解特性(可利用近端梯度下降求解),因此可以得到较为稀疏的解,利用L2范数进行正则化则可以大大降低计算量,拥有计算方便的特性。
3.对于神经网络,我们可以采用增加Drop层(在每层中随机选取一些节点使其不工作),或是添加Batch Normalization来减轻过拟合现象。
4.进行特征选择与稀疏学习,常见的特征选择可分为分为
1)过滤式
2)包裹式
3)嵌入式
稀疏表示可以使大多数问题变得线性可分,且稀疏样本可以给存储带来方便,稀疏表示可以通过字典学习等方式得到,它可以将样本转化为合适的稀疏表示,从而使学习任务得以简化,模型复杂度降低。
5.(针对问题三)在进行数据训练进行之前进行数据清洗,即在回归任务中删除异常的噪声点,在分类任务中将错误的label进行纠正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。