在机器学习中,通常会在损失函数后加入正则项来防止模型过拟合。
L1正则化 L1正则化公式为:
L为损失函数,W为网络权重,b为偏置值,m为样本数量,n_x为网络层数,
λ
\lambda
λ是超参数。
L2正则化公式为:
L为损失函数,W为网络权重,b为偏置值,m为样本数量,n_x为网络层数, λ \lambda λ是超参数。
L2正则化含义 在对W进行梯度下降时,对于第l层的参数
W
[
l
]
W^{[l]}
W[l]更新过程如下:
先计算
w
[
l
]
w^{[l]}
w[l]的梯度,对上式求导结果如下:
d
w
[
l
]
=
∂
J
∂
w
[
l
]
+
λ
m
w
[
l
]
①
dw^{[l]} = \frac{\partial J}{\partial w^{[l]}} + \frac{\lambda }{m}w^{[l]} \qquad ①
dw[l]=∂w[l]∂J+mλw[l]①
然后更新
w
[
l
]
w^{[l]}
w[l]的值,更新过程如下:
w
[
l
]
=
w
[
l
]
−
α
d
w
[
l
]
②
w^{[l]} = w^{[l]} - \alpha dw^{[l]} \qquad ②
w[l]=w[l]−αdw[l]②
将公式②带入公式①中,整理后得到如下式子:
w
[
l
]
=
(
1
−
α
λ
m
)
w
[
l
]
−
α
∂
J
∂
w
[
l
]
③
w^{[l]} = (1 - \frac{ \alpha \lambda}{m}) w^{[l]} - \alpha\frac{\partial J}{\partial w^{[l]}} \qquad ③
w[l]=(1−mαλ)w[l]−α∂w[l]∂J③
通过公式③可以看出L2的正则化
w
[
l
]
w^{[l]}
w[l]先乘以一个小于1的因子,将自身缩小,然后再减去梯度值,进行梯度下降。因此L2正则化又被称为权重衰减。不难看出W的值由于正则项的加入不会变的特别大,因为当W值过大时,正则项的数值也会增大,梯度值也同样增大,在梯度下降时W的值会变小,直至接近0。
上面说了L2的作用是防止W的值过大,那为什么缩小W的值就能防止过拟合呢?
首先说一下直观理解,W的值越小,代表隐藏的神经单元的影响就越小。当我们使用L2正则化后,W的值会变小,代表我们减少许多隐藏单元的影响,使网络模型变得简单。参考文章:https://www.zhihu.com/question/52993836/answer/2392676514。
直观理解,下图是tanh函数图像:
设
z
[
l
]
=
W
[
l
]
a
[
l
−
1
]
+
b
[
l
]
z^{[l]} = W^{[l]}a^{[l-1]}+b^{[l]}
z[l]=W[l]a[l−1]+b[l],
g
(
z
)
=
t
a
n
h
(
z
)
g(z) = tanh(z)
g(z)=tanh(z)。其中
a
[
l
−
1
]
a^{[l-1]}
a[l−1]为前一层输出。
由于L2正则化会使得W的值变小,因此Z的值也会变得很小,带入激活函数后,g(z)的值会取再下图中红色区域。
由于此时激活函数的值只在红色区域取得,tanh可以近似看所以为线性函数,我们知道如果每一层都是线性函数,那么整个网络最后和线性回归函数一样,网络复杂度大大降低,能够有效防止过拟合。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)