文章目录

  • 什么是过拟合/欠拟合?
  • 深度学习有哪些防止过拟合的方法?
    • 1. 参数范数惩罚: L1、L2正则化
      • L1正则与L2正则怎么防止过拟合的? 用公式来规范神经网络的矩阵权重参数
    • 2. 数据增强,增加样本数量
    • 3.提前终止(early stopping)
    • 4.dropout:防止参数过分依赖训练数据,增加参数对数据集的泛化能力。
    • 5.BN(Batch Normalization)
      • BN算法如何防止过拟合的?BN算法如何进行网络训练加速的?
    • 6.参数绑定与参数共享
    • 7.bagging和其他集成方法
    • 8.辅助分类节点(auxiliary classifiers)
  • 深度学习如何解决欠拟合?

什么是过拟合/欠拟合?

无论在机器学习还是深度学习建模当中都可能会遇到两种最常见结果,一种叫过拟合(over-fitting )另外一种叫欠拟合(under-fitting)。

所谓过拟合(over-fitting)其实就是所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。也就是模型在训练数据上损失函数较小,预测准确率较高;但是在测试数据上损失函数比较大,预测准确率较低。
过拟合的本质原因是模型学习的太过精密,导致连训练集中的样本噪声也一丝不差的训练进入了模型。

所谓欠拟合(under-fitting),与过拟合恰好相反,模型学习的太过粗糙,连训练集中的样本数据特征关系(数据分布)都没有学出来。

深度学习有哪些防止过拟合的方法?

1. 参数范数惩罚: L1、L2正则化

正则化:把额外的约束或者惩罚项加到已有模型(损失函数)上,以防止过拟合并提高泛化能力。
L1正则化为:
∣∣w∣∣1=∣w1∣+∣w2∣+...||w||_1 = |w1| + |w2| + ...∣∣w∣∣1​=∣w1∣+∣w2∣+...
又被成为 Lasso ,即绝对值相加,其趋向于一些参数为0。可以起到特征选择的作用.
L2正则化为:
∣∣w∣∣2=w12+w22+...||w||_2 = \sqrt{w1^2 + w2^2 + ...}∣∣w∣∣2​=w12+w22+...​
又成为 ridge,其趋向于使权重很小,趋近于0,但不为0。

L1正则与L2正则怎么防止过拟合的? 用公式来规范神经网络的矩阵权重参数

  • L1正则化的思想是特征选择,L1允许参数为0,这代表在某些地方丢弃掉一些特征,最终选择最明显的特征,从数学上来说,L1正则化是所有参数的绝对值之和,这就要求所有参数的绝对值之和最小,对其进行求导,导数可能为1或-1,而绝对值的取值是大于等于0的,那么就有可能导致某些参数在更新的时候,值趋近于0。
  • L2正则化,数学公式上是所有参数平方和,我们让L2范数的规则项最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会等于0,而是接近于。L2的作用就是让所有的参数都接近于0.

在实际应用中更偏向于L1正则化,因为在防止过拟合的时候,有一定的特征选择功能。
更多L1、L2正则化相关知识见L1、L2正则化

2. 数据增强,增加样本数量

让模型泛化的能力更好的最好办法就是使用更多的训练数据进行训练,但是在实践中,我们拥有的数据是有限的,解决这一问题可以人为的创造一些假数据添加到训练集中。

在神经网络中输入噪声也可以看做是数据增强的一种方式。

在实际的项目中,你会发现,那些技巧虽然都可以减轻过拟合的风险,但是却都比不上增加样本量来的更实在。为什么增加样本可以减轻过拟合的风险呢?之所以过拟合,其实就是因为模型本身见到的数据太少了,比如对于猫这类动物,如果训练数据集中只有一个正拍且坐立的猫,那么当过拟合时,模型往往有可能只能识别出这类姿态的猫,像跳跃的猫、局部捕捉的猫、反转的猫等等可能都识别不出来了,因为让模型见更多的数据是有好处的,而且真的可以防止过拟合。

3.提前终止(early stopping)

提前终止是一种很常用的缓解过拟合的方法,如在决策树的先剪枝的算法,提前终止算法使得树的深度降低,防止其过拟合.

在对模型进行训练时,我们可以将我们的数据集分为三个部分,训练集、验证集、测试集。我们在训练的过程中,可以每隔一定量的step,使用验证集对训练的模型进行预测,一般来说,模型在训练集和验证集的损失变化如下图所示:

可以看出,模型在验证集上的误差在一开始是随着训练集的误差的下降而下降的。当超过一定训练步数后,模型在训练集上的误差虽然还在下降,但是在验证集上的误差却不在下降了。此时我们的模型就过拟合了。因此我们可以观察我们训练模型在验证集上的误差,一旦当验证集的误差不再下降时,我们就可以提前终止我们训练的模型。

4.dropout:防止参数过分依赖训练数据,增加参数对数据集的泛化能力。

dropout提供了一种廉价的bagging集成近似,能够训练和评估指数级数量的神经网络。dropout可以随机的让一部分神经元失活(如下图),这样仿佛是bagging的采样过程,因此可以看做是bagging的廉价的实现。

但是它们训练不太一样,因为bagging,所有的模型都是独立的,而dropout下所有模型的参数是共享的。

通常可以这样理解dropout,假设我们要判别一只猫,有一个神经元说看到有毛就是猫,但是如果我让这个神经元失活,它还能判断出来是猫的话,这样就比较具有泛化的能力了,减轻了过拟合的风险。

Dropout的具体流程如下:
Dropout说的简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。

Dropout是在深度学习中降低过拟合风险的常见方法,它是由Hinton提出的。Hinton认为在神经网络产生过拟合主要是因为神经元之间的协同作用产生的 。因此Hinton在神经网络进行训练的时候,让部分神经元失活,这样就阻断了部分神经元之间的协同作用,从而强制要求一个神经元和随机挑选出的神经元共同进行工作,减轻了部分神经元之间的联合适应性。

5.BN(Batch Normalization)

在Google Inception V2中所采用,是一种非常有用的正则化方法,可以让大型的 卷积网络 训练速度加快很多倍,同时收敛后分类的准确率也可以大幅度的提高.。

BN在训练某层时,会对每一个mini batch数据进行标准化(normalization)处理,使输出规范到N(0,1)的正太分布,减少了internal convariate shift(内部神经元分布的改变),传统的深度神经网络的训练是,每一层的输入的分布都在改变,因此训练困难,只能选择用一个很小的学习速率,但是每一层用了BN后,可以有效的解决这个问题,学习速率可以增大很多倍。

BN算法如何防止过拟合的?BN算法如何进行网络训练加速的?

在训练中,BN的使用使得一个mini-batch中的所有样本都被关联在了一起,因此网络不会从某一个训练样本中生成确定的结果。其实这句话的意思是,BN的使用,使得网络在训练时不依靠于某一个样本进行更新或者输出,而是依赖于整个batch size的数据,这样参数不会太依赖于某一个数据,而是一个batch size内的数据,一定程度上防止了过拟合。

BN是通过将每次卷积后的数据分布拉到指定分布域内(比如标准高斯分布),这样在参数学习时,由于数据分布基本相同,学习起来速度会变得很快,特别是对于sigmoid类型函数来说,将数据分布拉到非梯度饱和区间,这样避免了梯度消失现象,加快了训练速度。对于非sigmoid函数来说,比如ReLU函数,其实也在一定程度上解决了Dead ReLU现象。

6.参数绑定与参数共享

在卷积神经网络CNN中(计算机视觉与卷积神经网络),卷积层就是其中权值共享的方式,一个卷积核通过在图像上滑动从而实现共享参数,大幅度减少参数的个数,用卷积的形式是合理的,因为对于一副猫的图片来说,右移一个像素同样还是猫,其具有局部的特征。这是一种很好的缓解过拟合现象的方法。

同样在RNN中用到的参数共享,在其整条时间链上可以进行参数的共享,这样才使得其能够被训练。

7.bagging和其他集成方法

其实bagging的方法是可以起到正则化的作用,因为正则化就是要减少泛化误差,而bagging的方法可以组合多个模型起到减少泛化误差的作用。

在深度学习中同样可以使用此方法,但是其会增加计算和存储的成本

8.辅助分类节点(auxiliary classifiers)

在google inception V1中,采用了辅助分类节点的策略,即将中间一层的输出用作分类,并按一个较小的权重加到最终的分类结果中,这样相当于做了模型的融合,同时给网络增加了反向传播的梯度信号,提供了额外的正则化的思想。

深度学习如何解决欠拟合?

过拟合是深度网络训练时,常出现的一种问题,然而有的时候欠拟合也经常出现,这个时候就要考虑如何解决欠拟合问题了,一般来说,欠拟合问题主要从以下几个部分解决:

  1. 可以增加模型的复杂程度。
  2. 添加其他特征项。组合、泛化、相关性、上下文特征、平台特征等特征是特征添加的重要手段,有时候特征项不够会导致模型欠拟合。
  3. 添加多项式特征。例如将线性模型添加二次项或三次项使模型泛化能力更强。例如,FM(Factorization Machine)模型、FFM(Field-aware Factorization Machine)模型,其实就是线性模型,增加了二阶多项式,保证了模型一定的拟合程度。
  4. 减小正则化系数。正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。

【防止过拟合的方法】相关推荐

  1. (转载)一种根据纠偏数据对火星坐标进行完美拟合的方法

    一种根据纠偏数据对火星坐标进行完美拟合的方法 (2011-02-15 13:30:27) 转载▼ 标签: 地图 纠偏算法 it (原创:小牙,QQ328959,转载请注明出处) 从GPS设备取得真实坐 ...

  2. 机器学习中常见的过拟合解决方法

    机器学习中常见的过拟合解决方法 参考文章: (1)机器学习中常见的过拟合解决方法 (2)https://www.cnblogs.com/jiangxinyang/p/9281107.html 备忘一下 ...

  3. 神经网络防止过拟合的方法

    知乎上的回答:https://www.zhihu.com/question/59201590 深度学习防止过拟合的方法 过拟合即在训练误差很小,而泛化误差很大,因为模型可能过于的复杂,使其" ...

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

     机器学习中用来防止过拟合的方法有哪些? 雷锋网(公众号:雷锋网)按:本文作者 qqfly,上海交通大学机器人所博士生,本科毕业于清华大学机械工程系,主要研究方向机器视觉与运动规划,会写一些好玩的 ...

  5. 过拟合解决方法python_《python深度学习》笔记---4.4、过拟合与欠拟合(解决过拟合常见方法)...

    <python深度学习>笔记---4.4.过拟合与欠拟合(解决过拟合常见方法) 一.总结 一句话总结: 减小网络大小 添加权重正则化 添加 dropout 正则化 1.机器学习的根本问题? ...

  6. 机器学习:防止模型过拟合的方法

    机器学习中造成过拟合的原因可能有以下几点: (1)数据有噪声 (2)训练数据不足,有限的训练数据 (3)训练模型过度导致模型非常复杂 防止过拟合的方法: 1.提前停止: 对模型进行训练的过程即是对模型 ...

  7. 【机器学习】L1正则化与L2正则化详解及解决过拟合的方法

    在详细介绍L1与L2之前,先讲讲正则化的应用场景. 正则化方法:防止过拟合,提高泛化能力 所谓过拟合(over-fitting)其实就是所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越, ...

  8. pythonchar中的拟合方法_在python中利用numpy求解多项式以及多项式拟合的方法

    构建一个二阶多项式:x^2 - 4x + 3 多项式求解 >>> p = np.poly1d([1,-4,3]) #二阶多项式系数 >>> p(0) #自变量为0时 ...

  9. 机器学习中防止过拟合的方法总结

    来自机器学习成长之路公众号 在对模型进行训练时,有可能遇到训练数据不够,即训练数据无法对整个数据的分布进行估计的时候,或者在对模型进行过度训练(overtraining)时,常常会导致模型的过拟合(o ...

  10. 抑制过拟合的方法之Dropout(随机删除神经元)

    在抑制过拟合的方法中,我们前面有讲到一个方法:抑制过拟合的方法之权值衰减 ,在某种程度上能够很好的抑制过拟合,如果神经网络的模型很复杂,只用权值衰减就难以应对了,这样的情况下,我们一般选择Dropou ...

最新文章

  1. 一个互联网「打工人」的卑微一天
  2. 图片在容器里垂直居中
  3. SharePoint上传循环添加label并获取上传文件名字的扩展名和文件大小(Session[demo] = new ListLabel();方法实现)...
  4. Objective-C中的self和super
  5. Python监视进程创建情况和系统服务状态
  6. Ubuntu下编译运行C#——mono tools
  7. bzoj4517[Sdoi2016]排列计数(组合数,错排)
  8. 生成大量随机数(c语言)
  9. 如何精确理解leader布置的任务
  10. 冗余系统服务器切换的因素,揭秘 | 自动化冗余系统
  11. Android无线调试设备WIFI安装apk
  12. php expecting,php – 解析错误:语法错误,意外的’.’,expecting’,’或’;’
  13. 在PyCharm中大型数据集indexing...加载缓慢的问题
  14. IDEA报错:Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found
  15. ST-GCN论文分析
  16. 微型计算机硬盘安装在哪,微型计算机的硬盘是该机的
  17. 全国计算机等级考试照片多大的,2018年全国计算机等级考试报名照片要求
  18. 如何选择最适合你的Linux发行版
  19. 物联大世界 2019年国际物联网展会5月在北京盛大召开
  20. 用Numpy读取MNIST数据集(附已经读取完成的mat文件)

热门文章

  1. Ubuntu14.0.4 64位安装ADT问题
  2. Mac上浏览器如果总是打不开网页怎么办
  3. CocosCreator自制贝塞尔曲线工具
  4. 149 混合推荐系统案例(功能分析)
  5. RTKLIB学习记录 dops值输出
  6. 邦纳QS18VN6LAF光电传感器
  7. oracle精简版+PLSQL工具链接
  8. 无人机实验平台开发随笔(五)App注册,建立和无人机的连接-1
  9. 直流电机H桥的三种驱动方式:受限单机模式,单极模式,双极模式
  10. IT行业6大岗位最适合零基础入门的是这个,三个月上手