机器学习中用来防止过拟合的方法有哪些?

superfly123 superfly123     2023-05-06     556

关键词:

是什么

过拟合(overfitting)是指在模型参数拟合过程中的问题,由于训练数据包含抽样误差,训练时,复杂的模型将抽样误差也考虑在内,将抽样误差也进行了很好的拟合。
具体表现就是最终模型在训练集上效果好;在测试集上效果差。模型泛化能力弱。
技术图片

为什么

为什么要解决过拟合现象?这是因为我们拟合的模型一般是用来预测未知的结果(不在训练集内),过拟合虽然在训练集上效果好,但是在实际使用时(测试集)效果差。同时,在很多问题上,我们无法穷尽所有状态,不可能将所有情况都包含在训练集上。所以,必须要解决过拟合问题。

为什么在机器学习中比较常见?这是因为机器学习算法为了满足尽可能复杂的任务,其模型的拟合能力一般远远高于问题复杂度,也就是说,机器学习算法有「拟合出正确规则的前提下,进一步拟合噪声」的能力。

而传统的函数拟合问题(如机器人系统辨识),一般都是通过经验、物理、数学等推导出一个含参模型,模型复杂度确定了,只需要调整个别参数即可。模型「无多余能力」拟合噪声。

怎么样

既然过拟合这么讨厌,我们应该怎么防止过拟合呢?最近深度学习比较火,我就以神经网络为例吧:
技术图片

  1. 获取更多数据

这是解决过拟合最有效的方法,只要给足够多的数据,让模型「看见」尽可能多的「例外情况」,它就会不断修正自己,从而得到更好的结果:
技术图片

如何获取更多数据,可以有以下几个方法:

从数据源头获取更多数据:这个是容易想到的,例如物体分类,我就再多拍几张照片好了;但是,在很多情况下,大幅增加数据本身就不容易;另外,我们不清楚获取多少数据才算够;
根据当前数据集估计数据分布参数,使用该分布产生更多数据:这个一般不用,因为估计分布参数的过程也会代入抽样误差。
数据增强(Data Augmentation):通过一定规则扩充数据。如在物体分类问题里,物体在图像中的位置、姿态、尺度,整体图片明暗度等都不会影响分类结果。我们就可以通过图像平移、翻转、缩放、切割等手段将数据库成倍扩充;
技术图片

  1. 使用合适的模型

前面说了,过拟合主要是有两个原因造成的:数据太少+模型太复杂。所以,我们可以通过使用合适复杂度的模型来防止过拟合问题,让其足够拟合真正的规则,同时又不至于拟合太多抽样误差。

(PS:如果能通过物理、数学建模,确定模型复杂度,这是最好的方法,这也就是为什么深度学习这么火的现在,我还坚持说初学者要学掌握传统的建模方法。)

对于神经网络而言,我们可以从以下四个方面来限制网络能力:

2.1 网络结构 Architecture

这个很好理解,减少网络的层数、神经元个数等均可以限制网络的拟合能力;

技术图片

2.2 训练时间 Early stopping

对于每个神经元而言,其激活函数在不同区间的性能是不同的:
技术图片

当网络权值较小时,神经元的激活函数工作在线性区,此时神经元的拟合能力较弱(类似线性神经元)。

有了上述共识之后,我们就可以解释为什么限制训练时间(early stopping)有用:因为我们在初始化网络的时候一般都是初始为较小的权值。训练时间越长,部分网络权值可能越大。如果我们在合适时间停止训练,就可以将网络的能力限制在一定范围内。

2.3 限制权值 Weight-decay,也叫正则化(regularization)

原理同上,但是这类方法直接将权值的大小加入到 Cost 里,在训练的时候限制权值变大。以 L2 regularization为例:

技术图片

训练过程需要降低整体的 Cost,这时候,一方面能降低实际输出与样本之间的误差 [公式] ,也能降低权值大小。

2.4 增加噪声 Noise

给网络加噪声也有很多方法:

2.4.1 在输入中加噪声:

噪声会随着网络传播,按照权值的平方放大,并传播到输出层,对误差 Cost 产生影响。推导直接看 Hinton 的 PPT 吧:

技术图片

在输入中加高斯噪声,会在输出中生成 [公式] 的干扰项。训练时,减小误差,同时也会对噪声产生的干扰项进行惩罚,达到减小权值的平方的目的,达到与 L2 regularization 类似的效果(对比公式)。

2.4.2 在权值上加噪声

在初始化网络的时候,用0均值的高斯分布作为初始化。Alex Graves 的手写识别 RNN 就是用了这个方法

Graves, Alex, et al. "A novel connectionist system for unconstrained handwriting recognition." IEEE transactions on pattern analysis and machine intelligence 31.5 (2009): 855-868.

  • It may work better, especially in recurrent networks (Hinton)

2.4.3 对网络的响应加噪声

如在前向传播过程中,让默写神经元的输出变为 binary 或 random。显然,这种有点乱来的做法会打乱网络的训练过程,让训练更慢,但据 Hinton 说,在测试集上效果会有显著提升 (But it does significantly better on the test set!)。

  1. 结合多种模型

简而言之,训练多个模型,以每个模型的平均输出作为结果。

从 N 个模型里随机选择一个作为输出的期望误差 [公式] ,会比所有模型的平均输出的误差 [公式] 大(我不知道公式里的圆括号为什么显示不了):

技术图片

大概基于这个原理,就可以有很多方法了:

3.1 Bagging

简单理解,就是分段函数的概念:用不同的模型拟合不同部分的训练集。以随机森林(Rand Forests)为例,就是训练了一堆互不关联的决策树。但由于训练神经网络本身就需要耗费较多自由,所以一般不单独使用神经网络做Bagging。

3.2 Boosting

既然训练复杂神经网络比较慢,那我们就可以只使用简单的神经网络(层数、神经元数限制等)。通过训练一系列简单的神经网络,加权平均其输出。
技术图片

3.3 Dropout

这是一个很高效的方法。

技术图片

在训练时,每次随机(如50%概率)忽略隐层的某些节点;这样,我们相当于随机从2^H个模型中采样选择模型;同时,由于每个网络只见过一个训练数据(每次都是随机的新网络),所以类似 bagging 的做法,这就是我为什么将它分类到「结合多种模型」中;

此外,而不同模型之间权值共享(共同使用这 H 个神经元的连接权值),相当于一种权值正则方法,实际效果比 L2 regularization 更好。

  1. 贝叶斯方法

这部分我还没有想好怎么才能讲得清楚,为了不误导初学者,我就先空着,以后如果想清楚了再更新。当然,这也是防止过拟合的一类重要方法。

技术图片

综上:
技术图片

引用自知乎 https://www.zhihu.com/question/59201590

机器学习中防止过拟合的处理方法

...合的处理方法过拟合??我们都知道,在进行数据挖掘或者机器学习模型建立的时候,因为在统计学习中,假设数据满足独立同分布(i.i.d,indepen 查看详情

深度学习防止过拟合的方法

...其”记住”了训练样本,然而其泛化误差却很高,在传统的机器学习方法中有很大防止过拟合的方法,同样这些方法很多也适合用于深度学习中,同时深度学习中又有一些独特的防止过拟合的方法,下面对其进行简单的梳理.1.参数范数... 查看详情

机器学习的防止过拟合方法

过拟合??我们都知道,在进行数据挖掘或者机器学习模型建立的时候,因为在统计学习中,假设数据满足独立同分布(i.i.d,independentlyandidenticallydistributed),即当前已产生的数据可以对未来的数据进行推测与模拟,因此都是使用... 查看详情

机器学习中防止过拟合方法

过拟合??在进行数据挖掘或者机器学习模型建立的时候,因为在统计学习中,假设数据满足独立同分布,即当前已产生的数据可以对未来的数据进行推测与模拟,因此都是使用历史数据建立模型,即使用已经产生的数据去训练,... 查看详情

机器学习为什么会产生过拟合,有哪些方法可以预防或克服过拟合?(面试回答)

为什么会产生过拟合,有哪些方法可以预防或克服过拟合?原因一些假设条件(如样本独立同分布)可能是不成立的;训练样本过少不能对整个空间进行分布估计判断依据一般而言训练误差很低,但是测试... 查看详情

机器学习中「正则化来防止过拟合」到底是一个啥原理?

过度拟合的问题通常发生在变量(特征)过多的时候。这种情况下训练出的方程总是能很好的拟合训练数据,也就是说,我们的代价函数可能非常接近于0或者就为0。但是,这样的曲线千方百计的去拟合训练数据,这样会导致它... 查看详情

学习中防止过拟合的处理方法

...理方法过拟合  我们都知道,在进行数据挖掘或者机器学习模型建立的时候,因为在统计学习中,假设数据满足独立同分布(i.i.d,independent 查看详情

防止过拟合的方法都有哪些

参考技术A防止过拟合的方法:1,从模型和数据角度获取更多数据,你的模型可以存储很多很多的信息,这意味着你输入模型的训练数据越多,模型就越不可能发生过拟合。原因是随着你添加更多数据,模型会无法过拟合所有的... 查看详情

防止过拟合的处理方法

原文:http://blog.csdn.net/ZhikangFu/article/details/50885045      http://blog.csdn.net/heyongluoyao8/article/details/49429629 防止过拟合的处理方法过拟合??我们都知道,在进行数据挖掘或者机器学习模型建立的时候 查看详情

过拟合及解决方案

...含在训练集上。所以,必须要解决过拟合问题。为什么在机器学习中比较常见?这是因为机器学习算法为了满足尽可能复杂的任务,其模型的拟合能力一般远远高于问题复杂度,也就是说,机器学习算法有「拟合出正确规则的前... 查看详情

机器学习面试总结————

目录1、使用机器学习模型时,一般怎么处理数据集2、什么是训练误差和测试误差3、什么是过拟合与欠拟合?怎么解决4、机器学习当中的回归模型有哪些5、机器学习当中的分类模型有哪些6、回归和分类模型的评价指标都有哪... 查看详情

机器学习防止过拟合这是作弊吗?

】机器学习防止过拟合这是作弊吗?【英文标题】:machinelearningpreventingoverfittingisthischeating?【发布时间】:2016-09-0418:17:57【问题描述】:在训练期间评估训练/测试结果时说这些值:Train:50.5%-Test:50.2%Train:55.5%-Test:53.2%Train:62.5%-Test:5... 查看详情

机器学习中的过拟合减少

】机器学习中的过拟合减少【英文标题】:overfittingreductioninmachinelearning【发布时间】:2018-08-1600:32:11【问题描述】:伙计们,我正在通过andrewng的coursera进行机器学习。在其中一场讲座中,他描述了我们如何通过修改成本函数来... 查看详情

防止过拟合的方法预测鸾凤花(sklearn)(代码片段)

1.防止过拟合的方法有哪些?过拟合(overfitting)是指在模型参数拟合过程中的问题,由于训练数据包含抽样误差,训练时,复杂的模型将抽样误差也考虑在内,将抽样误差也进行了很好的拟合。产生过拟合问题的原因大体有两... 查看详情

机器学习总结

    机器学习中一般怎么衡量模型效果?auc值怎么理解?    怎么衡量两个分布的差异?KL散度和交叉熵损失有什么不同?    为什么会发生过拟合?/那如何降低过拟合?    正则化    泛化误差如何产生... 查看详情

什么是过拟合?如何避免过拟合问题?

参考技术A过拟合:所选模型的复杂度比真模型更高;学习时选择的模型所包含的参数过多,对已经数据预测得很好,但是对未知数据预测得很差的现象.过拟合一般特点:高方差,低偏差;导致过拟合原因:训练数据不够,模型进行过度训练... 查看详情

机器学习中的数学原理——过拟合正则化与惩罚函数

...白什么是过拟合、正则化、惩罚函数。这个专栏名为白话机器学习中数学学习笔记,主要是用来分享一下我在机器学习中的学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎私信或者评论区留言... 查看详情

机器学习666

...述一下什么是过拟合和欠拟合?  我认为欠拟合是机器学习算法无法从初始训练数据中推断出有效知识。与此相反,过拟合与创建的假设过于普通或抽象而又不切实际的假设模型有关。简单来说,欠拟合模型过于简单,而... 查看详情