关于深度学习中交叉验证的探讨
1 交叉验证目的
对于给定的模型,通过交叉验证评价模型的泛化性能。
交叉验证通常用于数据集较小的情况,当数据不足时,随机划分数据集会使模型的泛化误差(测试集上的误差)波动较大,此时需要交叉验证来辅助评估模型的性能。
当数据充足的情况下,直接按照一定比例划分训练集、验证集和测试集即可。
2 交叉验证步骤
以K折交叉验证为例:
- 将数据集等分为互不相交的K个数据子集
- 在K个数据子集中随机选取一个数据子集作为测试集,剩余的K-1个数据子集作为训练集
- 在选定的训练集上训练模型,在测试集上计算当前的泛化误差
- 重复步骤2和3,重复次数为K,保证每个数据子集都曾作为测试集并获得其对应的泛化误差
- 取K个泛化误差的均值作为当前模型的最终泛化误差的近似值
3 针对深度学习存在的问题
在传统机器学习中,进行如上步骤即可。但是,在深度学习方法中,上述步骤存在一些问题。
一般来说,在深度学习中,我们常需要独立于训练集和测试集的验证集来进行参数的选择(主要是训练轮次,例如解决过拟合的早停止机制,需要根据验证集的误差来决定停止轮次)。
需要注意的是,测试集理论