当你运行一个学习算法时,如果这个算法的表现不理想,那么多半是出现两种情况:要么是偏差比较大,要么是方差比较大。换句话说,出现的情况要么是欠拟合,要么是过拟合问题。
我们通常会通过将训练集和交叉验证集的代价函数误差与多项式的次数绘制在同一张图表上来帮助分析:
-
对于训练集,当 d 较小时,模型拟合程度更低,误差较大;随着d 的增长,拟合程度提高,误差减小。
-
对于交叉验证集,当 d 较小时,模型拟合程度低,误差较大;但是随着 d 的增长,误差呈现先减小后增大的趋势,转折点是我们的模型开始过拟合训练数据集的时候。
判断高偏差(欠拟合)或高方差(过拟合)
-
训练集误差和交叉验证集误差近似时:偏差/欠拟合
-
交叉验证集误差远大于训练集误差时:方差/过拟合
解决欠拟合与过拟合
欠拟合:
- 增加网络结构,如增加隐藏层数目;
- 训练更长时间;
- 寻找合适的网络架构,使用更大的NN结构;
过拟合 :
- 使用更多的数据;
- 正则化( regularization);
- 寻找合适的网络结构;