1. 训练集、验证集和测试集
如何证明我们提出的模型可以解决(部分解决)一个问题,即如何证明一个模型的有效性?这和我们平时的考试是一样的,证明我们掌握了某类知识的方式,就是去参加考试。那么如何设计考试以客观的考察出每个人的能力呢?回想我们的高中阶段,有一些教材,让我们平时学习其基本知识(训练集),有一些模拟考试,让我们知道我们到底掌握的怎么样,然后再改进我们的学习(验证集),最后的高考决定我们的去向(测试集)。
- 训练集:用于训练的样本集合,主要用来训练网络参数;
- 验证集:用于验证模型性能的样本集合。不同网络模型(不同超参数/结构的神经网络)在训练集上训练结束后,通过验证集来比较判断各个模型的性能;
- 测试集:对于训练完成的神经网络,用于客观评价神经网络的性能。
2. 验证集和测试集的区别
验证集和测试集的概念容易混淆,如上图所示,验证集和测试集间的主要区别为:
- 网络模型的参数主要有普通参数(权重/偏置等)和超参数(学习率/网络层数等)。普通参数在训练集上进行训练,超参数则通过验证集确定;
- 测试集用于客观评价训练完成后的网络模型,因此与验证集和训练集之间相互独立,而且测试集不能提出对参数/超参数的修改意见,只能作为评价网络性能的一个指标。
使用验证集是为了快速调参,也就是用验证集选择超参数(网络层数,网络节点数,迭代次数,学习率等)。此外验证集还可用于监控模型是否异常(是否过拟合),然后决定是否需要提前停止训练。验证集的关键在于 选择超参数,手动调参是为了让模型在验证集上的表现越来越好,如果把测试集作为验证集,调参以拟合测试集,就有作弊之嫌。而测试集既不参与参数的学习过程,也 不参与参数的选择过程,仅仅用于模型评价。
【参考】

被折叠的 条评论
为什么被折叠?



