嘈杂的训练损失

Dav*_*992 7 machine-learning loss neural-network deep-learning tensorboard

我正在训练基于编码器 - 解码器注意力的模型,批量大小为8.我不怀疑数据集中有太多噪声,但是这些示例来自几个不同的分布.

我可以在火车损失曲线中看到很多噪音.平均后(.99),趋势很好.此外,模型的准确性也不错.

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

嘈杂的火车损失 平均火车损失

Dav*_*992 5

我自己找到了答案。

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

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

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

重要提示:值得指出的是,我们将损失除以batch_size,因此我们的超参数对于batch_size是“不变的”。有些人将损失除以 (batch_size * num_time_steps),这会淡化短句子上的错误。更巧妙的是,我们的超参数(应用于前一种方式)不能用于后一种方式。例如,如果两种方法都使用学习率为 1.0 的 SGD,则后一种方法实际上使用更小的学习率 1 / num_time_steps。

我没有平均损失,这就是可以观察到噪声的原因。

PS 类似地,例如 8 的批量大小可以有几百个输入和目标,因此事实上,在不知道示例的平均长度的情况下,您不能说它是小还是大。