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