过拟合无法避免只能缓解(过拟合解决)
过拟合
判定在构建模型的过程中 , 在每个epoch 中使用验证数据测试室当前已构建的模型 ,得到模型的损失和准确率 , 以及 每个epoch的验证损失和验证准确率 。当训练集的损失一直下降 , 验证集的损失一直上升时即出现了过拟合 , 当训练集的和验证集的准确率都很低 , 那么说明模型欠拟合 。
原因1 、数据量太小
2 、训练集和验证集分布不一致
3 、模型复杂度太大
在选择模型算法的时候 ,首先就选定一个复杂度很高的模型 , 然后数据的规律是很简单的 , 复杂的模型反而就不适用了 。
4 、数据量中存在噪声
数据还有很多噪声 , 模型在学习的时候 , 肯定也会把噪声规律学习到 , 从而减小了具有一般性的规律 。这个时候模型用来预测肯定效果不好 。
5 、过度训练
只要训练时间足够长, 那么模型肯定就会把一些噪声隐含到规律学习到 , 这个时候降低模型的性能是显而易见的 。
解决 1 、正则化正则化可用于降低模型的复杂性 , 这是通过惩罚损失函数完成的, 可通过L1和L2两种方式完成 。
L1惩罚的目的是优化权重绝对值的总和 。它生成一个简单且可解释的模型 , 且对于异常值是鲁棒性的 。 L2惩罚权重值的平方和 。该模型能够学习复杂的数据模式 , 但对于异常值不具备鲁棒性 。 2 、DropoutDropout是一种正则化方法 , 用于随机禁用神经网络单元 , 它可以在任何隐藏层或输入层上实现 , 但不能在输出层上实现 。该方法可以免除对其他神经元的依赖 , 进而使网络学习独立的相关性。该方法能够降低网络的密度 。
3 、早停对模型进行迭代训练时 , 我们可以度量每次迭代的性能 , 当验证损失开始增加时 , 我们应该停止训练模型 , 这样就能阻止过拟合 。
下图展示了停止训练模型的时机:
4 、数据增强 5 、交叉验证交叉验证是防止过拟合的好方法 , 在交叉验证中 ,我们生成了多个训练测试划分并调整模型。K-折验证是一种标准的交叉验证方法, 即将数据分成k个子集 , 用其中一个子集进行验证 , 其他子集用于训练 。
交叉验证允许调整超参数,性能是所有值的平均值 。该方法计算成本较高 ,但不会浪费太多数据 。交叉验证过程参见下图:
6 、BN批归一化处理 , 使得每一层的数据分布不变 , 做归一化处理 , 加快了模型的收敛速度 ,避免梯度消失 , 提高准确率 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!