赞
踩
正则化在DL、ML中的含义为,为模型取得较好的泛化性,在目标函数中添加的相应惩罚项。
通俗的来讲:
正则化的加入就是为了提高模型的表征能力与适应能力,使其不至于对训练数据集产生过拟合现象。
L1正则化其就是惩罚项采用了L1范数而得名的,简单且不严谨的理解L1范数就是绝对值。
加入L1正则化之后的损失函数为:
J
^
(
ω
;
X
,
y
)
=
J
(
ω
;
X
,
y
)
+
λ
∥
ω
∥
1
\hat{J}(\omega;X,y)=J(\omega;X,y)+\lambda\parallel\omega\parallel_1
J^(ω;X,y)=J(ω;X,y)+λ∥ω∥1
L2正则化与L1相类似,只不过是采用了L2范数,可以理解为是平方根形式的惩罚项。
加入L2正则化之后的损失函数为:
J
^
(
ω
;
X
,
y
)
=
J
(
ω
;
X
,
y
)
+
λ
2
∥
ω
∥
2
2
\hat{J}(\omega;X,y)=J(\omega;X,y)+\frac{\lambda}{2}\parallel\omega\parallel^2_2
J^(ω;X,y)=J(ω;X,y)+2λ∥ω∥22
从上述2个公式可以了解到如下两点:
这个问题也可以变为:为什么L1正则化会将某些参数置为0,而L2会保留?
可以从以下4个视角来解读:
L1正则化在更新时,梯度计算如下:
∂
J
∂
ω
=
∇
J
(
ω
;
X
,
y
)
+
λ
\frac{\partial{J}}{\partial\omega}=\nabla{J(\omega;X,y)}+\lambda
∂ω∂J=∇J(ω;X,y)+λ
L2正则化在更新时,梯度计算如下:
∂
J
∂
ω
=
∇
J
(
ω
;
X
,
y
)
+
λ
ω
\frac{\partial{J}}{\partial\omega}=\nabla{J(\omega;X,y)}+\lambda\omega
∂ω∂J=∇J(ω;X,y)+λω
可以看出L1在每次更新时都是以
λ
\lambda
λ为步长向0逼近,而L2在每次更新时都是以
λ
ω
\lambda\omega
λω的步长将
ω
\omega
ω向0逼近。
基于此,由于
ω
\omega
ω的大小一直在变小,所以L2正则化的步长也随之变小,而L1正则化这项为常数,则会将其以不变的步长向0逼近,直至
ω
\omega
ω的取值为0。L2正则化在数值越大的参数
这个过程可以类比于:将一根长度为1m的木棒剪短的事件,
L1正则化每次剪短2cm
L2正则化每次剪短一半
所以L1正则化经过50次,将木棒彻底剪没。
L2则会永不停歇的向0m靠近,而永远不会达到0
L2、L1对应的解空间
由于L2,L1对应的解空间为黄色部分,所以在最小化损失函数时,L1正则化则常常相切于坐标轴上(把某些参数置为0),L2正则化则常常相切于象限内。
【注意】
其实“带正则项”和“带约束条件”是等价的,最终条件是为了解决带约束条件的凸优化问题(拉格朗日对偶问题)
将问题简化为1维的CostFunction上图中内容解释:
其实从上图可以看出,
L1正则化的C在0点左边为负,0点右边为正。则正则项整体的趋势是将x往0点拉,若0点附近L的导数的绝对值没有C的大则会将x置为0
L2正则化在0点前后的导数虽然不同,但是在0点事取到0,但若是L的导数在0点不为0,则会将最优解拉离0点。
从贝叶斯的角度来看,可以理解为L1正则化相当于对参数
ω
\omega
ω引入了拉普拉斯先验,L2正则化相当于对参数
ω
\omega
ω引入了高斯先验
高斯分布曲线如下:
高斯分布0点分布较为平滑,可以取相近的值,效果相同。
拉普拉斯分布曲线:
拉普拉斯分布在0点较为尖锐,取到0点的可能性更高。
[1] 《Machine Learning》P252-P254
[2] 《Deep Learning》P141-P146
[3] 《百面机器学习》P164-P168
[4] https://blog.csdn.net/red_stone1/article/details/80755144
[5] https://blog.csdn.net/jinping_shi/article/details/52433975
[6] https://www.zhihu.com/question/37096933
[7] 【高斯分布与拉普拉斯分布图片出处】https://blog.csdn.net/qq_38923076/article/details/82936335
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。