-
超参数:在学习过程之前设置的参数,不是通过训练得到的参数,通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。
-
网格搜索:利用的是一种十分简单暴力的方法,即穷举搜索。在所有候选的参数选择中,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果。当然这里候选的参数还是要人为给出。
GridSearchCV中的CV就是指的是Cross Validation,即交叉验证。
-
简单的交叉验证:将训练数据进一步划分为训练集和验证集,使用验证集[调整模型的超参数]和用于对模型能力进行初步的评估。
值得注意的是调整模型的超参数这一个作用,在网格搜索的交叉验证没有体现。网格搜索的交叉验证中,验证集的作用是进行评估。
那一般什么情况下可以用交叉验证调整模型的超参数呢?一般来讲调整模型的超参数是在确定了一组初始参数后,在训练过程中人工调整。
一般在训练时,几个epochs结束后会跑一次验证集看看效果。
第一个好处是,可以及时发现模型或者参数的问题,比如mAP不增长或者增长很慢等情况,这时可以及时终止训练,重新调参或者调整模型,而不需要等到训练结束。一般来讲,我们会隔一段时间保存神经网络的参数,称之为checkpoints,当我们中止训练后重新开始的时候,可以从checkpoints中恢复网络的权重,并且以根据验证集的情况进行调整后的超参数进行训练。
另外一个好处是验证模型的泛化能力,如果在验证集上的效果比训练集上差很多,就该考虑模型是否过拟合了。当察觉到有过拟合的倾向是,我们可以停止训练,这种策略称之为早停(Early Stopping)。
同时,还可以通过验证集对比不同的模型。在一般的神经网络中, 我们用验证数据集去寻找最优的网络深度(number of hidden layers),或者决定反向传播算法的停止点或者在神经网络中选择隐藏层神经元的数量
-
多折交叉验证:将原始训练集均分为K组,让每一个子集都做一次验证集,其余的K-1个子集作为训练集。这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标。
-
留一交叉验证Leave-One-Out Cross Validation, LOO-CV:在数据缺乏的情况下使用,如果设原始数据有N个样本,那么LOO-CV就是N-CV,即每个样本单独作为验证集,其余的N-1个样本作为训练集,故LOO-CV会得到N个模型,用这N个模型最终的验证集的分类准确率的平均数作为此下LOO-CV分类器的性能指标。
多折交叉验证是将样本分为子集,一个子集内有多个样本,而留一交叉验证是每个样本都单独成一个子集,即k折交叉验证中的k等于样本数量n
一般根据经验来说,k取5或10