观看B站视频后写的笔记,链接
降低模型复杂度>=正则化>=减小模型参数个数
0. 前言
正则化
是一个专有名词,和正则表达式中的正则没有任何关系。L1和L2正则化就是用L1范数和L2范数来规范模型参数的这么一种方法,Dropout也叫正则化,但这两种方法天差地别。在花书中正则化的定义
为凡是可以减少泛化误差而不是减少训练误差的方法都可以称作是正则化方法,即凡是能减少过拟合的方法都能被称作是正则化方法。
范数
把空间中两点的距离这个概念进行了扩充。权重w可以理解为是一个高维的向量,也可以理解为在高维空间中的一个点,这个点到原点的距离如果是欧氏距离的话,那就是L2范数,如果把L2范数相同的点画出来就是一个圆,半径就为L2范数。L1范数也是类似。正则化一般只用到L1和L2范数,但范数按照定义有很多种类,如Lp范数,p可以取0到1之间的一个数(得到的集合为非凸集),也可以取大于等于1的一个数(此时构成的集合是一个凸集)。可行域是凸集的话就是一个凸优化问题。
1. 从拉格朗日乘数法的角度进行理解
在神经网络里,针对参数的正则化,就是针对权重w(w决定了模型曲线形状,b只会改变模型的平移偏置)的正则化。在神经网络的训练中,当收敛到损失函数的最小值时,w和b绝对值的大小不一定,所以会出现 当用训练集训练出一组较大的w和b后,图像中误差和噪声也被放大 的问题。所以就需要对权重w约束一个可行域范围,在这个范围内求最值,即拉格朗日乘数法的角度。
如下图所示,红色的线是损失函数的等高线
,绿色的线是可行域范围
,坐标轴分别表示w1和w2(更高维的w表示有更多的轴),在我们能找到在约束条件下的最值点。其中式子里的
λ
C
\lambda C
λC 项对求最值点时的w不影响,因为求梯度时此项为0,但是此项决定了可行域范围即绿色线范围的大小。
拉格朗日函数中的拉格朗日乘子
λ
\lambda
λ作用是调节约束条件的梯度的大小,让他的大小和损失函数梯度J的大小相同方向相反。每一个不同交点的最值就能确定不同的
λ
\lambda
λ,反过来也是一样。另一方面也可以说其实只是引入了一个超参数C,只要确定了C,就可以计算出对应的
λ
\lambda
λ。当没有C时,就把
λ
\lambda
λ作为超参数进行调节。
L2正则化的极值点一般都在相切的圆上面,L1正则化的极值点一般都在坐标轴上(此时某些权重w为0,可以带来稀疏性和选择特征性,即某些特征起作用 或 特征之间去耦合 或 解决过拟合)
问题(存疑):正则化对权重进行了一个约束,在约束范围内即绿线范围内,会不会导致求出极值点时的偏差过大?
作者认为不会。因为min J(W, b)= min J(k·W, k·b),所以权重存在一个线性解空间,在下述二维空间的图中用红色的虚线来表示,那么此时偏差就可以表示成极值点和线性解空间之间的距离即垂直距离。所以并不是说可行域范围的框框越小偏差越大。
2. 从权重衰减的角度进行理解
上面拉格朗日乘数法就是去控制权重到原点之间的距离,通过这样的方式去约束权重的取值。
损失函数:
J
(
W
,
b
)
J(W,b)
J(W,b)
权重更新:
W
=
W
−
η
⋅
∇
W
J
(
W
)
W=W-\eta·{\nabla_W} J(W)
W=W−η⋅∇WJ(W)
正则化后的损失函数:
J
^
(
W
)
=
J
(
W
)
+
λ
∣
∣
W
∣
∣
2
=
J
(
W
)
+
α
2
W
T
W
\hat{J}(W)=J(W)+\lambda||W||_2=J(W)+\frac{\alpha}{2}W^TW
J^(W)=J(W)+λ∣∣W∣∣2=J(W)+2αWTW
正则化后的权重更新:
W
=
W
−
η
⋅
∇
W
J
^
(
W
)
=
(
1
−
η
⋅
α
)
W
−
η
⋅
∇
W
J
(
W
)
W=W-\eta·{\nabla_W} \hat{J}(W)=(1-\eta·\alpha)W-\eta·{\nabla_W} J(W)
W=W−η⋅∇WJ^(W)=(1−η⋅α)W−η⋅∇WJ(W)
从公式中可以看出,权重w前面的系数
η
\eta
η和
α
\alpha
α两个超参数相乘小于1大于0的时候,每一次权重更新后权重都要进行一些缩小。所以权重衰减就衰减在W前面的系数上,相当于增加了一个惩罚项,每一次学习都惩罚一点让权重取值不至于太大。如果对模型要拟合的数据曲线进行泰勒展开后,W变小会使高次项的某个系数
f
(
n
)
(
a
0
)
→
0
f^{(n)}(a_0)→0
f(n)(a0)→0。并且只惩罚大于1次的高次项,因为0次项和一次项的自变量权重系数减小并不会对拟合曲线的形状产生变化。