我正在阅读《Python 深度学习》一书。
读完第 4 章“对抗过度拟合”后,我有两个问题。
为什么增加纪元数可能会导致过度拟合?
我知道增加纪元数将涉及更多的梯度下降尝试,这会导致过度拟合吗?
在对抗过拟合的过程中,准确率会降低吗?
我不确定您正在阅读哪本书,因此在我具体回答问题之前,一些背景信息可能会有所帮助。
首先,增加 epoch 的数量并不一定会导致过度拟合,但肯定会导致过度拟合。如果学习率和模型参数都很小,可能需要很多epoch才会导致可测量的过拟合。也就是说,进行更多培训是很常见的。
为了正确看待这个问题,重要的是要记住,我们最常使用神经网络来构建可用于预测的模型(例如,预测图像是否包含特定对象或下一个时间步骤中变量的值是多少) )。
我们通过迭代调整权重和偏差来构建模型,以便网络可以充当在输入数据和预测输出之间进行转换的函数。我们出于多种原因转向此类模型,通常是因为我们不知道函数是什么/应该是什么,或者函数太复杂而无法进行分析开发。为了使网络能够对如此复杂的功能进行建模,它本身必须能够高度复杂。虽然这种复杂性很强大,但也很危险!该模型可能变得非常复杂,以至于它可以非常精确地有效记住训练数据,但随后无法充当适用于训练集之外的数据的有效通用函数。 IE。它可能会过度拟合。
你可以把它想象成有点像某人(模型)通过一遍又一遍地烘焙水果蛋糕(训练数据)来学习烘焙——很快他们就能够在不使用食谱的情况下烘焙出美味的水果蛋糕(训练),但他们可能无法很好地烘烤海绵蛋糕(未见过的数据)。
回到神经网络!由于神经网络过度拟合的风险很高,因此深度学习工程师可以使用许多工具和技巧来防止过度拟合,例如使用 dropout。这些工具和技巧统称为“正则化”。
这就是为什么我们使用涉及测试数据集的开发和训练策略——我们假装测试数据是看不见的,并在训练期间对其进行监控。您可以在下图中看到这样的示例(形象信用 https://commons.wikimedia.org/wiki/File:2d-epochs-overfitting.svg)。大约 50 个 epoch 后,随着模型开始“记忆训练集”,测试误差开始增加,尽管训练误差仍保持在最小值(通常训练误差会继续改善)。
所以,回答你的问题:
允许模型继续训练(即更多时期)会增加权重和偏差被调整到模型在未见过的(或测试/验证)数据上表现不佳的风险。该模型现在只是“记住训练集”。
持续的 epoch 很可能会提高训练的准确性,但这并不一定意味着模型根据新数据做出的预测会准确——通常情况下它实际上会变得更糟。为了防止这种情况,我们使用测试数据集并在训练期间监控测试准确性。这使我们能够就模型对于未见过的数据是否变得更加准确做出更明智的决定。
我们可以使用一种称为提前停止,一旦测试精度在少数时期后停止提高,我们就停止训练模型。早期停止可以被认为是另一种正则化技术。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)