深度学习知识总结-过拟合、欠拟合和正则化

在深度学习(机器学习)领域,训练模型时,我们不仅要求模型对训练数据集有很好的拟合(较低的训练误差),同时也希望它可以对未知数据集(测试集)有很好的拟合结果(泛化能力),所产生的测试误差被称为泛化误差。其中就会产生欠拟合和过拟合的问题。一. 欠拟合什么是欠拟合欠拟合是指模型在训练集上的表现很差,训练误差高。我们需要模型尽可能地学习到给定数据集的特征,从而拟合数据分布,而欠拟合即模型在拟合训练集时,效果并不好,没有学习到数据分布的规律。造成欠拟合的原因,一般是模型的复杂度较低,模型在训练集中的表现都不
摘要由CSDN通过智能技术生成

在深度学习(机器学习)领域,训练模型时,我们不仅要求模型对训练数据集有很好的拟合(较低的训练误差),同时也希望它可以对未知数据集(测试集)有很好的拟合结果(泛化能力),所产生的测试误差被称为泛化误差。其中就会产生欠拟合和过拟合的问题。

一. 欠拟合


什么是欠拟合

欠拟合是指模型在训练集上的表现很差,训练误差高。我们需要模型尽可能地学习到给定数据集的特征,从而拟合数据分布,而欠拟合即模型在拟合训练集时,效果并不好,没有学习到数据分布的规律。造成欠拟合的原因,一般是模型的复杂度较低,模型在训练集中的表现都不够好。

如何解决欠拟合问题

在模型刚开始训练时,一般存在欠拟合的问题,在经过不断的训练之后,会一定程度改善欠拟合的程度。但是,如果在经过足够的训练后,还存在欠拟合的问题,可以通过增加网络的复杂度和增加特征来解决欠拟合的问题。

二. 过拟合

什么是过拟合

过拟合是指模型在训练集中有很好的表现,但是在测试集中误差大,两者误差差距大。也即模型的复杂度高于实际需要解决的问题,模型在训练集上表现很好,但在测试集上却表现很差。可以理解为,模型直接将训练集的数据特征死记硬背,无法做到举一反三,在新的数据中表现很差,对训练集“过解读”,泛化能力差。

以下图可以很好的解释欠拟合,过拟合的效果:

欠拟合、过拟合
图中,图一为欠拟合现象,模型对训练数据的拟合能力不够,图二为正常拟合,图三为过拟合现象,即模型存在对训练数据“过度解读”。

为什么会出现过拟合现象

造成过拟合的原因主要有以下几种:

  • 训练数据集样本单一,样本不足。如果训练样本只有负样本,然后那生成的模型去预测正样本,这肯定预测不准。所以训练样本要尽可能的全面,覆盖所有的数据类型。
  • 训练数据中噪声干扰过大。噪声指训练数据中的干扰数据。过多的干扰会导致记录了很多噪声特征,忽略了真实输入和输出之间的关系。
  • **模型过于复杂。**模型太复杂,已经能够“死记硬背”记下了训练数据的信息,但是遇到没有见过的数据的时候不能够变通,泛化能力太差。我们希望模型对不同的模型都有稳定的输出。模型太复杂是过拟合的重要因素。

如何防止过拟合

要想解决过拟合问题,就要显著减少测试误差而不过度增加训练误差,从而提高模型的泛化能力。可以使用正则化(Regularization)方法解决模型过拟合问题。

常用的正则化方法根据具体的使用策略不同可分为:

(1)直接提供正则化约束的参数正则化方法,如L1/L2正则化;

(2)通过工程上的技巧来实现更低泛化误差的方法,如提前终止(Early stopping)和Dropout;

(3)不直接提供约束的隐式正则化方法,如数据增强等。

1. 获取和使用更多的数据(数据集增强)

让机器学习或深度学习模型泛化能力更好的办法就是使用更多的数据进行训练。但是,在实践中,我们拥有的数据量是有限的。解决这个问题的一种方法就是创建“假数据”并添加到训练集中——数据集增强。通过增加训练集的额外副本来增加训练集的大小,进而改进模型的泛化能力。

2. 采用合适的模型(控制模型的复杂度)

过于复杂的模型会带来过拟合问题。对于模型的设计,目前公认的一个深度学习规律"deeper is better"。国内外各种大牛通过实验和竞赛发现,对于CNN来说,层数越多效果越好,但是也更容易产生过拟合,并且计算所耗费的时间也越长。

3. 降低特征的数量

对于一些特征工程而言,可以降低特征的数量——删除冗余特征,人工选择保留哪些特征。这种方法也可以解决过拟合问题。

4. L1 / L2 正则化
(1) L1 正则化

在原始的损失函数后面加上一个L1正则化项,即全部权重 ω \omega ω的绝对值的平均,再乘以 λ \lambda λ。则损失函数变为:
C = C 0 + λ n ∑ i ∣ ω i ∣ C = C_0 + \frac{\lambda}{n}\sum_i|\omega_i| C=C0+nλiωi

求导为:
∂ C ∂ ω = ∂ C 0 ∂ ω + λ n s i n ( ω ) \frac{\partial C}{\partial \omega} = \frac{\partial C_0}{\partial \omega} + \frac{\lambda}{n}sin(\omega) ωC=ωC0+

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HUST_Smartdeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值