L1, L2正则化
贝叶斯先验分布
最大似然估计
如果有数据集(X, Y),并且Y是有白噪音(就是测量的Y与真实的
Y
r
e
a
l
Y_{real}
Yreal有均值为0的高斯分布误差),目的是新产生的X来得到Y,线性模型表示有:
f
(
X
)
=
∑
i
(
x
i
θ
i
)
+
ϵ
=
X
θ
T
+
ϵ
f(X) = \sum_i(x_i\theta_i) + \epsilon= X\theta^T + \epsilon
f(X)=i∑(xiθi)+ϵ=XθT+ϵ
其中
X
=
(
x
1
,
x
2
,
.
.
.
,
X
n
)
,
ϵ
X=(x_1,x_2,...,X_n),\epsilon
X=(x1,x2,...,Xn),ϵ是白噪音,即
ϵ
∼
N
(
0
,
δ
2
)
\epsilon \sim N(0, \delta^2)
ϵ∼N(0,δ2)。对于一数据集
(
X
i
,
Y
i
)
(X_i, Y_i)
(Xi,Yi)来说,由
X
i
X_i
Xi得到
Y
i
Y_i
Yi的概率是
Y
i
∼
N
(
f
(
X
i
,
δ
2
)
)
Y_i\sim N(f(X_i, \delta^2))
Yi∼N(f(Xi,δ2)):
P
(
Y
i
∣
X
i
,
θ
)
=
1
δ
2
π
e
x
p
(
−
∣
∣
f
(
X
i
)
−
Y
i
∣
∣
2
2
δ
2
)
P(Y_i|X_i, \theta)=\frac{1}{\delta \sqrt{2\pi}}exp(-\frac{||f(X_i)-Y_i||^2}{2\delta^2})
P(Yi∣Xi,θ)=δ2π1exp(−2δ2∣∣f(Xi)−Yi∣∣2)
对所有的数据,如果他们独立同分布有:
P
(
Y
∣
X
,
θ
)
=
Π
i
1
δ
2
π
e
x
p
(
−
∣
∣
f
(
X
i
)
−
Y
i
∣
∣
2
2
δ
2
)
P(Y|X, \theta)=\Pi_i\frac{1}{\delta \sqrt{2\pi}}exp(-\frac{||f(X_i)-Y_i||^2}{2\delta^2})
P(Y∣X,θ)=Πiδ2π1exp(−2δ2∣∣f(Xi)−Yi∣∣2)
前加log求解,得到
θ
∗
=
a
r
g
m
a
x
θ
(
ln
P
(
Y
∣
X
,
θ
)
)
a
r
g
m
a
x
θ
(
−
1
2
δ
2
∑
i
∣
∣
f
(
X
i
)
−
Y
i
∣
∣
2
+
∑
i
l
n
(
δ
2
π
)
)
=
a
r
g
m
a
x
θ
(
∑
i
∣
∣
f
(
X
i
)
−
Y
i
∣
∣
2
)
\begin{aligned} \theta^* = & arg\ max_{\theta} (\ln P(Y|X, \theta) )\\ & arg\ max_{\theta}(-\frac{1}{2\delta^2}\sum_i||f(X_i)-Y_i||^2 + \sum_i ln(\delta \sqrt{2\pi}))\\ = & arg\ max_{\theta}(\sum_i||f(X_i)-Y_i||^2) \end{aligned}
θ∗==arg maxθ(lnP(Y∣X,θ))arg maxθ(−2δ21i∑∣∣f(Xi)−Yi∣∣2+i∑ln(δ2π))arg maxθ(i∑∣∣f(Xi)−Yi∣∣2)
上述即最小二乘法
Laplace 分布
Laplace概率密度函数分布为:
f
(
x
∣
μ
,
b
)
=
1
2
b
e
x
p
(
−
∣
x
−
μ
∣
b
)
f(x|\mu,b)=\frac{1}{2b}exp(-\frac{|x-\mu|}{b})
f(x∣μ,b)=2b1exp(−b∣x−μ∣)
分布的图像:
可以看到该分布主要集中在
μ
\mu
μ附件,而且b越小,数据的分布越集中
Laplace先验导出L1正则化
对于前述的最大似然估计,我们实事上假设了 θ \theta θ是均匀分布的,也就是 P ( θ ) = C o n s t a n t P(\theta)=Constant P(θ)=Constant
L1 相当于设置了一个 Laplacean先验分布,然后最大化后验概率:
Laplace先验为:
P
(
θ
i
)
=
λ
2
e
x
p
(
−
λ
∣
θ
i
∣
)
P(\theta_i) = \frac{\lambda}{2}exp(-\lambda|\theta_i|)
P(θi)=2λexp(−λ∣θi∣)
代入上式子有
θ
∗
=
a
r
g
m
a
x
θ
(
ln
P
(
Y
∣
X
,
θ
)
P
(
θ
)
)
a
r
g
m
a
x
θ
(
−
1
2
δ
2
∑
i
∣
∣
f
(
X
i
)
−
Y
i
∣
∣
2
+
∑
i
l
n
(
δ
2
π
)
+
∑
i
l
n
(
P
(
θ
i
)
)
)
=
a
r
g
m
a
x
θ
(
∑
i
∣
∣
f
(
X
i
)
−
Y
i
∣
∣
2
+
λ
∑
i
∣
θ
i
∣
)
\begin{aligned} \theta^* = & arg\ max_{\theta} (\ln P(Y|X, \theta)P(\theta) )\\ & arg\ max_{\theta}(-\frac{1}{2\delta^2}\sum_i||f(X_i)-Y_i||^2 + \sum_i ln(\delta \sqrt{2\pi}) + \sum_i ln(P(\theta_i)))\\ = & arg\ max_{\theta}(\sum_i||f(X_i)-Y_i||^2 + \lambda \sum_i|\theta_i|) \end{aligned}
θ∗==arg maxθ(lnP(Y∣X,θ)P(θ))arg maxθ(−2δ21i∑∣∣f(Xi)−Yi∣∣2+i∑ln(δ2π)+i∑ln(P(θi)))arg maxθ(i∑∣∣f(Xi)−Yi∣∣2+λi∑∣θi∣)
可以由Laplace先验分布知, λ 越 大 \lambda 越大 λ越大,说明先验分布中参数越集中在0附近。
Gauss先验导出L2正则化
参数
θ
\theta
θ的分布式符合高斯分布:
P
(
θ
i
)
=
λ
π
e
x
p
(
−
λ
∣
∣
θ
i
∣
∣
2
)
P(\theta_i) = \frac{\lambda}{\sqrt \pi}exp(-\lambda||\theta_i||^2)
P(θi)=πλexp(−λ∣∣θi∣∣2)
θ ∗ = a r g m a x θ ( ln P ( Y ∣ X , θ ) P ( θ ) ) = a r g m a x θ ( ∑ i ∣ ∣ f ( X i ) − Y i ∣ ∣ 2 + λ ∑ i ∣ ∣ θ i ∣ ∣ 2 ) \begin{aligned} \theta^* = & arg\ max_{\theta} (\ln P(Y|X, \theta)P(\theta) )\\ =& arg\ max_{\theta} (\sum_i||f(X_i)-Y_i||^2 + \lambda \sum_i ||\theta_i||^2) \end{aligned} θ∗==arg maxθ(lnP(Y∣X,θ)P(θ))arg maxθ(i∑∣∣f(Xi)−Yi∣∣2+λi∑∣∣θi∣∣2)
总结
-
为什么引入正则化?
主要解决过拟合问题 -
为什么L1引入稀疏性
- L1正则化先验分布Laplace分布,数据集中在0处,引入稀疏性
- L2正则化先验Gauss分布,数据集中在0附近,得到的解更加平滑。
-
为什么降低过拟合
正则化是一种结构风险最小化的策略。
通过在原式和正则项中做一个trade-off。能够让模型更加简单,降低模型复杂度,得到更小的泛化误差,降低过拟合。
L2 :使得模型的解偏向于范数较小的 W,通过限制 W 范数的大小实现了对模型空间的限制,从而在一定程度上避免了 overfitting 。不过 ridge regression 并不具有产生稀疏解的能力,得到的系数仍然需要数据中的所有特征才能计算预测结果,从计算量上来说并没有得到改观。
L1 :它的优良性质是能产生稀疏性,导致 W 中许多项变成零。 稀疏的解除了计算量上的好处之外,更重要的是更具有“可解释性”。
结构风险最小化
图1 上面中的蓝色轮廓线是没有正则化损失函数的等高线,中心的蓝色点为最优解,左图、右图分别为L2、L1正则化给出的限制。
可以看到在正则化的限制之下,L2正则化给出的最优解w∗是使解更加靠近原点,也就是说L2正则化能降低参数范数的总和。L1正则化给出的最优解w∗是使解更加靠近某些轴,而其它的轴则为0,所以L1正则化能使得到的参数稀疏化。
- 之所以L1是一个正方形,而L2是一个圆,因为对于二维来说:L2: ∣ w 1 ∣ 2 + ∣ w 2 ∣ 2 = 定 值 |w_1|^2 + |w_2|^2 = 定值 ∣w1∣2+∣w2∣2=定值,L2: ∣ w 1 ∣ + ∣ w 2 ∣ = 定 值 |w_1|+ |w_2| =定值 ∣w1∣+∣w2∣=定值
- 当L正则化(L1和L2的圆和正方形)不变时,看出经验函数和L正则化交于一点时,经验函数尽可能的小,同样,当经验函数不变时,L正则化尽可能小,也时交于一点时总结构风险函数小
解析解
我们的目标函数为:
J
(
w
;
X
,
y
)
=
L
e
m
p
(
w
;
X
,
y
)
+
α
∥
w
∥
1
−
−
−
(
1
)
J(w; X, y) = L_{emp}(w; X, y) + \alpha\|w\|_1 \ \ \ \ \ ---(1)
J(w;X,y)=Lemp(w;X,y)+α∥w∥1 −−−(1)
要想使得上式取得最小值
w
∗
w^*
w∗,对其求导
∇
w
J
(
w
;
X
,
y
)
=
∇
w
L
e
m
p
(
w
;
X
,
y
)
+
α
⋅
s
i
g
n
(
w
)
−
−
−
(
2
)
\nabla_w J(w; X, y) = \nabla_w L_{emp}(w; X, y) + \alpha \cdot sign(w) \ \ \ \ \ ---(2)
∇wJ(w;X,y)=∇wLemp(w;X,y)+α⋅sign(w) −−−(2)
当
α
=
0
\alpha=0
α=0时,假设我们已得到目标解
w
∗
w^*
w∗,泰勒展示展开,其
▽
J
(
w
∗
)
=
0
\triangledown J(w^*)=0
▽J(w∗)=0:
J
(
w
;
X
,
y
)
=
J
(
w
∗
;
X
,
y
)
+
1
2
(
w
−
w
∗
)
H
(
w
−
w
∗
)
−
−
−
(
3
)
J(w; X, y) = J(w^*; X, y) + \frac{1}{2}(w - w^*)H(w-w^*) \ \ \ \ \ ---(3)
J(w;X,y)=J(w∗;X,y)+21(w−w∗)H(w−w∗) −−−(3)
其中H是关于w的Hessian矩阵,为了得到更直观的解,我们简化H,假设H为对角矩阵
H
=
d
i
a
g
(
[
H
1
,
1
,
H
2
,
2
.
.
.
H
n
,
n
]
)
H = diag([H_{1,1},H_{2,2}...H_{n,n}])
H=diag([H1,1,H2,2...Hn,n]),将其代入到公式(1)中,有:
J
(
w
;
X
,
y
)
=
J
(
w
∗
;
X
,
y
)
+
∑
i
[
1
2
H
i
,
i
(
w
i
−
w
i
∗
)
2
+
α
i
∣
w
i
∣
]
−
−
−
(
4
)
J(w;X,y)=J(w^*;X,y)+\sum_i\left[\frac{1}{2}H_{i,i}(w_i-w_i^*)^2 + \alpha_i|w_i| \right] \ \ \ \ \ ---(4)
J(w;X,y)=J(w∗;X,y)+i∑[21Hi,i(wi−wi∗)2+αi∣wi∣] −−−(4)
上式看出,w 各个方向的导数是不相关的,所以可以分别独立求导并使之为0,可得:
H
i
,
i
(
w
i
−
w
i
∗
)
+
α
⋅
s
i
g
n
(
w
i
)
=
0
⇒
w
i
=
w
i
∗
−
α
H
i
,
i
s
i
g
n
(
w
i
∗
)
=
s
i
g
n
(
w
i
∗
)
∣
w
i
∗
∣
−
α
H
i
,
i
s
i
g
n
(
w
i
∗
)
=
s
i
g
n
(
w
i
∗
)
(
∣
w
i
∗
∣
−
α
H
i
,
i
)
\begin{aligned} H_{i,i}(w_i-w_i^*)+& \alpha \cdot sign(w_i)=0 \\ \Rightarrow w_i = & w_i^* - \frac{\alpha}{H_{i,i}}sign(w_i^*) \\ = & sign(w_i^*)|w_i^*| - \frac{\alpha}{H_{i,i}}sign(w_i^*)\\ = & sign(w_i^*)(|w_i^*| - \frac{\alpha}{H_{i,i}}) \\ \end{aligned}
Hi,i(wi−wi∗)+⇒wi===α⋅sign(wi)=0wi∗−Hi,iαsign(wi∗)sign(wi∗)∣wi∗∣−Hi,iαsign(wi∗)sign(wi∗)(∣wi∗∣−Hi,iα)
对于上式,其实我们最终得到的求解:
- 必定有 ∣ w i ∣ < ∣ w ∗ ∣ |w_i| < |w^*| ∣wi∣<∣w∗∣,因为只有这样,才能是 α ∣ w i ∣ \alpha |w_i| α∣wi∣更小。
- 而且 s i g n ( w i ) = s i g n ( w i ∗ ) 或 w i = 0 sign(w_i) = sign(w^*_i)或w_i=0 sign(wi)=sign(wi∗)或wi=0,只有这样,在 α ∣ w i ∣ \alpha|w_i| α∣wi∣不变时,才能使得式(4)最小。
因此,我们得到最终的解
w
i
=
s
i
g
n
(
w
i
∗
)
max
{
∣
w
i
∗
∣
−
α
H
i
,
i
,
0
}
w_i = sign(w^*_i) \max\left\{ |w_i^*| - \frac{\alpha}{H_{i,i}},0 \right\}
wi=sign(wi∗)max{∣wi∗∣−Hi,iα,0}
由此解可知:
- 若 ∣ w i ∗ ∣ ≤ α H i , i |w_i^*| \leq \frac{\alpha}{H_{i,i}} ∣wi∗∣≤Hi,iα,那么正则化后的最优解 w i = 0 w_i=0 wi=0,说明这个方向 L e m p ( w ; X , y ) L_{emp}(w; X, y) Lemp(w;X,y)被正则话抵消了,即引入了稀疏性。
- 若 ∣ w i ∗ ∣ > α H i , i |w_i^*| > \frac{\alpha}{H_{i,i}} ∣wi∗∣>Hi,iα,正则化不会最优解推向 w i = 0 w_i=0 wi=0,而是在这方向向原点移动了 α H i , i \frac{\alpha}{H_{i,i}} Hi,iα的距离
总结
dropout
dropout主要是解决在深度学习中过拟合的问题,一般的神经网络很容易出现过拟合,有一种方法即通过模型组合,训练多个模型,但这样会非常耗时,Hinton提出的Dropout很好地解决了这个问题。
基本步骤是在每一次的迭代中,随机删除一部分节点,只训练剩下的节点。每次迭代都会随机删除,每次迭代删除的节点也都不一样,相当于每次迭代训练的都是不一样的网络,通过这样的方式降低节点之间的关联性以及模型的复杂度,从而达到正则化的效果。预测上这点上有点类似 bagging,但比 bagging 来的简单。
即:
使用dropout需要设置一个超参数 keep_prob, 作用是每层节点随机保留的比例
- 经过交叉验证,隐含节点dropout率等于0.5的时候效果最好,原因是0.5的时候dropout随机生成的网络结构最多。
- dropout也可以被用作一种添加噪声的方法,直接对input进行操作。输入层设为更接近1的数。使得输入变化不会太大(0.8)
训练过程注意:
- 只有训练时dropout,预测时所有节点使用
- 数据量小的时候,dropout效果不好,数据量大了,dropout效果好
- 对参数w的训练进行球形限制(max-normalization),对dropout的训练非常有用。
- 球形半径c是一个需要调整的参数。可以使用验证集进行参数调优
- dropout自己虽然也很牛,但是dropout、max-normalization、large decaying learning rates and high momentum组合起来效果更好,比如max-norm regularization就可以防止大的learning rate导致的参数blow up。
- 使用pretraining方法也可以帮助dropout训练参数,在使用dropout时,要将所有参数都乘以1/p。
缺点:
dropout的缺点就在于训练时间是没有dropout网络的2-3倍。
earlystopping
提前终止可能是最简单的正则化方式,他适用于模型的表达能力很强的时候。这种情况下,一般训练误差会随着训练次数的增多逐渐下降,而测试误差则会先下降而后再次上升。为了避免过拟合训练集,一个很好的解决方案是 提前停止,当它在验证集上的性能开始下降时就中断训练。
batch normalization
可以让大型的卷积神经网络训练速度加快很多倍,同时收敛后分类的准确率也可以大幅度提高。BN在训练某层时,会对每一个mini-batch数据进行标准化处理,减少了内部神经元分布的改变。
数据增强
复制现有数据并加随机噪声,重采样等,在图像领域我们可以进行不同角度旋转,平移变换,随机裁剪,中心裁剪,模糊等。
常用的数据增强方法有:
- 旋转 | 反射变换(Rotation/reflection): 随机旋转图像一定角度; 改变图像内容的朝向;
- 翻转变换(flip): 沿着水平或者垂直方向翻转图像;
- 缩放变换(zoom): 按照一定的比例放大或者缩小图像;
- 平移变换(shift): 在图像平面上对图像以一定方式进行平移;
- 可以采用随机或人为定义的方式指定平移范围和平移步长, 沿水平或竖直方向进行平移. 改变图像内容的位置;
- 尺度变换(scale): 对图像按照指定的尺度因子, 进行放大或缩小; 或者参照SIFT特征提取思想, > - 利用指定的尺度因子对图像滤波构造尺度空间. 改变图像内容的大小或模糊程度;
- 对比度变换(contrast): 在图像的HSV颜色空间,改变饱和度S和V亮度分量,保持色调H不变. 对每个像素的S和V分量进行指数运算(指数因子在0.25到4之间), 增加光照变化;
- 噪声扰动(noise): 对图像的每个像素RGB进行随机扰动, 常用的噪声模式是椒盐噪声和高斯噪声;
- 颜色变化:在图像通道上添加随机扰动。
- 输入图像随机选择一块区域涂黑,参考《Random Erasing Data Augmentation》。
权值共享
权值共享最常见的就是在卷积神经网络中,权值共享的目的旨在减小模型中的参数,同时还能较少计算量。在循环神经网络中也用到了权值共享。
具体来说,就是整个图片使用同一个卷积核内的参数,比较一个331的卷积核,这个核中9个参数被整张图共享,并不会因图像位置不同而改变核内的参数。
增加噪声
添加噪声的途径有很多,可以在输入数据上添加,增大数据的多样性,可以在权值上添加噪声,这种方法类似于L2正则
对抗学习
通过对输入增加扰动,来增加模型的抗攻击型和泛化能力。参见NLP — >对抗学习:从FGM, PGD到FreeLB
模型组合
训练多个模型,然后将各个模型融合
ref:
L1正则化及其推导
机器学习中的正则化(Regularization)
深度学习中Dropout的作用和原理
深度学习100问之神经网络中解决过拟合的几种方法
l1 相比于 l2 为什么容易获得稀疏解?