machine-learning - 我们如何分析损失与历元图?

标签 machine-learning nlp lstm pytorch recurrent-neural-network

我正在训练一个语言模型,每次训练时都会绘制损失与历元的关系。我附上了其中的两个样本。

image 1

image 2

显然,第二个表现出了更好的性能。但是,从这些图表来看,我们什么时候决定停止训练(提前停止)?

我们可以从这些图表中了解过度拟合和欠拟合还是我需要绘制额外的学习曲线?

从这些图中可以得出哪些额外的推论?

最佳答案

第一个结论显然是第一个模型的性能比第二个模型差,而且这通常是正确的,只要您使用相同的数据进行验证。如果您训练具有不同分割的模型,情况可能不一定如此。

此外,回答您有关过拟合/欠拟合的问题: 过度拟合的典型图表如下所示:
Learning curve

因此,就您的情况而言,您显然只是达到了收敛,但实际上并没有过度拟合! (这是个好消息!) 另一方面,你可以问问自己是否可以取得更好的结果。我假设你正在降低你的学习率,这让你在某种形式的平台期取得成功。如果是这种情况,请首先尝试减少学习率,看看是否可以进一步减少损失。
此外,如果你仍然看到一个很长的平台期,你也可以考虑提前停止,因为你实际上没有获得更多的改进。根据您的框架,有一些实现(例如 Keras has callbacks for early stopping ,它通常与验证/测试错误相关)。如果您的验证误差增加,与图像类似,您应该考虑使用最低的验证误差作为提前停止的点。我喜欢这样做的一种方法是时不时地对模型​​进行检查点,但前提是验证错误有所改善。
您可以做出的另一个推论是一般的学习率:如果它太大,您的图表可能会非常“跳跃/锯齿状”,而非常低的学习率只会使误差小幅下降,而不是呈指数下降那么多腐烂的行为。
通过比较两个示例中前几个时期的下降陡度,您可以看到这种弱形式,其中第一个示例(学习率较低)需要更长的时间才能收敛。

最后,如果您的训练和测试误差相差很大(如第一种情况),您可能会问自己是否实际上准确地描述或建模了问题;在某些情况下,您可能会意识到(数据)分布中存在一些您可能忽略的问题。不过,由于第二张图要好得多,我怀疑您的问题就是这种情况。

关于machine-learning - 我们如何分析损失与历元图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52145992/

相关文章:

java - 检查 pdf 提取文本质量的快速且无监督的方法是什么?

python - 当LSTM状态重置时

python - 调整 LSTM 模型

python - pickle后属性错误

python - 在 python 中计算稀疏矩阵的广义特征值

machine-learning - Weka 可以处理多少文本?

python - 如何将 TF-IDF 分数组合起来相当于连接两个字符串

python - 如何根据索引向量求和

python - 在新的定制模型中使用时如何强制显示 Keras VGG16 模型并包含详细图层

python - Tensorflow 将 LSTM 的最终状态保存在 dynamic_rnn 中用于预测