正则化方法
为防止模型过拟合,提高模型的泛化能力,通常会在损失函数的后面添加一个正则化项。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓【惩罚】是指对损失函数中的某些参数做一些限制
L1正则化(ℓ1 -norm)
使用L1正则化的模型建叫做Lasso Regularization(Lasso回归),直接在原来的损失函数基础上加上权重参数的绝对值,
η
\eta
η为正则化参数:
假设损失函数为
(1)
J
0
=
∑
i
=
1
m
(
y
(
i
)
−
θ
0
−
θ
1
X
1
(
i
)
−
θ
2
X
2
(
i
)
−
⋯
−
θ
n
X
n
(
i
)
)
\tag{1}J_0=\sum_{i=1}^{m}(y^{(i)}-\theta_0-\theta_1X_1^{(i)}-\theta_2X_2^{(i)}-\cdots-\theta_nX_n^{(i)})
J0=i=1∑m(y(i)−θ0−θ1X1(i)−θ2X2(i)−⋯−θnXn(i))(1)则Lasso Regularization为:
(2)
J
=
J
0
+
η
∑
i
=
1
m
∣
θ
∣
\tag{2}J=J_0+\eta \sum_{i=1}^{m}|\theta|
J=J0+ηi=1∑m∣θ∣(2)
J
J
J 是带有绝对值符号的函数,因此
J
J
J是不完全可微的。当我们在原始损失函数
J
0
J_0
J0后添加
L
1
L_1
L1正则化项时,相当于对
J
0
J_0
J0做了一个约束。令
L
1
=
η
∑
i
=
1
m
∣
θ
∣
L_1=\eta\sum_{i=1}^{m}|\theta|
L1=η∑i=1m∣θ∣,则
J
=
J
0
+
L
1
J=J_0+L_1
J=J0+L1,此时我们的任务变成在
L
L
L约束下求出
J
J
J取最小值的解。
η
\eta
η 被称为正则化系数.
下面通过图像来说明如何在约束条件
L
1
L_1
L1下求
J
J
J的最小值。
最终的损失函数就是求等高圆圈+黑色黑色矩形的和的最小值。由图可知等高圆圈+黑色黑色矩形首次相交时,
J
J
J取得最小值。
为什么
L
1
L_1
L1正则化项能够防止过拟合的情况?
对损失函数的参数优化求解过程进行分析
(3)
∂
C
∂
θ
=
∂
C
0
∂
θ
+
λ
s
g
n
(
θ
)
\tag{3}\frac{\partial C}{\partial \theta}=\frac{\partial C_0}{\partial \theta}+\lambda sgn(\theta)
∂θ∂C=∂θ∂C0+λsgn(θ)(3)
上式中
s
g
n
(
θ
)
sgn(\theta)
sgn(θ)表示
θ
\theta
θ的符号。那么权重
θ
\theta
θ的更新规则为:
(4)
θ
→
θ
−
η
∑
i
=
1
m
∂
C
i
∂
θ
−
η
λ
s
g
n
(
θ
)
\tag{4}\theta \rightarrow \theta - \eta\sum_{i=1}^{m} \frac{\partial C_i}{\partial \theta}-\eta \lambda sgn(\theta)
θ→θ−ηi=1∑m∂θ∂Ci−ηλsgn(θ)(4)
比原始的更新规则多出了 η λ s g n ( θ ) η λ sgn(\theta) ηλsgn(θ)这一项。当 θ \theta θ为正时,更新后的 θ \theta θ变小。当 θ \theta θ为负时,更新后的 θ \theta θ变大——因此它的效果就是让 η \eta η往0靠,使网络中的权重尽可能为0,也就相当于减小了网络复杂度,防止过拟合。
L2正则化(ℓ2 -norm)
使用L2正则化的模型叫做Ridge Regularization(岭回归),直接在原来的损失函数基础上加上权重参数的平方和:
令损失函数为
J
0
J_0
J0,则Ridge Regularization为:
(5)
J
=
J
0
+
1
2
η
∑
i
=
1
n
θ
2
\tag{5}J=J_0+\frac{1}{2}\eta \sum_{i=1}^{n}\theta^2
J=J0+21ηi=1∑nθ2(5)
使最终的损失函数最小,要考虑
J
0
J_0
J0和
(6)
L
2
=
1
2
η
∑
i
=
1
n
θ
2
\tag{6}L_2=\frac{1}{2}\eta \sum_{i=1}^{n} \theta^2
L2=21ηi=1∑nθ2(6)两个因素,最终的损失函数就是求等高 圆圈+黑色圆圈的和的最小值。由图可知两个圆相交时,
J
J
J取得最小值。
为什么
L
2
L_2
L2正则化项能够防止过拟合的情况?
对损失函数的参数优化求解过程进行分析
(7)
∂
C
∂
θ
=
∂
C
0
∂
θ
+
λ
θ
\tag{7}\frac{\partial C}{\partial \theta}=\frac{\partial C_0}{\partial \theta}+\lambda \theta
∂θ∂C=∂θ∂C0+λθ(7)
(8)
∂
C
∂
b
=
∂
C
∂
b
\tag{8}\frac{\partial C}{\partial b}=\frac{\partial C}{\partial b}
∂b∂C=∂b∂C(8)
可以发现L2正则化项对b的更新没有影响,但是对于
θ
\theta
θ的更新有影响:
θ
→
θ
−
η
∑
i
=
1
m
∂
C
i
∂
θ
−
η
λ
θ
\theta \rightarrow \theta - \eta\sum_{i=1}^{m} \frac{\partial C_i}{\partial \theta}-\eta \lambda \theta
θ→θ−ηi=1∑m∂θ∂Ci−ηλθ
(9) = ( 1 − η λ ) θ − η ∑ i = 1 m ∂ C i ∂ θ \tag{9}=(1-\eta \lambda )\theta - \eta \sum_{i=1}^{m}\frac{\partial C_i}{\partial \theta} =(1−ηλ)θ−ηi=1∑m∂θ∂Ci(9)
在不使用L2正则化时,求导结果中 θ \theta θ前系数为1,现在 θ \theta θ前面系数为 1 − η λ 1−ηλ 1−ηλ ,因为η、λ都是正的,所以 1 − η λ 1−ηλ 1−ηλ小于1,它的效果是减小 θ \theta θ,这也就是权重衰减(weight decay)的由来。