所谓过拟合,指的是当一个模型过为复杂之后,它可以很好的“记忆”每一个训练数据中随机噪音的部分而忘记了要去“学习”训练数据中通用的趋势。
举一个极端的例子,如果一个模型的参数比训练数据的总说还多,那么只要训练数据不冲突,这个模型完全可以记住所有训练数据的结果从而使得损失函数为0。然而,过度拟合训练数据中的随机噪音虽然可以得到非常小的损失函数,但是对于未知数据可能无法做出可靠的判断。
下图显示了模型训练的三种不同情况。分别展示了模型欠拟合、just right、以及模型过拟合。
为了避免过拟合问题,一个常用的方法就是正则化。简单而言,正则化的思想就是在损失函数中假如刻画模型复杂程度的指标。通俗点说,假设损失函数为J(θ),那么在优化时不仅仅优化J(θ),而是优化J(θ)+λR(w),其中R(w)刻画的是模型的复杂程度,而λ表示模型复杂损失在总损失中的比例。这里θ表示的是一个神经网络中所有的参数,包括权重w和偏置项b。一般而言模型的复杂度只由权重w决定。
神经网络中常用的正则化方法和一般机器学习的正则化类似,有两种,一种是L1正则化,计算公式为
另一种是L2正则化,计算公式是: