前言
今天做了一道书上的题目,题目提到了正则化,这里我翻阅了nndl发现对这一部分的讲解甚少,这里我整理一下算是对最基础知识的补充吧。
正则化
正则化是对过拟合采取的一种解决方法,我们希望训练的模型泛化的能力要强。这里我参考了这个博主所写的东西(链接)
对过拟合的处理首先从过拟合的式子出发去解决其中参数的优化问题。过拟合
f
(
x
)
f(x)
f(x)涉及到的特征项一定是很多的,即
x
0
,
x
1
,
x
2
,
⋅
⋅
⋅
⋅
,
x
N
x_0,x_1,x_2,····,x_N
x0,x1,x2,⋅⋅⋅⋅,xN等等。当N很大的时候,
w
0
,
w
1
,
⋅
⋅
⋅
,
w
N
w_0,w_1,···,w_N
w0,w1,⋅⋅⋅,wN是等数量增长的,
w
w
w的系数都是经过学习得来的。我们知道N很多的时候,我们来限制N的数量就可以,让N最小化就是让
W
W
W向量中项的个数最小化。其中
W
=
(
w
0
,
w
1
,
w
2
,
⋅
⋅
⋅
,
w
N
)
W=(w_0,w_1,w_2,···,w_N)
W=(w0,w1,w2,⋅⋅⋅,wN).
下面我要介绍一下范数的概念:
0范数,向量中非零元素的个数。
1范数,为绝对值之和。
2范数,就是通常意义上的模。
现在回答
r
(
d
)
r(d)
r(d)=“让
W
W
W向量中项的个数最小化”=
∣
W
∣
0
|W|_0
∣W∣0,所以为了防止过拟合,我们除了前面相加项最小,
R
e
m
p
(
f
)
=
1
2
W
T
W
+
∑
i
l
(
y
i
,
f
(
x
i
)
)
R_{emp}\left( f \right) =\frac{1}{2}W^TW+\sum_i{l\left( y_i,f\left( x_i \right) \right)}
Remp(f)=21WTW+∑il(yi,f(xi))最小,我们还需要让
r
(
d
)
=
∣
W
∣
0
r(d)=|W|_0
r(d)=∣W∣0最小,所以为了同时满足两项都最小化,我们可以将上述两个式子加起来,这样就可以让两者同时满足。如果
r
(
d
)
r(d)
r(d)过大,
R
e
m
p
(
f
)
R_{emp}(f)
Remp(f)再小也没用,相反
r
(
d
)
r(d)
r(d)再小
R
e
m
p
(
f
)
R_{emp}(f)
Remp(f)太大也失去了问题的意义。到这里算是解释了为什么需要
r
(
d
)
r(d)
r(d)项,为什么
r
(
d
)
r(d)
r(d)能够防止过拟合。
附注
我们一般将
R
e
m
p
(
f
)
R_{emp}(f)
Remp(f)叫做经验风险,将上面的公式叫做正则化,所以将
r
(
d
)
r(d)
r(d)叫做正则化项。将
R
r
e
m
p
(
f
)
+
r
(
d
)
R_{remp}(f)+r(d)
Rremp(f)+r(d)叫做结构风险,所以顺其自然的正则化就是我们将结构风险最小化的过程,它们是等价的。
0范数比较难求求解的难度是NP完全问题,可以将0范数问题转换为1范数问题,1范数和0范数可以实现稀疏,1因具有比0更好的优化求解特性而被广泛的应用。
L2范数是指向量各元素的平方和然后求平方根。我们让L2范数的正则化
∣
∣
W
∣
∣
2
||W||_2
∣∣W∣∣2最小,可以使得
W
W
W的每个元素都很小,都接近于0,但与L1范数不同,他不会让他等于0,而是接近于0,所以比起1范数一般用2范数。
所以我们看到的书籍中,一来就是
r
(
d
)
=
λ
2
∣
∣
W
∣
∣
2
r\left( d \right) =\frac{\lambda}{2}||W||^2
r(d)=2λ∣∣W∣∣2或者
r
(
d
)
=
λ
∣
W
∣
1
r(d)=\lambda |W|_1
r(d)=λ∣W∣1,在机器学习中我们还能看到下述结构:
min
{
∑
i
N
(
y
−
W
T
x
)
+
λ
2
∣
∣
W
∣
∣
2
}
,
λ
≥
0
\min \left\{ \sum_i^N{\left( y-W^Tx \right) +\frac{\lambda}{2}||W||^2} \right\} ,\lambda \ge 0
min{i∑N(y−WTx)+2λ∣∣W∣∣2},λ≥0