gpt4 book ai didi

python - 训练损失减少,开发损失增加

转载 作者:行者123 更新时间:2023-11-30 08:53:36 25 4
gpt4 key购买 nike

我在单层 CNN、二元分类模型中观察到以下模式:

  1. 随着步数的增加,训练损失会减少,而开发损失会增加
  2. 随着步数的增加,训练精度会提高,而开发精度会降低

根据过去的 SO 问题和文献综述,这些模式似乎表明存在过度拟合(模型在训练中表现良好,但无法推广到新的示例)。

下图说明了训练步骤数的损失和准确性。

在两者中,

  • 橙色线代表开发集性能的摘要。
  • 蓝色线代表训练集性能的摘要。

损失: Loss

准确度: enter image description here

我考虑过的传统疗法以及我对它们的观察:

  • 添加 L2 正则化:我尝试了很多 L2 正则化系数——从 0.0 到 4.5;所有这些测试在第 5,000 步时都会在损失和准确度方面产生相似的模式。
  • 交叉验证:交叉验证的作用似乎在网上被广泛误解。如this答案指出,交叉验证用于模型检查,而不是模型构建。事实上,交叉验证是检查模型是否具有良好泛化能力的一种方法。实际上,我显示的图表来自 4 倍交叉验证的其中一个。如果我在所有折叠中观察到类似的损失/准确率模式,除了确认模型不能很好地泛化之外,交叉验证还提供了哪些其他见解?
  • 提前停止:这似乎是最直观的,但损失图似乎表明,只有在观察到开发集损失出现分歧后,损失才会趋于平稳;那么,提前停止的起点似乎并不容易决定。
  • 数据:我可用的标记数据量有限,因此目前无法选择使用更多数据进行训练。

说了这么多,我要问的是:

  1. 如果在损失和准确率中观察到的模式确实表明存在过度拟合,是否还有其他我没有考虑过的方法来抵消过度拟合?
  2. 如果这些模式并不表示过度拟合,那么它们还意味着什么?

谢谢——任何见解将不胜感激。

最佳答案

我认为您完全走在正确的道路上。看起来像经典的过度拟合。

一个选项是添加 dropout(如果您还没有)。它属于正则化的范畴,但现在比L1和L2正则化更常用。

更改模型架构可以获得更好的结果,但很难说具体什么是最好的。它可以帮助通过更多层和可能的一些池化层使其更深。它可能仍然会过度拟合,但在此之前您可能会在开发集上获得更高的准确度。

获取更多数据可能是您能做的最好的事情之一。如果您无法获取更多数据,您可以尝试扩充数据。您还可以尝试清理数据以消除噪声,这有助于防止模型拟合噪声。

您最终可能想尝试设置超参数优化搜索。然而,对于需要一段时间训练的神经网络来说,这可能需要一段时间。确保在超参数调整之前删除测试集。

关于python - 训练损失减少,开发损失增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51212755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com