如何去除训练阶段损失图中的“毛刺”?

时间:2018-07-28 01:59:44

标签: tensorflow machine-learning deep-learning tensorboard training-data

在训练深度学习模型时,我注意到训练损失很少。如下图所示,在某些时期有一些“毛刺”。

enter image description here

请让我知道原因以及如何消除它们?

谢谢

1 个答案:

答案 0 :(得分:0)

这可能是完全正常的,并且是由于学习过程的工作原理所致。

在实践中,由于使用随机梯度下降(SGD)可以通过使用当前的最小批量损失情况近似整个数据集的损失情况来优化损失函数,因此优化过程会变得嘈杂并达到顶峰。

实际上,在每次迭代中,您都要评估模型在当前小批量生产中获得的损失,然后根据该损失更新模型参数。但是,此损失值不一定是您通过对整个数据集进行预测而获得的值。例如,在一个二元分类问题中,想象一下,如果由于随机性而导致您的当前小批量生产仅包含一个A类的样本而不是A和B类的样本,那么会发生什么情况:当前损失未考虑B类,您将仅根据一类(A)的结果更新模型参数。结果,如果下一个小批量必须包含相同数量的A类和B类样本,您的结果将比平时更糟。

即使通常通过使用平衡小批处理或加权损失函数来解决类之间的不平衡问题,更一般而言,您必须认为我所描述的内容也可能在一个类中发生。假设您在A类内部存在很大的异质性:您的模型可以根据某些功能而不是其他功能更新参数。

对于更多的理论方面,我真的很鼓励您阅读,您可以看一下: http://ruder.io/optimizing-gradient-descent/