验证损失

数据挖掘 神经网络 损失函数
2021-10-06 01:00:06

我无法将我的大脑包裹在验证损失上。据我了解,损失是在神经网络中的前馈结束时计算的,并用于反向传播以更新权重。但我也将验证损失视为一个指标,除了观察之外,我并不完全理解它的用途,验证损失是否用于更新权重?或者它只是衡量你在当前时代的观察距离有多远?

1个回答

验证损失与训练损失是相同的度量,但它用于更新权重。它以相同的方式计算 - 通过在输入上运行网络xi并比较网络输出y^i具有基本真实值yi使用损失函数,例如J=1Ni=1NL(y^i,yi)在哪里L是以某种方式基于预测值和目标之间的差异的个体损失函数。

更新权重时是否使用验证损失?

不,事实上这与它的目的背道而驰。

或者它只是衡量你在当前时代的观察距离有多远?

是的。使用您没有训练过的数据集的目的是衡量您的模型对未见记录的泛化程度。很多时候,在构建预测模型时,这是主要目标,实际上比拟合训练数据更重要(拟合数据部分是学习所必需的,但不是目标)。每当您构建模型以用于针对新的、以前看不见和未标记的数据做出预测时,就会出现这种情况。

使用相同角色的训练数据来检查泛化是不安全的。许多模型类型可以完美地学习训练数据,但在从不是来自训练集的新值中进行预测时却很糟糕。这是您要避免的,通常是由过度拟合引起的,而神经网络通常会过度拟合。使用验证集是一种监控和帮助控制过拟合的方法。

神经网络(和其他模型类型)通常在每个 epoch 上使用验证集,因为训练时间过长会导致过度拟合,并且模型无法从中恢复,它们只会变得更糟。所以它可以节省很多浪费的精力来监控验证损失,并在很长时间没有改善或开始变得更糟时停止训练。