首页 百问百答 帖子详情
防止过拟合的方法有哪些
收藏
快速回复
百问百答 问答学习资料 376 0
防止过拟合的方法有哪些
收藏
快速回复
百问百答 问答学习资料 376 0

本文给出一些常见的防止过拟合的方法。

1、交叉验证
交叉验证是防止过拟合的好方法。在交叉验证中,我们生成多个训练测试划分(splits)并调整模型。K-折验证是一种标准的交叉验证方法,即将数据分成 k 个子集,用其中一个子集进行验证,其他子集用于训练算法。在这个方法中,其实我们做的是让模型不要去拟合某一个验证集,因为我们只依赖验证集去调整超参数,那么我们调整得到的超参数可能就会过拟合该验证,但是在真实的测试中反而表现不佳。

2、更多的数据进行训练
用更多相关数据训练模型有助于更好地识别信号,避免将噪声作为信号。如果我们没有更多的标签数据,也可以使用数据增强来增加训练数据,例如通过翻转(flipping)、平移(translation)、旋转(rotation)、缩放(scaling)、更改亮度(changing brightness)等方法来实现图像任务的数据增广。

3、移除特征
我们移除输入中的无关紧要的特征,能够降低模型的复杂性,并且在一定程度上避免噪声,使模型更高效。为了降低复杂度,我们可以移除层或减少神经元数量,使网络变小。如在中央凹检测任务中,我只取了图像中的一小部分区域。

4、提前终止
对模型进行迭代训练时,我们可以度量每次迭代的性能。当验证损失开始增加时,我们应该停止训练模型,这样就能阻止过拟合。

5、正则化
正则化可用于降低模型的复杂性。这是通过惩罚损失函数完成的,可通过 L1 和 L2 两种方式完成。正则化防止我们的模型的某个权重的响应值变得特别大,从而过分的拟合训练数据中出现的特殊值。我们通过正则化,来使模型的权重均衡的分布在网络中。

6、Dropout
Dropout 是一种正则化方法,用于随机禁用神经网络单元。它可以在任何隐藏层或输入层上实现,但不能在输出层上实现。该方法可以免除对其他神经元的依赖,进而使网络学习独立的相关性。

0
收藏
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户