训练损失的噪声

我正在训练一个基于注意力机制的编码器-解码器模型,批次大小为8。我不认为数据集中有太多的噪声,但是示例来自几个不同的分布。

我能在训练损失曲线中看到很多噪声。在进行平均(0.99)后,趋势看起来不错。模型的准确性也不错。

我想了解导致这种损失曲线形状的原因是什么

noisy train lossaveraged train loss


回答:

我自己找到了答案。

我认为其他答案是不正确的,因为它们基于对更简单模型/架构的经验。让我困扰的主要问题是,损失中的噪声通常更对称(你可以绘制平均值,噪声随机地高于或低于平均值)。在这里,我们看到的更多是低趋势路径和突然的峰值。

正如我所写的,我使用的架构是带有注意力的编码器-解码器。可以很容易地得出结论,输入和输出可以有不同的长度。损失是在所有时间步上求和的,并且不需要除以时间步的数量。

https://www.tensorflow.org/tutorials/seq2seq

重要说明:值得指出的是,我们将损失除以批次大小,因此我们的超参数对批次大小“无关紧要”。有些人将损失除以(批次大小 * 时间步数),这会淡化对短句子犯的错误。更微妙的是,我们的超参数(适用于前一种方式)不能用于后一种方式。例如,如果两种方法都使用学习率为1.0的SGD,后一种方法实际上使用了更小的学习率,即1 / 时间步数。

我没有对损失进行平均,这就是为什么噪声是可见的。

P.S. 同样,例如批次大小为8可以有几百个输入和目标,所以实际上在不知道示例的平均长度的情况下,你不能说它是小还是大。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注