是否有可能在一段时间内出现小于训练错误的验证错误,然后出现相反的行为?
无论机器学习算法如何,您在图表中注意到的行为总是如此。机器学习将要求您拟合一些参数,以便模型可以捕获从输入空间到所需输出的映射。
在训练开始时,这些参数将全部随机分配,因此我们应该假设随机性能,因此 50% 用于 0/1 分类。由于使用训练数据调整模型参数,该模型将倾向于减少训练和评估损失。但是,经过一些训练后,评估损失会开始增加。在这一点上,参数不再对数据进行泛化,而是过度拟合并专门识别训练数据中的点。
这不是我们想要的。这是过拟合。我们希望以评估集的最小损失停止训练。
另一种思考方式是,如果我让孩子看一些乘法示例,
3*2 = 6
4*3 = 12
...
...
10*1= 10
如果孩子学习了一些关于如何 x*y=z 的一般规则,那么他将能够回答我问他的任何新的乘法问题。但是,如果他只记住我向他们展示的几个示例的结果,那么他们将在任何新示例中出错。这是过拟合。
作为另一个例子,想象用一个 5 阶多项式拟合 2 个变量之间的 2 阶关系。这将过于具体地匹配这些点,并且不会推广到新数据。
您的验证错误一直停留在 2.20,但训练错误仍在减少。这可能是过度拟合的情况,因为它发生在过度学习数据时。
尝试使用L2 正则化,它通过强制权重参数尽可能小来克服过拟合问题。
另一件事,您可以尝试使用dropout 技术,这也将有助于解释模型行为。
鉴于缺乏细节,我想说一个可能的原因是使用dropout。Dropout 是一种正则化技术,它在训练过程中随机消除一些元素,从而使模型在训练数据上表现更差,但对未见数据的泛化效果更好。
评估模型时不应用 Dropout。这是验证损失低于训练损失的典型原因之一。
这将在步骤 150 之前解释您有更好的验证损失。在这一步,您的模型已经对训练数据过度拟合,足以补偿正则化并保持过度拟合,因此训练损失不断改善,而验证损失则没有。


