训练集:使用训练集来对某个网络模型进行训练,使用梯度下降法来更新普通参数,如权重和偏置。
验证集:使用验证集来对训练集训练的模型调节他的超参数(如:网络层数、网络节点数、迭代次数、学习率、正则化参数),这些超参数在训练集训练时候不会更改,在验证的时候是通过认为设定某个超参数,来得到准确率,并选择该模型准确率最好的一组超参数。
测试集:通过验证集选择的一组超参数,结合训练集得到的普通参数(如:权重、移动平均值),求正确率为多少,来评判该模型如何。
简单来说,就是训练集在某组超参数下训练得到普通参数(如,权重、移动平均值);
验证集多选取几组超参数,结合该模型训练集得到的普通参数,求正确率,选取该模型准确率最好的一组超参数;
测试集:通过验证集选择的一组超参数,结合训练集得到的普通参数(如:权重、移动平均值),求正确率为多少,来评判该模型如何。
下面是我个人的理解:
针对网络层数和网络节点数这种超参数,我觉得是你选择某种网络层数或者网络节点之后,你还得使用训练集进行训练,得到普通参数。但是对于学习率和迭代次数这类超参数,不需要在重新训练,只需要使用训练集训练得到的普通参数,即可。
cs231n的课后作业,特征提取那一章的做法是:限定某个网络模型(比如LinearSVM或TwoLayerNet),对于每组超参数(他只考虑了正则化参数、学习率)的选择,都会进行训练集的训练,然后在训练集和验证集上求准确率,保留验证集准确率最好的那一个准确率。