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

时间:2017-10-13 05:28:48

标签: validation machine-learning neural-network deep-learning bigdata

我有一个神经网络的问题

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

据我所知,体重更新发生在训练集中(未验证集)

但我听说训练集中的分离验证集是为了避免过度拟合。

然后我的问题是

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

2 个答案:

答案 0 :(得分:2)

正如您所说,它不是用于更新神经网络的权重,而是用于监控培训的进度。防止过度拟合的第一步是检测它,并使用验证集提供一个独立的衡量标准,表明网络在训练集之外的推广程度。

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

答案 1 :(得分:2)

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

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

另请注意,要检测过度拟合不合适,需要同时具备培训和验证结果,因为单独的训练损失或准确性并不能说明任何事情。这就是为什么必须进行验证以避免过度拟合(而不仅仅是)。