问题标签 [overfitting-underfitting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
56 浏览

python - 我的神经网络是过拟合还是欠拟合?

我正在尝试构建一个多类神经网络,从我创建的数据集中尽可能准确地预测石头或剪刀。

当我处理各种参数时,训练集的损失/准确性似乎差异很大。然而,经过大量的试验和错误,这似乎是最好的模型版本。我查看了与我有关的其他问题,我认为这些图表似乎是合适的,但由于我是机器学习的新手,我想知道该模型是否存在一些问题(过度拟合/欠拟合),而我只是没有看到。

我理解过度拟合是指随着时代的增加,准确率上升而损失下降的情况,但我仍然不确定图表上是否有明显的东西超出了我的理解。

这就是我目前编译和拟合模型的方式。

模型精度

模型损失

编辑:

该模型应根据先前确定的系数与 9 个特征相乘来预测石头纸或剪刀。5 个特征是随机创建的系数,代表 5 大人格维度的连续值,范围从 -2 到 2。

其他四个是:

  1. 如果他们赢了或输了。

2, 3, 4) 如果他们赢了,选择石头、纸或剪刀:这三者中的每一个都与一个系数相乘,该系数作为他们获胜的偏见。

选择石头或剪刀的概率有一个内置的激活,它会偏向各自的选择。Scissors 的偏差最大。

有 999 次试验(由于随机机会而排除了第一次),并且 100 次试验值中的每一个,对于 Big 5 Personality 维度,都保持不变。只有代表赢/输和赢选择石头、纸或剪刀的列会逐次更改。

0 投票
0 回答
231 浏览

python - 为什么我的基本 CNN 模型没有过拟合分割图像数据集?

我有一个 2000x256x256x3 RGB 图像(包含紫色/蓝色核的粉红色组织)和相应大小为 200x256x256x1 的地面实况的数据集。地面实况图像是二进制的。现在,这是我的模型(Tensorflow 版本 1.x 和 Keras):

我正在为隐藏的卷积层使用称为GeLU的自定义激活。

型号总结:

我想要实现的目标:我正在获取数据集的一个子集(64 张具有基本事实的图像)并尝试过度拟合模型以查看我的模型是否工作正常。

问题:模型没有过度拟合数据集(从现在开始,数据集意味着仅包含 64 张图像的数据集),并且如果模型过度拟合/篡改数据集,则损失会稳定在一个预期之外的值。

规格:

  1. Optimizer = Adam(learning_rate=0.001),发现 0.001 可以快速减少损失(在 10 个时期内)。
  2. Gradient Accumulation = Adam 被包裹在runai wrapper 中,以便进行梯度累积。这是由于 GPU 内存限制。
  3. 损失函数 = 我使用了 Dice 系数损失,但我发现它本质上是非凸的(论文:语义分割损失函数的调查),因此我使用了 logcosh(骰子损失)。我观察到的指标是准确度、骰子系数和杰卡德指数
  4. 批量大小 = 我发现最好的批量大小是 16。请注意,这是有效的批量大小,即更新梯度的大小。

相关代码:

  1. 数据集存在于形状为 64,256,256,3(图像)的 numpy 数组中,地面实况为 64,256,256,1(Gt)。图像数据集在通过 BatchNormalization 层时未进行归一化。

  2. 训练:

相关代码:

结果:损失和骰子系数处于平稳状态。这不应该发生在过度拟合中。

图表

我试过的:

  1. 使用优化器(Adam、SGD)、批量大小、学习率、时期 ->无效果
  2. 玩学习率调度,reduceLRPlateau,EarlyStopping->无效果
  3. 使用模型宽度、深度、内核大小 -> 16 宽度和深度可以获得上述性能。我发现增加宽度或深度会进一步降低性能。内核大小 5 可提供最佳性能。
  4. 使用不同的损失函数-> Dice loss, log IoU loss, logcoshloss, BCE, BCE+Dice loss, Sensitivity-Specificity loss, Tversky loss, Focal tversyky loss-> logcosh(dice loss) 给出了最好的减少,但最终会出现平台期。

根据近似的普遍定理,我的模型还不够深,无法记住这个小数据集。如果不学习,它至少应该过拟合。我现在的调试知识已经接近尾声,迫切需要帮助以进一步进行。

我还怀疑这个问题可能是我的数据集对模型来说太难学习了?但它不能过拟合吗?因此,这是一个示例数据集图像(右侧带有基本事实):

数据集示例

0 投票
1 回答
131 浏览

python - 如何知道何时发生过拟合?

我有一个包含 3961 个不同行和 32 个列的训练数据,我想适应随机森林和梯度提升模型。在训练时,我需要微调模型的超参数以获得最佳的 AUC。为此,我使用 Scipy 中描述的 Basin-Hopping 算法将数量 1-AUC(Y_real,Y_pred) 最小化;所以我的训练和内部验证子样本是一样的。

优化完成后,随机森林的 AUC=0.994,而梯度提升的 AUC=1。我是否过度拟合这些模型?我怎么知道训练期间何时发生了过度拟合?

0 投票
2 回答
214 浏览

python - 何时判断我们的 CNN 模型是否过拟合?

我有这个模型,我用 100 个 epoch 训练: Model with 100 Epoch

然后我保存模型并再训练 100 个 epoch(总共 200 个 epoch): 额外 100 个 epoch 的模型(200 个 epoch)

我的问题是,我的模型没有过拟合吗?是最优的吗?

0 投票
1 回答
156 浏览

keras - 尽管使用了 Dropout、MaxPooling、Early Stopping 和正则化器,我的 CNN 模型仍然过拟合。如何进一步防止过拟合?

正如标题清楚地描述了我正在经历的情况,尽管使用了Dropout、和MaxPooling,但我的模型仍然过拟合。此外,我尝试了各种,和. 如何进一步防止过拟合?EarlyStoppingRegularizersCNNlearning_ratedropout_rateL1/L2 regularization weight decay

这是模型(KerasTensorFlow后端使用):

这是训练和验证的准确度图: 阴谋

0 投票
1 回答
36 浏览

neural-network - 如何提高 CNN 的性能并减少过拟合?

我正在做一个小型计算机视觉项目,我正在使用卷积网络进行分类。我已经使用了 dropout、l1、l2 正则化和数据增强来减少过拟合。有没有其他技术和算法可以提高模型精度和减少过拟合?

0 投票
1 回答
397 浏览

python - 如何解决基于 NLP 的 CNN 模型中的过度拟合问题,以使用词嵌入进行多类文本分类?

(问题:多类文本分类问题中的过度拟合问题)
在我的个人项目中,目标是根据公司描述对公司的行业标签进行分类。我采取的步骤是:

  1. 删除停用词、标点符号、空格等,并将描述拆分为标记。
  2. 将标签和标记转换为词向量。
  3. 将标记转换为词嵌入模型。
  4. 设置具有 62 个输出节点的 CNN。(62 个不同的行业标签进行分类)

图片/数据集链接供参考:https ://drive.google.com/drive/folders/1yLW2YepoHvSp_koHDDzcAAJBIaYQIen0?usp=sharing


我面临的问题是模型过拟合,不管我做了什么改变。(由于我为损失设置的回调而提前结束)[CNN 准确度][7]

代码链接:https ://colab.research.google.com/drive/1YqbhPX6e4bJ5FnbfHj7fTQH4tUe6diva?usp=sharing

0 投票
0 回答
147 浏览

machine-learning - 用于图像分类的 CNN 模型中的类不平衡

我有一个包含 5 个类的数据集,下面是每个类中的图像数量:

第 1 类:6427 张图片

第 2 类:12678 张图片

第 3 类:9936 张图片

第 4 类:26077 张图片

第 5 类:1635 张图片

我在这个数据集上运行我的第一个 CNN 模型,我的模型被过度拟合,如下所示: 混淆矩阵

在此处输入图像描述

在这些模型中,过度拟合很明显,label4 的灵敏度也很高。我尝试了不同的方法,如增强等来解决这个问题,最后我使用 VGG16 模型修复了它。但是我仍然有类不平衡,但奇怪的是现在类不平衡转移到标签 1,如下所示。 在此处输入图像描述 在此处输入图像描述

为了解决类不平衡,我选择每个类的数量相等,例如,我从每个类中选择 1600 张图像,然后在上面运行我的模型,但我对 label1 的敏感度再次很高。我不知道是什么问题。我想提一下,当我添加 Dropout 层时,我收到以下混淆矩阵的结果,这是非常糟糕的: 在此处输入图像描述

我添加了我的第一个模型,我在下面的标签 4 上得到了过度拟合和高灵敏度:

0 投票
1 回答
63 浏览

tensorflow - 准确度好,预测差

我正在尝试用 CNN 做一个多类分类项目。我的问题是获得良好的准确性,但不能很好地预测验证数据。我已经介绍了 l2 正则化,但它不能很好地泛化。还尝试了不同的 l2 正则化值 (1e-3, 1e-4) 这是我的Accuracy graphLoss graph。拓扑:

` 我尝试了不同的过滤器,减少/增加层。这个问题是因为过度拟合吗?关于我可以改进的任何建议,以便我获得更平滑的曲线和良好的预测。

0 投票
1 回答
178 浏览

python - 如何使用 GridSearchCV 测试回归交叉验证中的过度拟合?

我正在运行一组连续变量和一个连续目标的回归模型。这是我的代码:

我想了解这个模型是否过拟合。我读到合并交叉验证是检查这一点的有效方法。

您可以看到我已将 cv 合并到上面的代码中。但是,我完全坚持下一步。有人可以向我演示将获取 cv 信息的代码,并生成一个图表或一组统计数据,我打算分析这些数据是否过度拟合?我知道在 SO 上有一些这样的问题(例如herehere),但我不明白如何具体地转化为我的情况,因为在这两个例子中,他们只是初始化一个模型并适合它,而我的包含 GridSearchCV?