过拟合定义:模型在训练集上的表现很好,但在测试集和新数据上的表现不好。网络
训练集上的表现 | 测试集上的表现 | 结论 |
很差 | 很差 | 欠拟合 |
好 | 很差 | 过拟合 |
好 | 好 | 适度拟合 |
训练数据集过小,过拟合出现的缘由:函数
一、下降模型复杂度学习
处理过拟合的第一步就是下降模型复杂度。为了下降复杂度,咱们能够简单地移除层或者减小神经元的数量使得网络规模变小。与此同时,计算神经网络中不一样层的输入和输出维度也十分重要。虽然移除层的数量或神经网络的规模并没有通用的规定,但若是你的神经网络发生了过拟合,就尝试缩小它的规模。测试
二、增长更多数据大数据
使用大数据集训练模型ui
三、数据加强spa
使用数据加强能够生成多幅类似图像。这能够帮助咱们增长数据集规模从而减小过拟合。由于随着数据量的增长,模型没法过拟合全部样本,所以不得不进行泛化。计算机视觉领域一般的作法有:翻转、平移、旋转、缩放、改变亮度、添加噪声等等.net
四、正则化3d
在损失函数后面加一个正则化项,常见的有L1正则化和L2正则化blog
L1惩罚项的目的是使权重绝对值最小化。公式以下:
$$L(x, y) \equiv \sum_{i=1}^{n}\left(y_{i}-h_{\theta}\left(x_{i}\right)\right)^{2}+\lambda \sum_{i=1}^{n}\left|\theta_{i}\right|$$
L2惩罚项的目的是使权重的平方最小化。公式以下:
$$L(x, y) \equiv \sum_{i=1}^{n}\left(y_{i}-h_{\theta}\left(x_{i}\right)\right)^{2}+\lambda \sum_{i=1}^{n} \theta_{i}^{2}$$
如下表格对两种正则化方法进行了对比:
L1正则化 | L2正则化 |
1. L1惩罚权重绝对值的总和 | 1. L2惩罚权重平方和的总和 |
2. L1生成简单、可解释的模型 | 2. L2正则化可以学习复杂数据模式 |
3. L1受极端值影响较小 | 3. L2受极端值影响较大 |
若是数据过于复杂以致于没法准确地建模,那么L2是更好的选择,由于它可以学习数据中呈现的内在模式。而当数据足够简单,能够精确建模的话,L1更合适。对于我遇到的大多数计算机视觉问题,L2正则化几乎老是能够给出更好的结果。然而L1不容易受到离群值的影响。因此正确的正则化选项取决于咱们想要解决的问题。
五、dropout
dropout 是一种避免神经网络过拟合的正则化技术。像L1和L2这样的正则化技术经过修改代价函数来减小过拟合。而丢弃法修改神经网络自己。它在训练的每一次迭代过程当中随机地丢弃神经网络中的神经元。当咱们丢弃不一样神经元集合的时候,就等同于训练不一样的神经网络。不一样的神经网络会以不一样的方式发生过拟合,因此丢弃的净效应将会减小过拟合的发生。
如上图所示,丢弃法被用于在训练神经网络的过程当中随机丢弃神经网络中的神经元。这种技术被证实能够减小不少问题的过拟合,这些问题包括图像分类、图像切割、词嵌入、语义匹配等问题。
六、早停
如上图所示,在几回迭代后,即便训练偏差仍然在减小,但测验偏差已经开始增长了。
七、从新清洗数据
把明显异常的数据剔除
八、使用集成学习方法
把多个模型集成在一块儿,下降单个模型的过拟合风险