验证集是否用于更新神经网络?

Kyu*_*eon 3 validation machine-learning bigdata neural-network deep-learning

我有一个关于神经网络的问题

假设我有 60 个训练集、20 个验证集和 20 个测试集。对于每个时期,我都会运行 60 个训练集样本,同时调整每个样本的权重并计算每个验证样本的误差。

据我所知,权重更新发生在训练集中(不是验证集)

但我听说将验证集与训练集分开是为了避免过度拟合。

那么我的问题是

如果验证没有在神经网络中进行任何权重更新,验证集如何帮助神经网络避免过度拟合?

Mat*_*gro 7

正如您所说,它不用于更新神经网络的权重,而是用于监视训练进度。防止过度拟合的第一步是检测过度拟合,使用验证集可以独立衡量网络在训练集之外的泛化程度。

例如,您可以使用验证集来决定何时停止训练(在开始过度拟合之前)。如果您这样做,请记住使用另一组(测试集)来生成最终评估指标。


Max*_*xim 7

验证集用于模型选择。大多数时候,从一开始就不清楚什么架构(神经网络拓扑、层数、层的选择和顺序等)或超参数值(学习率、层大小、丢失概率等)会产生最佳结果。

尝试不同的架构和超参数来选择最佳模型是合乎逻辑的。但是,如果您在测试集上评估每个模型,则意味着您正在根据测试集做出决策,因此测试性能(例如准确性)不再是独立的,并且可以捕获模型的泛化程度。这就是为什么通常会选择与测试集不同的另一组来进行验证。

另请注意,要检测过度拟合欠拟合,需要同时具有训练和验证结果,因为训练损失或准确性本身并不能说明任何问题。这就是为什么需要验证以避免过度拟合(而且不仅仅是)。