DennyQi's Log

02 正则化

正则化(Regularization)

当我们用数据集训练出我们的模型时,我们可能会发现模型过拟合(Overfitting)了。例如对于一个nn个点的样本集,我们总是可以用一个n1n-1次函数使得它能够精确穿过所有样本点,然而这样训练得到的模型是没有价值的,拟合的结果过于奇怪以至于它没有预测的价值。

为了解决过拟合问题,常见地有以下几种策略:第一,我们可以增加样本,扩大样本集的规模,这一定程度上总是可以使模型有更好的预测能力的。当然,这有时可能是难以实现的。第二,我们可以删掉我们用来训练模型的输入数据的某些维度,例如在房价预测中面积、房间数等等比较重要,而长度、宽度这些feature就不那么重要,可以提前删除来防止过拟合。第三,我们可能并不需要真的删除一些feature,而是让某些feature的参数的取值不能过大而足以影响整个函数的形态,这称为正则化。

我们可以修改代价函数来实现正则化。例如,假如我们挑选出了mm个我们不希望它对函数产生较大影响的维度,那么我们就在代价函数中加上λ2mi=1mβi2\dfrac{\lambda}{2m}\sum\limits_{i=1}^{m}\beta_i^2这一项。由于我们要最小化代价函数,因此新增的一项就保证了每个βi\beta_i都不会有过大的取值(软约束)。调整系数λ\lambda的大小,我们可以获得不同程度的对βi\beta_i大小的限制。在线性回归(或逻辑回归)中,正则化后的代价函数就写作J(β)=12ni=1n(Xiβyi)2+λ2mi=1mβi2J(\beta)=\dfrac{1}{2n}\sum\limits_{i=1}^{n}(X_i^\top \beta-y_i)^2+\dfrac{\lambda}{2m}\sum\limits_{i=1}^{m}\beta_i^2。我们发现,在梯度下降中,J(β)=1ni=1n(Xi2βyiXi)+λmβ\nabla J(\beta)=\dfrac{1}{n}\sum\limits_{i=1}^{n}(X_i^2\beta-y_iX_i)+\dfrac{\lambda}{m}\beta。设梯度下降的步长为α\alpha,那么有了新的项以后β\beta每次还会新迭代一次ββαλmβ\beta\to\beta-\dfrac{\alpha\lambda}{m}\beta。这相当于把β\beta的每一维系数大小都缩减了一个系数1αβm1-\dfrac{\alpha\beta}{m},可见我们通过梯度下降的迭代次数控制着β\beta系数的大小。