正则化(Regularization) 是解决模型过拟合的重要手段之一,正则化是为了防止过拟合, 进而增强泛化能力,使测试集上的表现(或说性能 performance)一样优秀,但是它为什么能解决模型的过拟合问题呢?下面将慢慢展开。
过拟合
在机器学习(ML)中,训练的模型对于训练集和验证集有着优秀的拟合预测能力,但是对于测试集或未见过的样本(Sample),拟合预测能力很差,我们说泛化能力(Generalization)较差,出现了过拟合(Overfitting)。
正则化如何去做
无论是Logistic Regression、SVM或是简单的线性模型,都有一个基函数
,其中有很多参数
需要通过对损失函数
求极小值(或最大似然估计)来确定,求的过程,也就是使用训练集的训练过程:梯度下降到最小值点(或者推导直接求解)。最终,找到最合适的参数来确定模型。
如,一个损失函数(Loss Function)为:
其中,
是真实值,
是权重(需要训练的部分,未知数,即参数),
是基函数,例如多项式函数,核函数,
是为了求导时计算方便。
加入正则化项,得到最终的损失函数:
其中,(2)式被称为目标函数(评价函数)= 误差函数(损失函数) + 正则化项,
是正则化系数,
还可以写成
。
因此,用权重(参数)的平方和表示正则化项,仔细想想,它还可以表示模型的复杂度(区别于空间复杂度和时间复杂度,这里的复杂度指参数的多少和大小) 在这种正则化策略中, 我们会对权重的平方和进行惩罚。用 正则化公式来量化复杂度, 该公式将正则化项定义为所有特征权重的平方和 。这种策略是:尽量选择较小的权重 。也就是使参数小到几乎可以让我们忽略, 同时我们仍能获取正确的训练样本 。
一般的,正则化可以表示为:
其中,
是模型的阶次(表现形式是数据的维度),比如
,就是一个平面(二维)内的点,
就是二次正则项。
目前,我们在目标函数添加了两项:
- 第一项是损失项,我们希望获取正确的样本。可以看出,损失项取决于训练数据。
- 第二项是正则化项,与数据无关, 它的作用是简化模型 。
目标函数中,使正则化项降低达到限制模型的复杂度,即
的大小,
是模型的阶次,
越大意味着需要决定的权重越多,模型越复杂。在多项式模型多,直观理解是每一个不同幂次的
前的系数,0(或很小的值)越多,模型越简单。
这就从数学角度解释了,为什么正则化(规则化)可以限制模型的复杂度,进而避免过拟合。
总结
总之,正则化项量化了模型的复杂度。而复杂度越高,模型对训练集的拟合程度越高,在测试集中的泛化能力可能越低,加入正则化项到目标函数之后,最小化目标函数,不仅使损失函数降低,还相对降低了模型的复杂度,可以简单的理解为两者相互博弈的过程。