如何知道模型产生过拟合?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
训练(train sets)、开发(dev sets)和测试集(test sets)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
在实践中,检测模型过拟合是困难的。很多时候,将训练好的模型上线后才意识到模型出现问题。事实上,只有通过新数据的建议,才能确保一切正常。但在训练期间,应尽量表示真实情况。因此,比较好的作法是将数据集划分为三个部分——训练集、开发集(也称为交叉验证集)和测试集。构建的模型仅通过训练集来学习,验证集用于跟踪训练进度并根据验证集上的结果优化模型。同时,在训练过程结束后使用测试集来评估模型的性能。使用全新的数据可以让我们对算法的仿真情况有一个客观的看法。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
偏差和方差文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
当准备好数据集后,需要使用工具来评估模型的性能。然而,在得出任何结论之前,我们应该熟悉两个新的概念——偏差(bias)和方差(variance)。为了让我们更好地理解这个复杂的问题,这里举一个简单的例子。假设数据集由位于二维空间中的两类点组成,如图2所示。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
防止过拟合的方法文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
介绍文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
当我们的神经网络具有较高的方差时,这里有很多方法可以有所帮助。比如,非常普遍的方法——获取更多数据,这种方法一般每次都运行良好。还有一些操作,例如正则化,但这种方法需要一些经验和技巧,因为对神经网络施加太多限制可能会损害其有效学习的能力。现在让我们试着看一下减少过拟合的一些最流行的方法,并讨论它们起作用的原因。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
L1和L2正则化文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
当需要减少过拟合时,应该尝试的第一种方法是正则化。这种方法涉及到在损失函数中添加一个额外的式子,这会使得模型过于复杂。简单来说,就是在权重矩阵中使用过高的值,这样就会尝试限制其灵活性,同时也鼓励它根据多种特征构建解决方案。这种方法的两个流行版本是L1-最小绝对偏差(LAD)和L2-最小二乘误差(LS),相应的公式如下。在大多数情况下,L2正则化是首选,因为它将不太重要的特征的权重值减小到零。但是在处理具有大量异常值的数据集时不是首选。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
在前面提到的L1和L2两个版本中的正则化公式中,引入了超参数λ (也称为正则化率)。在选择其值时,试图在模型的简单性和拟合训练数据之间达到最佳点。增加λ值也会增加正则化效应。在图4中可以注意到,没有正则化的模型获得的平面,以及具有非常低λ的模型其系数值非常“紊乱”,有许多具有重要价值的峰值。在应用具有较高超参数值的L2正则化之后,该平面图是平坦的。最后,可以看到将lambda值设置为0.1或1会导致模型中权重值急剧下降。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
dropout文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
另一种非常流行的神经网络正则化方法是dropout。这个想法实际上非常简单——神经网络的每个单元(属于输出层的那些单元)都被赋予在计算中被暂时忽略的概率p。超参数p称为丢失率,通常将其默认值设置为0.5。然后,在每次迭代中,根据指定的概率随机选择丢弃的神经元。因此,每次训练会使用较小的神经网络。下图显示了使用dropout操作的神经网络的示例。从图中可以看到,在每次迭代过程中是随机停用来自第二和第四层神经元。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
提前停止(early stopping)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
下图显示了在后续的学习过程迭代期间在测试和交叉验证集上得到的准确度值的变化情况。从中可以看到,最终得到的模型并不是最好的模型。最终得到的结果比150个epoch后的情况要糟糕得多。为什么不在模型开始过拟合之前就中断学习过程?这一观察启发了一种流行的过拟合减少方法,即提前停止(early stopping)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
结论文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html
掌握如何确认模型是否过拟合对于构建神经模型是很重要的,掌握防止过拟合发生的解决方法也是最基本的。受限于篇幅,本文中没有进行详细描述,但总结了相关内容,具体的操作技巧还需要各位在实践中进行尝试。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/7379.html