机器学习中,我们一直期望学习到一个泛化能力(generalization)强的函数,只有泛化能力强的模型才能很好地适用于整个样本空间,才能在新的样本点上表现良好。但是训练集通常只是整个样本空间很小的一部分,在训练机器学习模型时,稍有不注意,就可能将训练集中样本的特性当作了全体样本的共性,以偏概全,而造成过拟合(overfitting)问题,如何避免过拟合,是训练机器学习模型时最亟待解决的绊脚石。
从问题的根源出发,解决过拟合无非两种途径:
- 使训练集能够尽可能全面的描述整个样本空间。因此又存在两个解决方向。①减少特征维数,特征维数减少了,样本空间的大小也随之减少了,现有数据集对样本空间的描述也就提高了。②增加训练样本数量,试图直接提升对样本空间的描述能力。
- 加入规则化项。
第一种方法的人力成本通常很大,所以在实际中,我们通常采用第二种方法提升模型的泛化能力。
注:规则化在有些文档中也称作正则化,在本文中都采用规则化描述。
规则化(Regularize)
首先回顾一下,在寻找模型最优参数时,我们通常对损失函数采用梯度下降(gradient descent)算法
w
∗
,
b
∗
=
a
r
g
min
w
,
b
∑
i
=
1
m
(
y
(
i
)
−
(
w
T
x
(
i
)
+
b
)
)
2
∂
L
∂
w
=
∑
i
=
1
m
2
(
y
(
i
)
−
(
w
T
x
(
i
)
+
b
)
)
(
−
x
(
i
)
)
∂
L
∂
b
=
∑
i
=
1
m
2
(
y
(
i
)
−
(
w
T
x
(
i
)
+
b
)
)
(
−
1
)
w^*,b^*=arg\min_{w,b}\sum_{i=1}^m(y^{(i)}-(w^Tx^{(i)}+b))^2\\ \frac{\partial L}{\partial w}=\sum_{i=1}^m2(y^{(i)}-(w^Tx^{(i)}+b))(-x^{(i)})\\ \frac{\partial L}{\partial b}=\sum_{i=1}^m2(y^{(i)}-(w^Tx^{(i)}+b))(-1)
w∗,b∗=argw,bmini=1∑m(y(i)−(wTx(i)+b))2∂w∂L=i=1∑m2(y(i)−(wTx(i)+b))(−x(i))∂b∂L=i=1∑m2(y(i)−(wTx(i)+b))(−1)
通过上述公式,我们将一步步走到损失函数的最低点(不考虑局部最小值和鞍点情况),这时的
w
w
w和
b
b
b就是我们要找的最优参数。
对于回归问题,我们还可以直接采用最小二乘法求得解析解。
L
=
1
2
(
y
−
X
w
^
)
T
(
y
−
X
w
^
)
w
^
=
(
X
T
X
)
−
1
X
T
y
L=\frac{1}{2}(y-X\hat{w})^T(y-X\hat{w})\\ \hat{w}=(X^TX)^{-1}X^Ty
L=21(y−Xw^)T(y−Xw^)w^=(XTX)−1XTy
可以看到,当前我们的损失函数只考虑最小化训练误差,希望找到的最优函数能够尽可能的拟合训练数据。但是正如我们所了解的,训练集不能代表整个样本空间,所以训练误差也不能代表在测试误差,训练误差只是经验风险,我们不能过分依赖这个值。当我们的函数对训练集拟合特别好,训练误差特别小时,我们也就走进了一个极端——过拟合。
为了解决这个问题,研究人员提出了规则化(regularize)方法。通过给模型参数附加一些规则,也就是约束,防止模型过分拟合训练数据。规则化通过在原有损失函数的基础上加入规则化项实现。
此时,最优化的目标函数如下:
w
∗
=
a
r
g
min
w
∑
i
L
(
y
(
i
)
,
f
(
x
(
i
)
;
w
)
)
+
λ
Ω
(
w
)
w^*=arg\min_w\sum_iL(y^{(i)},f(x^{(i)};w))+\lambda\Omega(w)
w∗=argwmini∑L(y(i),f(x(i);w))+λΩ(w)
其中,第一项对应于模型在训练集上的误差,第二项对应于规则化项。为了使得该目标函数最小,我们既需要训练误差最小,也需要规则化项最小,因此需要在二者之间做到权衡。
那应该选择怎样的表达式作为规则化项呢?以下引用李航博士《统计学习方法》中的一些描述:
规则化是结构风险最小化策略的实现,是在经验风险最小化上加一个规则化项(regularizer)或罚项(penalty term)。规则化项一般是模型复杂度的单调递增函数,模型越复杂,规则化值就越大。比如,规则化项可以是模型参数向量的范数。
规则化符合奥卡姆剃刀(Occam’s razor)原理。奥卡姆剃刀原理应用于模型选择时变为以下想法:在所有可能选择的模型中,能够很好地解释已知数据并且十分简单才是最好的模型,也就是应该选择的模型。从贝叶斯估计的角度来看,规则化项对应于模型的先验概率。可以假设复杂的模型有较大的先验概率,简单的模型有较小的先验概率。
所以通常我们采用L1-范数和L2-范数作为规则化项。
L1-范数
向量的L1-范数是向量的元素绝对值之和,即
∣
∣
x
∣
∣
1
=
∑
i
∣
x
i
∣
||x||_1=\sum_i|x_i|
∣∣x∣∣1=i∑∣xi∣
当采用L1-范数作为规则化项对参数进行约束时,我们的优化问题可以写成以下形式:
min
w
1
2
(
y
−
X
w
)
2
s
.
t
.
∣
∣
w
∣
∣
1
≤
C
\min_w\frac{1}{2}(y-Xw)^2\\ s.t.\quad||w||_1\le C
wmin21(y−Xw)2s.t.∣∣w∣∣1≤C
采用拉格朗日乘子法可以将约束条件合并到最优化函数中,即
min
w
1
2
(
y
−
X
w
)
2
+
λ
∣
∣
w
∣
∣
1
\min_w\frac{1}{2}(y-Xw)^2+\lambda||w||_1
wmin21(y−Xw)2+λ∣∣w∣∣1
其中
λ
\lambda
λ是于
C
C
C一一对应的常数,用来权衡误差项和规则化项,
λ
\lambda
λ越大,约束越强。二维情况下分别将损失函数的等高线图和L1-范数规则化约束画在同一个坐标轴下,
L1-范数约束对应于平面上一个正方形norm ball。等高线与norm ball首次相交的地方就是最优解。可以看到,L1-ball在和每个坐标轴相交的地方都有“角”出现,大部分时候等高线都会与norm ball在角的地方相交。这样部分参数值被置为0,相当于该参数对应的特征将不再发挥作用,实现了特征选择,增加了模型的可解释性。关于L1-范数规则化,可以解释如下:训练出来的参数代表权重,反应了特征的重要程度,比如
y
=
20
x
1
+
5
x
2
+
3
y=20x_1+5x_2+3
y=20x1+5x2+3中,特征
x
1
x_1
x1明显比
x
2
x_2
x2更加重要,因为
x
1
x_1
x1的变动相较于
x
2
x_2
x2的变动,会给
y
y
y带来更大的变化。在人工选取的特征中,往往会存在一些冗余特征或者无用特征,L1-范数规则化将这些特征的权重置为0,实现了特征选择,同时也简化了模型。
L1-范数在x=0处存在拐点,所以不能直接求得解析解,需要用次梯度方法处理不可导的凸函数。
L2-范数
除了L1-范数,还有一种广泛使用的规则化范数:L2-范数。向量的L2-范数是向量的模长,即
∣
∣
x
∣
∣
2
=
∑
i
x
i
2
||x||_2=\sqrt{\sum_ix_i^2}
∣∣x∣∣2=i∑xi2
当采用L2-范数作为规则化项对参数进行约束时,我们的优化问题可以写成以下形式:
min
w
1
2
(
y
−
X
w
)
2
s
.
t
.
∣
∣
w
∣
∣
2
≤
C
\min_w\frac{1}{2}(y-Xw)^2\\ s.t.\quad||w||_2\le C
wmin21(y−Xw)2s.t.∣∣w∣∣2≤C
同样可以将约束条件合并到最优化函数中,得到如下函数
min
w
1
2
(
y
−
X
w
)
2
+
λ
∣
∣
w
∣
∣
2
\min_w\frac{1}{2}(y-Xw)^2+\lambda||w||_2
wmin21(y−Xw)2+λ∣∣w∣∣2
也将损失函数的等高线图和L2-范数规则化约束画在同一个坐标轴下,
L2-范数约束对应于平面上一个圆形norm ball。等高线与norm ball首次相交的地方就是最优解。与L1-范数不同,L2-范数使得每一个
w
w
w都很小,都接近于0,但不会等于0,L2-范数规则化仍然试图使用每一维特征。对于L2-范数规则化可以解释如下:L2-范数规则化项将参数限制在一个较小的范围,参数越小,曲面越光滑,因而不会出现在很小区间内,弯曲度很大的情况,当
x
x
x一个较大的变化时,
y
y
y也只会变化一点点,模型因此更加稳定,也就是更加generalization。
加入L2-范数规则化项后,目标函数扩展为如下形式:
w
∗
,
b
∗
=
a
r
g
min
w
,
b
∑
i
=
1
m
(
y
(
i
)
−
(
w
T
x
(
i
)
+
b
)
)
2
+
λ
∑
j
=
1
n
w
j
2
∂
L
∂
w
=
∑
i
=
1
m
2
[
(
y
(
i
)
−
(
w
T
x
(
i
)
+
b
)
)
(
−
x
(
i
)
)
+
λ
w
]
∂
L
∂
b
=
∑
i
=
1
m
2
[
(
y
(
i
)
−
(
w
T
x
(
i
)
+
b
)
)
(
−
1
)
λ
w
]
w^*,b^*=arg\min_{w,b}\sum_{i=1}^m(y^{(i)}-(w^Tx^{(i)}+b))^2+\lambda\sum_{j=1}^nw_j^2\\ \frac{\partial L}{\partial w}=\sum_{i=1}^m2[(y^{(i)}-(w^Tx^{(i)}+b))(-x^{(i)})+\lambda w]\\ \frac{\partial L}{\partial b}=\sum_{i=1}^m2[(y^{(i)}-(w^Tx^{(i)}+b))(-1)\lambda w]
w∗,b∗=argw,bmini=1∑m(y(i)−(wTx(i)+b))2+λj=1∑nwj2∂w∂L=i=1∑m2[(y(i)−(wTx(i)+b))(−x(i))+λw]∂b∂L=i=1∑m2[(y(i)−(wTx(i)+b))(−1)λw]
同样,如果采用最小二乘法,正规方程的形式需要相应修改,并且对于样本数目少于特征维数的情况时,矩阵
(
X
T
X
)
(X^TX)
(XTX)将不满秩,
(
X
T
X
)
(X^TX)
(XTX)也就不可逆,确切地说,此时方程组是不定方程组,将会有无穷多解,已有的数据不足以确定一个解,数学上常加入约束项以使得唯一解成为可能,加入L2-范数规则化项正好对应了这种方法,此时解析解如下:
w
∗
=
(
X
T
X
+
λ
I
)
−
1
X
T
w^*=(X^TX+\lambda I)^{-1}X^T
w∗=(XTX+λI)−1XT
关于L1-范数和L2-范数规则化的解释是个人的总结之词,可能存在不准确,希望大家不惜赐教!
参考文献
李航《统计学习方法》
机器学习中的范数规则化之(一)L0、L1与L2范数
Sparsity and Some Basics of L1 Regularization