缓解过拟合(overfitting)的方法

为了得到一致假设而使假设变得过度复杂称为过拟合(overfitting),过拟合表现在训练好的模型在训练集上效果很好,但是在测试集上效果差。也就是说模型的泛化能力弱。在很多问题中,我们费心费力收集到的数据集并不能穷尽所有的状态,而且一般训练得到的模型被用来预测未知数据的结果,模型虽然在训练集上效果很好,但是在实际应用中效果差,就说明这个模型训练的并不是很成功,还需要改进。就譬如下方的图像中,左边黑色直线在一定程度拟合数据排列,而蓝紫色的曲线就是照顾到每一个样本点,曲线弯弯折折,属于过拟合;右边黑色的曲线就能把红蓝两种数据点进行很好的分类,过拟合的绿色虽然在此数据上能完美分开两类数据点,可是对于一个新的数据集,其适应能力远不如黑色的曲线。
在这里插入图片描述
过拟合是机器学习面临的关键障碍,各类学习算法都必然带有一些针对过拟合的措施;然而必须认识到,过拟合是无法彻底避免的,我们所做的只是“缓解”,或者说减少其风险。那么如何解决过拟合?下面介绍几种方法。

1. 数据集扩增(Data Augmentation)

众所周知,更多的数据往往胜过一个更好的模型。就好比盲人摸象,不足够的数据让每个人对大象的认识都不同,学习太过片面。更多的数据能够让模型学习的更加全面,然而,在现实世界中,由于条件的限制,而不能够收集到更多的数据。所以,往往在这个时候,就需要采用一些计算的方式与策略在原有数据集上进行手脚,以获得更多的数据。数据集扩增就是要得到更多符合要求的数据。

在物体分类(object recognition)问题中,数据扩增已经成为一项特殊的有效的技术。物体在图像中的位置、姿态、尺度,整体图片敏感度等都不会影响分类结果,所以我们就可以通过图像平移、翻转、缩放、切割等手段将数据库成倍扩充。或者在语音识别(speech recognition)中,加入噪音也被看做是一种数据扩增方式。

2. 改进模型

过拟合主要有两个原因造成的,数据太少和模型太复杂,数据扩增增加数据量,下面我们通过使用合适复杂度的模型来防止过拟合问题,让其能够学习到真正的规则。对于模型复杂,最简单暴力的做法就是减少网络的层数和神经元的个数,但是一般不是很提倡这种做法,是因为人为并不能很好掌控删减的程度,因此下面介绍几种高效的方法。

2.1 Early Stopping

如下图所示,在对模型训练的时候,模型在训练集上的训练误差(training error)随着时间会一直减少,然而模型在验证集上的验证误差会减少到一定程度后逐步上升,形成一个非对称的U型曲线。对模型进行训练的过程即是对模型的参数进行更新的过程,参数更新会用到一些优化算法,为了能够得到最低测试误差时的参数,Early Stopping的做法就是运行优化方法直到若干次在验证集上的验证误差没有提升时候停止。

一般做法是,在训练的过程中,记录到目前为止最好的验证正确率(validation accuracy),当连续10次Epoch,validation accuracy没有达到最佳Accuracy,则认为accuracy不再有所提升,此时就可以停止迭代了。
在这里插入图片描述

**2.2 正则化(regularization)**

损失函数分为经验风险损失函数和结构风险损失函数,结构风险损失函数就是经验损失函数+表示模型复杂度的正则化,正则项通常选择L1或者L2正则化。结构风险损失函数能够有效地防止过拟合。

  • L1正则化是指权值向量 ω \omega ω中各个元素的绝对值之和,通常表示为 ∥ ω ∥ 1 \left \| \omega \right \|_{1}
  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
过拟合overfitting)是指机器学习模型在训练数据上表现很好,但在未见过的数据上表现较差的现象。针对 TensorFlow 模型的过拟合问题,可以采取以下一些方法缓解: 1. 更多的数据:增加训练数据集的规模是减轻过拟合问题的一种有效方法。更多的数据可以提供更多的样本,有助于模型更好地学习数据的潜在模式,减少对训练数据的过度拟合。 2. 数据增强:通过对原始数据进行一系列随机变换或扩充,生成新的训练样本。例如,在图像分类任务中,可以进行随机裁剪、翻转、旋转等操作来增加训练样本的多样性,从而提高模型的泛化能力。 3. 正则化:正则化是通过在损失函数中引入额外的惩罚项来限制模型参数的大小,从而降低模型复杂度。常用的正则化方法包括 L1 正则化和 L2 正则化。在 TensorFlow 中,可以通过在优化器中设置相应的正则化参数来实现正则化。 4. Dropout:Dropout 是一种常用的正则化技术,在训练过程中随机将部分神经元的输出置为零,从而减少神经元之间的依赖关系,降低模型对某些特定特征的依赖性。在 TensorFlow 中,可以通过在网络层中添加 Dropout 层来实现。 5. 模型复杂度:过拟合通常与模型的复杂度有关。如果模型过于复杂,容易在训练集上过度拟合。可以考虑减少模型的层数、神经元的个数等,以降低模型的复杂度。 6. 早停法(Early Stopping):在训练过程中监控模型在验证集上的性能,当模型在验证集上的性能开始下降时,停止训练,避免过拟合。 通过以上方法的组合使用,可以有效减轻 TensorFlow 模型的过拟合问题。但需要注意的是,过拟合是一个普遍存在的问题,不存在一种通用的解决方案,需要根据具体情况进行调试和优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值