机器学习中的验证集的作用和如何使用

验证集的作用:

在机器学习或者深度学习中,我们需要了解我们的模型包括什么:1)模型设计:①模型架构(包括模型有多少层,每层有多少个神经元);②可训练权重参数(模型内置参数);2)模型训练的参数(模型外置参数,如学习率、优化策略等等)。这一块具体大家可以去看一下吴恩达老师机器学习的教程,会有很大收获的,如图(截自吴恩达 机器学习教程):
机器学习中的验证集的作用和如何使用_第1张图片
然后我们可以发现什么,bp算法可训练的参数只有什么东东???对了,只有可训练的权重参数而已,关于模型的其他参数的设置呢,显然没法做到,显然我们的模型并不只有这一部分,因此我们怎么来确定呢其他参数呢?答案就是验证集,即设置验证集我们可以进行模型选择。
为什么非要是验证集而不是测试集呢?答案是测试集是为了测试模型的泛化性能,如果用测试集来进行超参的选择,那么这个模型将会很拟合这个测试集,导致测试集的存在失去了它自身的意义—泛化模型,因此,我们设置了验证集来完成这一部分的工作而不是测试集!!!

如何使用验证集

了解了使用验证集我们可以进行模型超参数的选择,那么我们如何运用验证集来进行模型选择呢?如下:(截自深度学习的验证集怎么用?)
机器学习中的验证集的作用和如何使用_第2张图片

总结:

模型的参数包括普通参数和超参数(与模型设计和训练有关的一些参数),利用bp只能训练普通参数,而无法“训练”模型的超参数,因此,我们设置了验证集,通过验证集的效果进行反馈,根据效果看是否需要终止当前的模型训练,更改超参之后再训练,最终得到最优的模型!

PS:
1)针对超参的选择我们是根据验证集上的效果来进行调整的,因此验证集可以看做参与到“人工调参”的训练过程;
2)注意训练集、验证集和测试集应该服从同一数据分布,这样我们才能进行玄学调参;
3)测试集是可以没有的,但验证集是必须有的,如果验证集具有足够的泛化代表性,是可以不需要设置测试集的;注意测试集的存在只是为了验证我们在训练集和验证集上进行模型的超参和参数训练后,验证我们得到的模型是否具有泛化性能!

更多:
深度学习中的验证集和超参数简介
tensorflow:训练集、测试集、验证集
深度学习: 验证集 & 测试集 区别
训练集(train set) 验证集(validation set) 测试集(test set)
深度学习中的验证集和超参数简介

你可能感兴趣的:(机器学习,面试)