为什么用了验证集结果还是过拟合了?(选修)
总结
为什么用了验证集结果还是过拟合了?
将验证集挑选model的过程其看作是一种在validation data上的training。如果验证集上要挑选的模型很多,就可能导致过拟合。
验证集 - 可看作评估模型的训练
首先,在training data上训练模型,找到使损失值最小的最优模型参数。
其次,在validation data上评估模型,找到使损失值最小的最优模型参数。
最后,在testing data上使用模型,使用testing data近似all data。
用验证集来挑选model的过程其实也可以看作是一种在validation data上的training。
为什么用了验证集结果还是过拟合了?- 验证集要筛选的模型太多
上图例子中,参数h只有三个选择,即 H v a l = h 1 ∗ , h 2 ∗ , h 3 ∗ , ∣ H v a l ∣ = 3 \mathcal H_{val}={h_1^*,h_2^*,h_3^*} ,|\mathcal H_{val}|=3 Hval=h1∗,h2∗,h3∗,∣Hval∣=3。基于这种想法,可以进一步分析为什么用了验证集结果还是过拟合了?
回顾:如果选择的training data不好,理想损失和现实损失就会很大,选择到不好的training data的概率上限值如下图所示。如果模型的参数可能值个数很多,即 ∣ H ∣ |\mathcal H| ∣H∣很大,或者training data中样本的个数很少,那么概率上限就很大,取到不好的training data的概率就会很大。
若神经网络设计的参数很多, ∣ H v a l ∣ |\mathcal H_{val}| ∣Hval∣很大,就会导致取到不好的training data的概率就会很大,理想损失和现实损失差距就会很大。
结论:将验证集挑选model的过程其看作是一种在validation data上的training。如果验证集上要挑选的模型很多,就可能导致过拟合。