训练损失的噪声

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

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

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

noisy train lossaveraged train loss


回答:

我自己找到了答案。

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

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

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

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

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

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

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

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