Machine learning 我们如何分析损失与时代的关系图?

Machine learning 我们如何分析损失与时代的关系图?,machine-learning,nlp,lstm,pytorch,rnn,Machine Learning,Nlp,Lstm,Pytorch,Rnn,我正在训练一个语言模型,每次训练时都会绘制损失与时代的对比图。我附上两个样品 很明显,第二个表现更好。但是,从这些图表中,我们何时决定停止训练(提前停止) 我们能从这些图中理解过度拟合和欠拟合吗?或者我需要绘制额外的学习曲线吗 从这些图中可以得出哪些额外的推论 第一个结论显然是第一个模型的性能比第二个模型差,这通常是正确的,只要使用相同的数据进行验证。在训练具有不同拆分的模型的情况下,可能不一定如此 此外,要回答您关于过盈/过盈的问题: 过拟合的典型图形如下所示: 因此,在您的情况下,您显

我正在训练一个语言模型,每次训练时都会绘制损失与时代的对比图。我附上两个样品

很明显,第二个表现更好。但是,从这些图表中,我们何时决定停止训练(提前停止)

我们能从这些图中理解过度拟合和欠拟合吗?或者我需要绘制额外的学习曲线吗


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

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

此外,要回答您关于过盈/过盈的问题: 过拟合的典型图形如下所示:

因此,在您的情况下,您显然只是达到了收敛,但实际上并没有过度拟合!(这是个好消息!)另一方面,你可以问问自己是否能取得更好的结果。我假设你的学习速度在下降,这让你在某种程度上达到了平稳状态。如果是这样的话,首先试着降低学习率,看看能否进一步减少损失。
此外,如果你仍然看到一个很长的高原,你也可以考虑提前停止,因为你实际上没有获得更多的改进。根据您的框架,有一些实现(例如,通常与验证/测试错误相关)。如果验证错误增加,类似于图像,则应考虑使用LuestEt验证错误作为早期停止的一个点。我喜欢这样做的一种方法是不时检查模型,但前提是验证错误有所改善。
您可以做出的另一个推论是一般的学习率:如果学习率太大,您的图表可能会非常“跳跃/锯齿”,而非常低的学习率只会使误差略有下降,而不会有太多指数衰减行为。
通过比较两个例子中前几个时期的下降幅度,你可以看出这是一种弱形式,其中第一个时期(学习率较低)的收敛时间较长


最后,如果您的培训和测试错误相距甚远(如第一种情况),您可能会问自己,您是否真正准确地描述或建模了问题;在某些情况下,您可能会意识到(数据)分发中存在一些您可能忽略的问题。但是,由于第二个图表要好得多,我怀疑您的问题是否如此。

嘿,非常感谢。>我正在研究官方的PyTorch示例单词级语言模型。他们使用20作为初始值,衰减四分之一。我发现这个值有点不寻常,降低了初始学习率,丢失被卡住了。你觉得怎么样?>我发现一些验证集有点难以拟合。也许你的第二个推论是正确的。我认为衰减四分之一是相当苛刻的,但这取决于问题。(注意,以下是我个人的观点)我从一个较小的学习率(0.001-0.05)开始,然后在每个历元后乘以0.98-0.9995衰减(如果训练数据较大,则更频繁)。我另外增加了衰变,一旦某个时期过去了。通常,玩弄模型并进行有根据的猜测是一个好主意,或者对超参数使用随机搜索/梯度增强。