赞
踩
正则化的理解,来自:理解深度学习中的正则化
L1L2正则化来自机器学习中 L1 和 L2 正则化的直观解释
正则化方法很早之前就已经出现了,在机器学习方法中应用广泛,比如支持向量机(这个不知道也没关系)。它的形式很简单,是在目标函数后额外附加一项,使其影响目标函数最优点的选取。这种方法叫做正则化方法。(1.1)式是常见的L2正则化,等式右侧第一项为原目标函数,第二项为正则化项,构成等式左侧新的目标函数。
(1.1)
J
^
(
ω
;
X
,
y
)
=
J
(
ω
;
X
,
y
)
+
α
2
ω
T
ω
\hat{J}(\omega ; X ,y)=J(\omega ; X ,y)+\frac{\alpha}{2}{\omega}^T{\omega} \tag{1.1}
J^(ω;X,y)=J(ω;X,y)+2αωTω(1.1)
正则化可以解决过拟合问题。
从贝叶斯论者的角度来说,我们知道,深度学习使用神经网络将样本空间映射到特征的概率分布空间。当映射函数可能存在的空间太大时,我们通过学习方法得到的映射函数可能并不满足现实世界的一些规则,所以在泛化,即推广到未训练过的现实世界真实存在的数据集(验证集)时,得到的结果会变差,这叫做“Variance”大,说明模型过拟合了。
我们可以使用最大后验点估计(Maximum A Posteriori),来解决这个问题,如式(2.1)所示。式中arg max表示令
p
(
θ
∣
x
)
p(\theta \ | \ x)
p(θ ∣ x) 最大的
θ
\theta
θ 值,式中等式右侧的
l
o
g
p
(
θ
)
{\rm log}\ p(\theta)
log p(θ) 即是正则化项。如果
θ
\theta
θ 服从高斯分布,那么式(2.1)是常见的L2正则化,见式(1.1)。这是我们从最大后验点估计这个贝叶斯论者的角度来看为什么要正则化。
(2.1)
θ
M
A
P
=
a
r
g
max
θ
p
(
θ
∣
x
)
=
a
r
g
max
θ
l
o
g
p
(
x
∣
θ
)
+
l
o
g
p
(
θ
)
\theta_ {MAP}={\rm arg}\max_{\theta} p(\theta\ | \ x)={\rm arg}\max_{\theta} {\rm log}\ p(x\ | \ \theta)+{\rm log}\ p(\theta) \tag{2.1}
θMAP=argθmaxp(θ ∣ x)=argθmaxlog p(x ∣ θ)+log p(θ)(2.1)
从频率论者的角度来说,我们希望权重
θ
\theta
θ 的偏差(期望和真值的差,无偏估计时值为0)和标准差都很小。我们通过深度学习算法拟合映射函数,使训练集上的损失最小,此时组成映射函数的权重偏差最小。同时我们希望在验证集上的损失也能和训练集上的损失一样小,这样权重偏差也一样小。如果训练集上的权重偏差小,但验证集上的权重偏差大,此时权重的标准差大(这是概率统计知识,理解一下)。这是由于模型过拟合,使映射函数过度满足训练集样本的特征,即不仅满足正确的特征,又满足了一些额外的噪声特征,最终造成泛化误差大。
怎么解决这个问题呢?我们知道偏差和标准差是一对互相矛盾的变量,并不同时达到最小值;因此在训练集上学习时,如果偏差最小,那标准差往往没有达到最小。我们可以在偏差上做一些让步,使标准差变小,从而减小泛化误差。这可以通过正则化实现。
为了说明偏差和标准差是一对互相矛盾的变量,我们下面做简单的分析。假设
B
(
θ
)
B(\theta)
B(θ) 是偏差关于权重的函数,
V
(
θ
)
V(\theta)
V(θ) 是标准差关于权重的函数。当
B
(
θ
)
B(\theta)
B(θ) 最小时,
V
(
θ
)
=
V
1
V(\theta)=V_{1}
V(θ)=V1;当
V
(
θ
)
V(\theta)
V(θ) 最小时,
B
(
θ
)
=
B
1
B(\theta)=B_{1}
B(θ)=B1。使用 Lagrange 乘子法,将约束和极值写在一起,如下
(2.2)
m
i
n
{
B
(
θ
)
+
λ
1
[
V
(
θ
)
−
V
1
]
}
m
i
n
{
V
(
θ
)
+
λ
2
[
B
(
θ
)
−
B
1
]
}
{\rm min}_\ \{B(\theta)+\lambda_{1}[ V(\theta)-V_{1}]\} \\ \ {\rm min}_\ \{V(\theta)+\lambda_{2}[ B(\theta)-B_{1}]\} \tag{2.2}
min {B(θ)+λ1[V(θ)−V1]} min {V(θ)+λ2[B(θ)−B1]}(2.2)
整理后得到
(2.3)
m
i
n
[
B
(
θ
)
+
λ
1
V
(
θ
)
]
m
i
n
[
B
(
θ
)
+
1
λ
2
V
(
θ
)
]
{\rm min}_\ [B(\theta)+\lambda_{1}V(\theta)] \\ {\rm min}_\ [B(\theta)+\frac{1}{\lambda_{2}}V(\theta)] \tag{2.3}
min [B(θ)+λ1V(θ)]min [B(θ)+λ21V(θ)](2.3)
可见要使偏差和标准差同时达到最小,必须满足
(2.4)
λ
1
λ
2
=
1
\lambda_{1} \lambda_{2}=1 \tag{2.4}
λ1λ2=1(2.4)
这是一个强条件,很难满足,所以偏差和标准差很难同时达到最小,要想减小标准差,往往要付出增加偏差的代价。
我们可以使用正则化,使训练集在一定限制下偏差最小(并不是之前的无限制最小偏差),从而以偏差增加的代价实现标准差减小。这是从频率论者的角度来看为什么要正则化。
正则化除了解决上述过拟合问题外,还具有限制权重幅值的作用,使权重幅值不过大。可以从这方面理解一下“正则化”名字的由来。
在这里,我们从频率论者的角度,仔细分析正则化中的附加项怎样能够通过限制偏差,减小标准差的。了解了这个过程,就能明白正则化是怎样工作的。
工欲善其事,必先利其器。我们在这里首先简单介绍一下用到的工具——KKT方法。KKT方法是对Lagrange乘子法的推广,在支持向量机中被用来减小计算中的数据向量维数,与核函数有关(这个不知道也没有关系)。
假设有一函数,欲求其最小值,
(3.1)
m
i
n
f
(
θ
)
{\rm min} \ f(\theta) \tag{3.1}
min f(θ)(3.1)
约束为
(3.2)
{
h
i
(
θ
)
≤
0
0
≤
i
≤
m
g
j
(
θ
)
=
0
0
≤
j
≤
n
将
h
i
(
θ
)
\ h_i(\theta)
hi(θ) 和
g
j
(
θ
)
\ g_j(\theta)
gj(θ) 写成向量的形式,
h
⃗
(
θ
)
\vec{h}(\theta)
h
(θ) 和
g
⃗
(
θ
)
\vec{g}(\theta)
g
(θ) ,类比Lagrange乘子法,构造函数
(3.3)
F
(
θ
,
α
,
β
)
=
f
(
θ
)
+
α
⋅
h
⃗
(
θ
)
+
β
⋅
g
⃗
(
θ
)
F(\theta,\alpha,\beta)=f(\theta)+\alpha \cdot \vec{h}(\theta)+\beta \cdot \vec{g}(\theta) \tag{3.3}
F(θ,α,β)=f(θ)+α⋅h
(θ)+β⋅g
(θ)(3.3)
将
∂
F
∂
θ
=
0
\ \frac{\partial F}{\partial\theta}=0
∂θ∂F=0的解
θ
(
α
,
β
)
\ \theta(\alpha,\beta)
θ(α,β)代入式(3.3),得到
F
~
(
α
,
β
)
\ \tilde{F}(\alpha,\beta)
F~(α,β) ,在一定约束下求其最大值,如式(3.4)所示,
(3.4)
{
m
a
x
F
~
(
α
,
β
)
α
i
≥
0
0
≤
i
≤
m
在这里有一个神奇但又合理的结论,就是经变换后的式(3.4)与原问题式(3.1)(3.2)的解相同,他们是“dual problem”。这个结论如果难以相信,可以结合Lagrange乘子法理解一下,或者自己演算推导一下。
同时,在
F
~
(
α
,
β
)
\ \tilde{F}(\alpha,\beta)
F~(α,β)最大值处,满足推论
(3.5)
α
⋅
h
⃗
(
θ
)
=
0
\alpha \cdot \vec{h}(\theta)=0 \tag{3.5}
α⋅h
(θ)=0(3.5)
这个推论的意思是说,在最大值处,
α
i
\ \alpha_i
αi和
h
i
(
θ
)
\ h_i(\theta)
hi(θ) 至少有一个值为0,如果
α
i
\ \alpha_i
αi 的值不为0,那么
h
i
(
θ
)
\ h_i(\theta)
hi(θ)的值一定为0。这个推论也需要理解一下。
以上是KKT方法的简单介绍。KKT方法及推论并不难,是Lagrange乘子法的推广,可以用类似Lagrange的方法理解。
说了这么多,KKT方法和正则化有什么关系?
我们知道,深度学习中的正则化有如下形式,
(3.6)
L
~
(
θ
,
α
)
=
L
(
θ
)
+
α
Ω
(
θ
)
\tilde{L}(\theta ,\alpha) = L(\theta)+\alpha \Omega(\theta) \tag{3.6}
L~(θ,α)=L(θ)+αΩ(θ)(3.6)
其中,
L
(
θ
)
\ L(\theta)
L(θ) 是损失函数,
Ω
(
θ
)
\ \Omega(\theta)
Ω(θ) 是正则化项,
α
\ \alpha
α是超参数,
L
~
(
θ
,
α
)
\ \tilde{L}(\theta ,\alpha)
L~(θ,α) 是正则化后的损失函数。正则化前,通过计算损失函数梯度,更新权重
θ
\ \theta
θ 以得到训练集最小损失;正则化后,通过计算式(3.6)左侧的损失函数梯度,更新权重
θ
\ \theta
θ 以得到训练集在约束下的最小损失。
我们来看这个过程中
Ω
(
θ
)
\ \Omega(\theta)
Ω(θ) 是怎样工作的。
类似式(3.3),令
∂
L
~
(
θ
,
α
)
∂
θ
=
0
\ \frac{\partial \tilde{L}(\theta,\alpha)}{\partial \theta}=0
∂θ∂L~(θ,α)=0,得到
θ
(
α
)
\ \theta(\alpha)
θ(α) ,代入式(3.6)写成如下式(3.7)
(3.7)
{
m
a
x
L
~
(
θ
(
α
)
,
α
)
α
≥
0
根据KKT方法,式(3.7)的解与下式(3.8)的解相同,
(3.8)
{
m
i
n
L
(
θ
)
Ω
(
θ
)
≤
0
可以看出正则化项
Ω
(
θ
)
\ \Omega(\theta)
Ω(θ) 是原损失函数的一个约束。但是,这还不够。接下来我们将进一步看清楚
α
\ \alpha
α 的作用。
在深度学习过程中,超参数
α
\ \alpha
α 通常是大于0的给定值(如果等于0相当于没有正则化)。
在给定值下,
α
\ \alpha
α 必须满足式(3.7)中的最大值条件,才能与式(3.8)等价。即
(3.9)
∂
L
~
(
θ
(
α
)
,
α
)
∂
α
=
0
\ \frac{\partial \tilde{L}(\theta(\alpha),\alpha)}{\partial \alpha}=0 \tag{3.9}
∂α∂L~(θ(α),α)=0(3.9)
上式是KKT方法的要求。然而,实际上,对于给定值,当
α
>
0
\ \alpha >0
α>0 时,有
(3.10)
∂
L
~
(
θ
(
α
)
,
α
)
∂
α
=
Ω
(
θ
(
α
)
)
\ \frac{\partial \tilde{L}(\theta(\alpha),\alpha)}{\partial \alpha}=\Omega(\theta(\alpha)) \tag{3.10}
∂α∂L~(θ(α),α)=Ω(θ(α))(3.10)
(上式可能有点难,可以自己推导一下)
为了使式(3.10)满足式(3.9)的条件,从而满足KKT方法最大值条件的要求,我们做一个简单的变换。因为
α
\ \alpha
α 是定值,所以
Ω
(
θ
(
α
)
)
\ \Omega(\theta(\alpha))
Ω(θ(α)) 也是定值,令
(3.11)
Ω
~
(
θ
)
=
Ω
(
θ
)
−
Ω
(
θ
(
α
)
)
\tilde{\Omega}(\theta) = \Omega(\theta) - \Omega(\theta(\alpha)) \tag{3.11}
Ω~(θ)=Ω(θ)−Ω(θ(α))(3.11)
易知,使用了正则化项
Ω
~
(
θ
)
\ \tilde{\Omega}(\theta)
Ω~(θ) 的式(3.7)和(3.8)等价(将原来的
Ω
\ \Omega
Ω换成
Ω
~
\ \tilde{\Omega}
Ω~ )。翻译成文字就是,正则化项使原目标函数在一定限制下取最小值,这个限制是由超参数\ \alpha \和正则化项共同确定的。在限制下的最小值处,根据推论式(3.5),最佳权重一定在限制的边界。在深度学习的实际计算中,由于
Ω
~
(
θ
)
\ \tilde{\Omega}(\theta)
Ω~(θ) 和
Ω
(
θ
)
\ \Omega(\theta)
Ω(θ) 只差一个常数,并不影响求损失函数最小值,所以不必求出这个常数也可以得到权重。这个变换是用来理解正则化的,不管有没有这一常数项,最终的取值都不变。
如果是L2正则化,易理解这个限制
Ω
~
(
θ
)
\ \tilde{\Omega}(\theta)
Ω~(θ)就是把权重
θ
\ \theta
θ 的L2范数限制在由
α
\ \alpha
α 确定的幅值里。如果权重是三维的,那么这个限制范围是一个球。在原损失函数加限制后的最小值处,根据推论式(3.5),最佳权重的幅值一定在球上。
α
\ \alpha
α 在一定范围内变化时,球的幅值也跟着变化,因此可以选取合适的偏差代价,减小标准差,最终减小泛化误差。
由于我们讨论的是抽象的约束
Ω
(
θ
)
\ \Omega(\theta)
Ω(θ) ,所以其他任何有关权重
θ
\ \theta
θ 约束也适用的。
L2 正则化公式非常简单,直接在原来的损失函数基础上加上权重参数的平方和:
L
=
E
i
n
+
λ
∑
j
w
j
2
L=E_{in}+\lambda \sum_{j}w_{j}^{2}
L=Ein+λj∑wj2
其中,Ein 是未包含正则化项的训练样本误差,λ 是正则化参数,可调
正则化的目的是限制参数过多或者过大,避免模型更加复杂,一般的做法是寻找更宽松的限定条件:
∑
j
w
j
2
<
=
C
\sum_{j}w_{j}^{2}<=C
j∑wj2<=C
如上图所示,蓝色椭圆区域是最小化 Ein 区域,红色圆圈是 w 的限定条件区域。在没有限定条件的情况下,一般使用梯度下降算法,在蓝色椭圆区域内会一直沿着 w 梯度的反方向前进,直到找到全局最优值 wlin。例如空间中有一点 w(图中紫色点),此时 w 会沿着 -∇Ein 的方向移动,如图中蓝色箭头所示。但是,由于存在限定条件,w 不能离开红色圆形区域,最多只能位于圆上边缘位置,沿着切线方向。w 的方向如图中红色箭头所示。
L
=
E
i
n
+
λ
∑
j
∣
w
j
∣
L=E_{in}+\lambda \sum_{j}\left |w_j \right |
L=Ein+λj∑∣wj∣
Ein 优化算法不变,L1 正则化限定了 w 的有效区域是一个正方形,且满足 |w| < C。空间中的点 w 沿着 -∇Ein 的方向移动。但是,w 不能离开红色正方形区域,最多只能位于正方形边缘位置
以 L2 为例,若 λ 很小,对应上文中的 C 值就很大。这时候,圆形区域很大,能够让 w 更接近 Ein 最优解的位置。若 λ 近似为 0,相当于圆形区域覆盖了最优解位置,这时候,正则化失效,容易造成过拟合。相反,若 λ 很大,对应上文中的 C 值就很小。这时候,圆形区域很小,w 离 Ein 最优解的位置较远。w 被限制在一个很小的区域内变化,w 普遍较小且接近 0,起到了正则化的效果。但是,λ 过大容易造成欠拟合。欠拟合和过拟合是两种对立的状态
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。