模型容量#
一种衡量方式是 VC 维。称模型的输入维度所在空间为“假设空间” ,那么称最大的 为模型的 VC 维,使得存在 中 个点,对于对这 个点进行的任意一种(共 种)二分类标号方式,模型都能够训练到完美将它们分类(又称“打散”)。 请注意这里的存在和任意。我们总是能构造一种点集,其点数小于等于 ,却能使具有 个输入的线性分类器无法将其打散。具体来说,构造这些点(本身位于 维空间)在同一个 维超平面里面即可。
过拟合#
过拟合可以细分为两种。
一种是随着模型容量提升,模型越来越有能力并倾向于“记住”训练集,不加分辨地拟合样本中的噪声,导致在训练集上 loss 很低,但是在验证/测试集上 loss 反而比容量更小的模型要高;
另一种是同一个模型(超参数相同),随着训练轮数增加,模型对训练集的拟合也越发精确,从而将噪声错误地当成了细节,表现为随着 epoch 模型在训练集上的 loss 递减,而在验证集上的 loss 先降后升。
防止过拟合有多种方式,见 [[权重衰退]] [[丢弃法|暂退法 Dropout]]
沐神在【13 丢弃法 - QA】中(问题 26) ↗提到的理解方式:模型容量就像是模型的智商,模型过拟合的倾向就像是模型的性格。我们首先要模型的智商高,然后通过手段调教其“性格”。存在性格和智商双强的模型,但比较少。MLP 属于智商能够很高但性格不那么好的模型。
李宏毅老师提到的更加直觉的理解:模型是有弹性的,就像是橡皮泥。弹性越高的模型,越容易过拟合,因为它不懂抓大放小,只会死扣细节,就像特别稀的橡皮泥放进模具,容易出现各种开模缝小孔这些噪声;弹性适度的模型不容易过拟合,能够保持大方向正确而容忍噪声;弹性过小的模型难以拟合,就是欠拟合。 模型的可变量(参数)越多,弹性越大。这也就是为什么 CNN 将全连接的 MLP 化简、稀疏化之后,效率和效果都更加好的原因。