减少偏差
偏差过大又称欠拟合(underfitting),原因通常是:
- 模型太过简单,无法很好地拟合样本点。
- 训练集太小。
- 训练轮数太少,即训练时间太短。
解决的办法自然是:
- 使用更复杂的模型,在神经网络中增加隐藏层或隐藏单元。
- 增长训练时间,使用更先进的优化算法。
- 收集更多数据加入训练集(当模型无法很好拟合当前训练集时,此方法并无多大作用)
解决偏差问题是最基本的要求,是最低标准,模型直到可以拟合数据为止才算合格。
减少方差
方差过大又称过拟合(overfitting),原因通常是:
- 模型太过复杂,精确地拟合了几乎每一个样本点。
训练集太小。
解决办法是:
正则化(此方法最被经常运用,也通常最有效)例如L1,L2,Dropout正则化。
- 减少神经网络层数或隐藏单元数(实际应用中通常是使用正则化而非此方法)
- 收集更多数据(不同于偏差问题,此方法确实有助于减少方差问题)
通常绘制学习曲线有助于判断当前的问题究竟是偏差问题还是方差问题。学习曲线是指将训练误差和交叉验证误差作为y轴,训练轮数作为x轴,绘制曲线。
你会发现如果偏差很大,训练轮数达到一定次数后再怎么训练,训练误差依然会保持相对较高的值。
当训练误差(training error)很大时,毫无疑问有偏差问题。
当训练误差和交叉验证集的误差都很大时,先解决偏差问题。
当训练误差很小,而交叉验证集的误差很大时,就很可能是方差问题。
为了让两者都尽量小,通常有一个中间点,可以权衡二者,达到最优的结果。