【深度学习基础】正则化
常用L1和L2正则化,随机失活(dropout)。
L0 & L1
L0范数:权值向量
w
w
w中非0的元素的个数。
L1范数(稀疏规则算子,Lasso Regularization):权值向量
w
w
w中各个元素绝对值之和,通常表示为
∣
∣
w
∣
∣
1
||w||_1
∣∣w∣∣1
如果使用L0范数来规则化一个参数矩阵W,即意味着希望W的大部分元素都是0。L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择。
三个问题:
1. 为什么L1范数导致稀疏解?(解答包括部分L2范数的内容)
公式解释:
假设只有一个参数
w
w
w,损失函数为
L
(
w
)
L(w)
L(w),分别加上
L
1
L1
L1和
L
2
L2
L2正则项:
J
L
1
(
w
)
=
L
(
w
)
+
λ
∗
∣
w
∣
J_{L1}(w) = L(w) + \lambda * |w|
JL1(w)=L(w)+λ∗∣w∣
J
L
2
(
w
)
=
L
(
w
)
+
λ
∗
w
2
J_{L2}(w) = L(w) + \lambda * w^{2}
JL2(w)=L(w)+λ∗w2
假设
L
(
w
)
L(w)
L(w)在0处的倒数为
d
0
d_0
d0,即
∂
L
(
w
)
∂
w
∣
w
=
0
=
d
0
\frac{\partial L(w)}{\partial w} |_{w=0} = d_0
∂w∂L(w)∣w=0=d0
则可以推导使用
L
1
L1
L1正则和
L
2
L2
L2正则时的导数:
L
2
L2
L2正则项在0的导数:
∂
J
L
2
(
w
)
∂
w
∣
w
=
0
=
d
0
+
2
∗
λ
∗
w
=
0
\frac{\partial J_{L2}(w)}{\partial w} |_{w=0} = d_0 + 2 * \lambda * w = 0
∂w∂JL2(w)∣w=0=d0+2∗λ∗w=0
L
1
L1
L1正则项在0左右两边的导数:
∂
J
L
1
(
w
)
∂
w
∣
w
=
0
=
d
0
−
λ
\frac{\partial J_{L1}(w)}{\partial w} |_{w=0} = d_0 - \lambda
∂w∂JL1(w)∣w=0=d0−λ
∂
J
L
1
(
w
)
∂
w
∣
w
=
0
=
d
0
+
λ
\frac{\partial J_{L1}(w)}{\partial w} |_{w=0} = d_0 + \lambda
∂w∂JL1(w)∣w=0=d0+λ
从上式可以看出,引入
L
1
L1
L1正则项的代价函数在等于0的位置有一个突变,在0处是一个极小值点。因此,优化时,可能优化到该极小值点上,即w=0.
2. 为什么L0和L1都可以实现稀疏,而选择L1?
两种优势:
L
0
L0
L0范数很难优化求解(NP问题);
L
1
L1
L1范数是
L
0
L0
L0范数的最优凸近似,而且
L
1
L1
L1比
L
0
L0
L0更容易优化求解。
3. 如何选择 L 1 L1 L1范数的参数?
λ
\lambda
λ越大,越
F
(
x
)
F(x)
F(x)在
x
=
0
x=0
x=0时取得最小值。
理解:见上1的公式推导,
L
1
L1
L1正则化在某些位置是不可导的,当
λ
\lambda
λ足够大时,使得
F
(
x
)
F(x)
F(x)在
x
=
0
x=0
x=0时取得最小值。
下图为
λ
=
0.5
\lambda=0.5
λ=0.5和
λ
=
2
\lambda=2
λ=2的图像。
4. 参数稀疏化的好处
稀疏矩阵指的是很多元素为0,只有少数元素是非零值的矩阵,即得到的线性回归模型的大部分系数都是0。
(1) 特征选择
稀疏规则化有一个最大的好处在于能实现特征的自动选择。
L
1
L1
L1可以学习去掉没有
y
y
y信息的特征,也就是把这些特征对应的权重重置为0。
(2) 可解释性
模型更容易解释。
L2
L2范数(岭回归,Ridge Regression):权值向量
w
w
w中各个元素的平方和再求平方根(可以看到Ridge回归的
L
2
L2
L2正则项有平方符号),通常表示为
∣
∣
w
∣
∣
2
||w||_2
∣∣w∣∣2。
L
2
L2
L2正则化可以防止模型过拟合(overfitting),虽然
L
1
L1
L1在一定程度上也可以防止过拟合。
C
=
C
0
+
λ
2
n
∑
w
w
2
C = C_0 + \frac{\lambda}{2n} \sum_w w^2
C=C0+2nλw∑w2
1. 为什么 L 2 L2 L2正则化可以获得值很小的参数?
∂
C
∂
w
=
∂
C
0
∂
w
+
λ
n
w
\frac{\partial C}{\partial w} = \frac{\partial C_0}{\partial w} + \frac{\lambda}{n} w
∂w∂C=∂w∂C0+nλw
∂
C
∂
b
=
∂
C
0
∂
b
\frac{\partial C}{\partial b} = \frac{\partial C_0}{\partial b}
∂b∂C=∂b∂C0
从上式可以看出
L
2
L2
L2正则项对
b
b
b的更新没有影响,只是对
w
w
w的更新有影响。
w
=
w
−
η
∂
C
0
∂
w
−
η
λ
n
w
w = w - \eta \frac{\partial C_0}{\partial w} - \eta \frac{\lambda}{n} w
w=w−η∂w∂C0−ηnλw
=
(
1
−
η
λ
n
)
∗
w
−
η
∂
C
0
∂
w
= (1 - \eta \frac{\lambda}{n}) * w - \eta \frac{\partial C_0}{\partial w}
=(1−ηnλ)∗w−η∂w∂C0
因为
(
1
−
η
λ
n
)
<
0
(1 - \eta \frac{\lambda}{n}) < 0
(1−ηnλ)<0,所以
w
w
w在减小。
2. 为什么 L 2 L2 L2正则化可以防止过拟合?
过拟合的时候,拟合函数的系数往往非常大,为什么?如下图所示,过拟合,就是拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。
而正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况。
3. L 2 L2 L2参数的选择
λ \lambda λ越大, θ j \theta _j θj衰减得越快。
4. L 1 L1 L1和 L 2 L2 L2正则有什么区别?
性质 | L1 | L2 |
---|---|---|
鲁棒性 | 弱 | 强 |
稳定性 | 强 | 弱 |
解个数 | always 1个 | possibly 多个 |
特征选择 | 没有 | built-in |
计算高效性 | 分析解导致计算高效 | 非稀疏时计算 |
ps. 如果每层都是线性的,那么整个网络就是线性网络,即使是一个很深的网络,因为其具有线性激活函数的特征,最终我们只能计算线性函数。因此,该线性网络不适用与非常复杂的决策,以及过度拟合数据集的非线性决策边界。
总结
λ
\lambda
λ变大,
W
[
l
]
W^{[l]}
W[l]变小,此时忽略
b
[
l
]
b^{[l]}
b[l]的影响,
Z
[
l
]
Z^{[l]}
Z[l]也会相对变小。下图
t
a
n
h
(
z
)
tanh(z)
tanh(z)的激活函数会相对呈现线性,整个神经网络会计算离线性函数近的值。
随机失活正则化(Dropout)
反向随机失活(inverted dropout)
keep-prob
每一层的keep-prob不同
keep-prob==1,保留所有
使用注意事项:
(1) 模型过拟合才可以使用,常用于CV
early stopping
正则化输入
步骤
- 零均值化
μ = 1 m ∑ i = 1 m x ( i ) \mu = \frac{1}{m} \sum_{i=1}^{m} x^{(i)} μ=m1i=1∑mx(i)
x : = x − μ x := x-\mu x:=x−μ
意思是移动训练集,知道完成0均值化。具体图像直观解释见下图。
- 归一化方差
σ 2 = 1 m ∑ i = 1 m [ x ( i ) ] 2 \sigma ^2 = \frac{1}{m} \sum_{i=1}^m [x^{(i)}]^2 σ2=m1i=1∑m[x(i)]2
x / = σ 2 x /= \sigma ^2 x/=σ2
为什么要归一化输入?
假设x1为1,2…1000,x2为0,0.1…1,则未归一化的
J
J
J图像为下图,从不同方向下降时设定的学习率也不同。需要将学习率设定的很小,并且执行多次迭代。
而如果实现了归一化,归一化后的图像更加均匀,见下图。那么无论从什么地方开始,梯度下降法都能更直接快速的找到最小值。
参考:
3. 机器学习中的范数规则化之(一)L0、L1与L2范数
4. L1正则和L2正则的比较分析详解
5. 机器学习中正则化项L1和L2的直观理解
6. Differences between the L1-norm and the L2-norm (Least Absolute Deviations and Least Squares)