在第一个时期完成之前,训练和验证损失不应该是近似的吗?

数据挖掘 机器学习 交叉验证 训练 损失函数
2022-03-10 11:56:21

我脑子里有这个迫切的问题,但我在任何地方都找不到答案。在训练期间,至少在 Keras 中,训练损失是在当前批次上计算的,因此可以更新权重。因此,至少在第一个时期,每个批次损失都是在模型实际从该特定时期学习之前计算的。鉴于此,第一个 epoch 的验证损失不应该有点接近第一个 epoch 的训练损失吗,因为两者都是在梯度下降算法没有看到的示例上计算的?对于我迄今为止构建的每个模型,训练损失总是低于验证损失。我预计训练损失在第一次运行数据集时会接近验证损失,然后,随着模型从训练数据集(但不是从验证数据集)中学习,这些错误将开始在它们之间造成差距。我在这里错过了一些微不足道的事情吗?

1个回答

你的批量大小是完整数据集的长度吗?如果你有N样品,并以小批量进料k<N,然后计算批量损失,并且模型的权重随着每个k样品。到第一个 epoch 结束时,可能已经有很多来自训练集的更新(学习)。我相信 Keras 会汇总这些批次损失来计算 epoch 损失。

如果k=N但是,您的训练集和验证集的分布可能不同。