深度学习之过拟合那些事儿
2023-06-18 本文已影响0人
小黄不头秃
神经网络为什么会出现过拟合的情况呢?什么是过拟合呢?
一、过拟合的原因
过拟合的原因总体来说,就是模型能力和数据量不匹配。
也就是说模型过大,其学习能力远超数据集里的特征总量,导致模型里的参数直接记住了所有的特征量,以至于在训练的时候损失很低,准确率很高,然而在测试集或者实际生产活动中,表现欠佳。这就被称之为过拟合。
当然并不是说,训练集表现好,测试集表现差的就都是过拟合。这也有可能是训练集和测试集分布不一样所导致的。所以过拟合还是得具体观察。
二、如何防止过拟合?
那么总体来说,就是给模型增加先验知识,例如说,增加数据量、降低模型的参数量,使用dropout,resblock等。我们总体可以分为:数据上加先验、模型上加先验、损失函数上加先验。
(1)在数据上加先验
- 增加数据量,增加样本数量。丰富样本多样性
- 特征工程,提取一些特征。例如:使用opencv提取轮廓、使用数据增强技术等
(2)在模型上加先验
- 减少模型参数量,可以减少神经元的数量和减少神经网络层数。
- 使用DropOut。
- 修改模型结构:例如使用残差块
(3)在损失函数上增加先验
- 使用正则化,L1, L2,在pytorch中的weight-decay参数。
- 在损失上加入子损失辅助梯度更新。
- 使用提示性学习或者指示性学习