gpt4 book ai didi

python - 如何知道是否发生欠拟合或过拟合?

转载 作者:行者123 更新时间:2023-12-05 08:20:26 25 4
gpt4 key购买 nike

我正在尝试对两个类进行图像分类。我有 1000 张具有平衡类别的图像。当我训练模型时,我得到的恒定验证准确度较低,但验证损失却在减少。这是过度拟合还是欠拟合的迹象?我还应该注意,我正在尝试使用新类和不同的数据集重新训练 Inception V3 模型。

Epoch 1/10
2/2 [==============================]2/2 [==============================] - 126s 63s/step - loss: 0.7212 - acc: 0.5312 - val_loss: 0.7981 - val_acc: 0.3889

Epoch 2/10
2/2 [==============================]2/2 [==============================] - 70s 35s/step - loss: 0.6681 - acc: 0.5959 - val_loss: 0.7751 - val_acc: 0.3889

Epoch 3/10
2/2 [==============================]2/2 [==============================] - 71s 35s/step - loss: 0.7313 - acc: 0.4165 - val_loss: 0.7535 - val_acc: 0.3889

Epoch 4/10
2/2 [==============================]2/2 [==============================] - 67s 34s/step - loss: 0.6254 - acc: 0.6603 - val_loss: 0.7459 - val_acc: 0.3889

Epoch 5/10
2/2 [==============================]2/2 [==============================] - 68s 34s/step - loss: 0.6717 - acc: 0.5959 - val_loss: 0.7359 - val_acc: 0.3889

Epoch 6/10
2/2 [==============================]2/2 [==============================] - 107s 53s/step - loss: 0.6633 - acc: 0.5938 - val_loss: 0.7259 - val_acc: 0.3889

Epoch 7/10
2/2 [==============================]2/2 [==============================] - 67s 33s/step - loss: 0.6674 - acc: 0.6411 - val_loss: 0.7160 - val_acc: 0.3889

Epoch 8/10
2/2 [==============================]2/2 [==============================] - 105s 53s/step - loss: 0.6296 - acc: 0.6562 - val_loss: 0.7099 - val_acc: 0.3889

Epoch 9/10
2/2 [==============================]2/2 [==============================] - 67s 34s/step - loss: 0.5717 - acc: 0.8273 - val_loss: 0.7064 - val_acc: 0.4444

Epoch 10/10
2/2 [==============================]2/2 [==============================] - 103s 52s/step - loss: 0.6276 - acc: 0.6875 - val_loss: 0.7035 - val_acc: 0.4444

最佳答案

什么是过拟合

过度拟合(或欠拟合)发生在模型对训练数据过于具体(或不够具体)并且不能很好地外推到真实域时。我只想说从现在开始过度拟合以拯救我可怜的打字手指 [*]

我认为 wikipedia图像很好:

wikipedia overfitting curve

很明显,绿线是decision boundary试图将红色类与蓝色类分开是“过度拟合”,因为尽管它在训练数据上表现良好,但它缺少我们喜欢在 regularized 时看到的“generalizing”形式。 [**].

These CMU slides关于过度拟合/cross validation也把问题说清楚:

enter image description here

And here's some more intuition for good measure


一般什么时候会出现过拟合?

Overfitting is observed numerically when the testing error does not reflect the training error

显然,测试误差总是(在预期中)比训练误差差,但在一定次数的迭代中,测试损失将开始增加,即使训练损失继续下降。


如何从视觉上判断模型是否过拟合?

Overfitting can be observed by plotting the decision boundary (as in the wikipedia image above) when dimensionality allows, or by looking at testing loss in addition to training loss during the fit procedure

您没有给我们足够的分数来制作这些图表,但这里有一个示例 ( from someone asking a similar question ) 显示了这些损失图表的样子: Overfit loss curves

虽然损失曲线有时更漂亮和对数,但请注意这里的趋势,即训练误差仍在下降,但测试误差在上升。这是过度拟合的一个大危险信号。 SO discusses loss curves here

稍微简洁和更真实的示例来自 this CMU lecture on ovefitting ANN's:

Ovefitting second example

上面的图和以前一样过拟合。底部的图表不是。


什么时候发生?

当一个模型的参数太多时,它很容易过度拟合(比如 n 次多项式到 n-1 个点)。同样,参数不足的模型可能欠拟合。

Certain regularization techniques比如 dropout 或 batch normalization,或者传统的 l-1 正则化来解决这个问题。我相信这超出了您的问题范围。

延伸阅读:

  1. A good statistics-SO question and answers
  2. Dense reading: bounds on overfitting with some models
  3. Lighter reading: general overview
  4. The related bias-variance tradeoff

脚注

[*] 没有理由继续写“过度拟合/欠拟合”,因为两者的推理是相同的,但指标显然是翻转的(决策边界没有足够锁定真实边界,因为反对被过于紧密地包裹在个别点上)。一般来说,过度拟合更容易避免,因为“更多迭代/更多参数”是当前的主题。如果你有很多数据但参数不多,也许你真的担心欠拟合,但我对此表示怀疑。

[**] 将维基百科的第一张图片中的黑线比绿线更可取的想法形式化的一种方法是 penalize the number of parameters required在模型选择期间由您的模型

关于python - 如何知道是否发生欠拟合或过拟合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52009816/

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