python – 如何知道是否发生过度拟合或过度拟合?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 如何知道是否发生过度拟合或过度拟合?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3976字,纯文字阅读大概需要6分钟。
内容图文
我正在尝试用两个类进行图像分类.我有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图像很好:
显然,试图将红色等级与蓝色分开的绿色线条decision boundary是“过度装备”,因为虽然它在训练数据上表现良好,但它缺少我们在generalizing时看到的“regularized”形式[** ].
过度拟合These CMU slides/cross validation也明确了问题:
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)显示了这些损失图表的样子:
虽然损失曲线有时更漂亮且更具时间性,但请注意这里的趋势,即训练误差仍在减少,但测试误差正在上升.这是过度拟合的一个大红旗. SO discusses loss curves here
更简洁,更真实的例子是从this CMU lecture on ovefitting ANN’s:开始
如上所述,顶部图形过度拟合.底部图表不是.
这是什么时候发生的?
当模型具有太多参数时,它易于过度拟合(如n度多项式到n-1个点).同样,参数不足的模型也可以是不合适的.
Certain regularization techniques喜欢辍学或批量正常化,或传统上l-1正规化打击这个.我相信这超出了你的问题的范围.
进一步阅读:
> A good statistics-SO question and answers
> Dense reading: bounds on overfitting with some models
> Lighter reading: general overview
> The related bias-variance tradeoff
脚注
[*]没有理由继续写“过度拟合/欠拟合”,因为两者的推理是相同的,但指标被翻转,显然(决策边界没有足够地锁定到真正的边界,而不是紧紧包裹着各个点).通常,过度拟合是更常见的避免,因为“更多迭代/更多参数”是当前主题.如果你有很多数据而不是很多参数,也许你真的担心不合适,但我对此表示怀疑.
[**]在维基百科的第一张图片中,黑色线比绿色线更优选的一种方法是在模型选择期间由您的模型到penalize the number of parameters required
内容总结
以上是互联网集市为您收集整理的python – 如何知道是否发生过度拟合或过度拟合?全部内容,希望文章能够帮你解决python – 如何知道是否发生过度拟合或过度拟合?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。