1

我目前正在研究一个高度不平衡的多类分类问题。我想保存我的模型权重以获得最佳时期,但我对应该选择哪个指标感到困惑?

这是我的训练进度条:

进度条

我使用ModelCheckpoint回调tf.keras和监控val_loss作为保存最佳模型权重的指标。

正如你在图片中看到的,

  • 在第 8 个 epoch,我得到了一个val_acc = 0.9845butval_loss = 0.629和准确率和召回率也很高。
  • 但是在第三个时代我得到了val_acc = 0.9840但是val_loss = 0.590

我知道差异并不大,但在这种情况下,相信不平衡数据集的理想指标是什么?

4

2 回答 2

1

最重要的因素是验证和训练误差。如果验证损失(错误)会增加,则意味着过度拟合。您必须将 epoch 的数量设置得尽可能高,并避免过度拟合并根据错误率终止训练。. 只要它不断下降,训练就应该继续。直到模型在第 n 个时期开始收敛。实际上,它应该很好地收敛到低val_loss

请记住,一个时期是一个学习周期,学习者可以在其中看到整个训练数据集。如果你有两个批次,学习者需要在一个时期内经历两次迭代。

链接可能会有所帮助。

您可以将数据分为 3 个数据集,即训练、验证和评估。沿着足够数量的 epoch 训练每个网络,以跟踪训练均方误差,使其保持在最低限度。

训练过程使用训练数据集,应该逐个epoch执行,然后为验证集计算每个epoch中网络的均方误差。为评估过程选择具有最小验证 MSE 的 epoch 网络。

于 2020-05-24T10:42:01.543 回答
0

这可能有几个原因。假设您已使用正确的训练、测试和验证集分离以及数据集的预处理(如 min-max 缩放器)、调整缺失值,您可以执行以下操作。

首先将模型运行几个 epoch 并绘制验证损失图。

如果损失首先减少,达到某个点后现在增加,如果图形是 U 形,那么你可以提前停止。

在其他情况下,当损失稳步增加时,提前停止将不起作用。在这种情况下,在主要层之间添加 0.2-0.3 的 dropout 层。这将在层中引入随机性,并阻止模型记忆。

现在,一旦你添加了 dropout,你的模型可能会突然开始表现得很奇怪。调整激活函数和输出节点或密集层的数量,它最终会变得正确。

于 2020-05-24T11:50:53.190 回答