说到
前言
正则化,我想大家都不知道,这在机器学习和深度学习中都非常常见。 常用的正则化有L1正则化和L2正则化。 标准化可以考虑在损失函数的计算中增加权重,以降低模型的拟合程度。 更熟悉的学生说,L1正则化倾向于稀疏模型的权重参数(部分权重值为0 ),L2正则化倾向于模型的权重为0 (部分权重为0 )。
有没有想过为什么L1正则化要将部分权重的值设为0? L2为什么正则化会导致权重偏向0? 为什么规范化可以防止过拟合? 正则化到底是怎么来的? 带着这些问题,我们看了这篇文章,有助于大家一一解答。
在介绍
正则化的由来
正则化之前,我们先看一下图
标准化效果图
在上图中,画出了3个不同的曲线y1、y2、y3,但从曲线函数值的变化可以看出,y1的函数值的变化最大,y2和y3的函数值的变化相对缓慢。 由函数的式子可知,y2可以理解为自变量的系数值比y1小,y3比y1少一个自变量,少的自变量的系数为0。
通常,如果函数取值变化幅度较大,则函数可能更复杂,且函数方差较大。 因此,在上述三个函数中,函数y1的复杂度最高。 从函数图像中可以看出,如果降低自变量的系数值或减少函数自变量的数量(自变量的系数为0 ),则可以降低函数的复杂性。
在建立模型之前,我们不知道数据的分布。 模型太简单的话会拟合不足,模型太复杂的话会拟合过剩。 通常,为了使模型获得更好的拟合数据,需要对模型进行过拟合。 为了降低模型的拟合,必须将模型部分的权重设置为0或降低模型的权重。 因此,在损失函数中添加惩罚项。 公式如下所示
标准化目标函数
上式中的j(; x,y )为原目标函数(未加正则化),))表示模型参数的惩罚项、惩罚项系数[0,],越大表示正则化惩罚越大。
需要注意的是,在对模型的参数赋予惩罚时,实际上只是增加了模型的权重参数,不包含偏置参数。 模型中的偏置参数相对于权重参数的数量而言非常少,每个权重参数指定两个变量如何相互作用,但由于偏置只控制单个变量,因此即使不将偏置归一化也不会产生较大的方差。 此外,如果将偏置正规化,则有可能导致明显的不匹配。
上式的参数包含权重和偏移量,但只是将权重正规化。 因此,L1正则化和L2正则化可以变换为以下公式
L1正则化和L2正则化
正则化的影响
正则化的由来,直观地介绍了为什么需要参加正则化。 接下来,我们来介绍一下为什么L1正则化会使模型的一部分参数为0,而L2正则化会使模型的参数为0。 为了更好地帮助理解和证明,先用图解说明,然后用公式推导证明
作为直观理解的帮助,为了让大家直观理解正则化的效果,接下来我们用图来看看L1正则化和L2正则化的效果。 预先正则化是指在原目标函数上增加一个参数的惩罚项,目的是防止网络的参数过大而导致模型过拟合。 因此,正则化后的目标函数可以理解为在最小化原始目标函数的基础上增加了一个参数约束函数。 约束函数需要小于某个常数c
受约束的目标函数
L1正则化与将L1正则化的效果求出原来的目标函数的最小值和对权重参数的约束函数等价,但是这里为了使作图变得容易,只考虑二维的情况
二维L1正则化
根据上面两个公式,线性规划图可以画如下
L1正则化
上
图中的蓝色椭圆表示的是原目标函数的等高线,红色矩形表示的是权重的约束函数,图中的红色箭头表示的是约束函数的法向量,其中蓝色箭头表示的是原目标函数在该点的梯度方向(等高线的梯度方向与它的法向量方向一致)
由于约束函数的限制导致ω只能在红色矩形的边上进行移动来寻找最佳的ω∗。当ω处于上图中的位置时,将原目标函数的梯度分解为沿约束函数的切线方向(即矩形的边)和法线方向,为了使得原目标函数取得最小值此时需要沿着梯度在约束函数的切线方向(左上方)移动。当ω移动到ω′时,通过分解原代价函数的梯度可以发现,为了使得取得原代价函数的最小值应该沿着右上方移动,所以最终最优的ω∗应该为矩形的顶点位置。
通过观察可以发现此时ω∗在坐标轴ω1方向的取值为0,最优点会落在某些轴上导致部分权重为0,这也就是为什么L1正则化会使得部分权重参数稀疏的原因。
L2正则化
同样,我们按照分析L1正则化的思路进行分析
上图中蓝色椭圆表示是原目标函数的等高线,红色圆表示的是权重的约束函数它的半径是√C,其中蓝色箭头表示的是原目标函数在该点的梯度方向,红色箭头表示的是约束函数在该点的法向量,绿色箭头表示的是约束函数在该点的切线方向。
还是按照上面的思想我们将梯度按切线方向和法线方向进行分解,为了使得原代价函数取得最小值,我们需要将ω按切线方向进行移动,当移动到ω∗时,梯度方向与切线方向垂直时梯度沿切线方向的分量为0,此时原代价函数取得最小值,所以ω∗为最优点。
通过观察上图可以发现,此时ω1的取值接近于0,因为最优点会靠近某些轴,导致部分权重取值接近于0,这也就是为什么L2正则化会使得部分权重趋于0的原因。
2.公式推导证明
L2正则化
L2正则化也被称为权重衰减或岭回归,在神经网络中也被经常用到,因为它会使得部分权重向零点靠近(使得部分权重的取值趋于0)。为了更好的观察L2正则化的影响,接下来我们观察一下在添加罚项之后,权重参数是如何更新的
使用单步梯度下降更新权重,更新公式如下:
上式中的,ϵ指的是学习率,α指的是权重衰减系数,这两个参数通常都是小于1的。通过单步的权重的梯度更新公式可以发现,权重每次在更新之前都需要乘以一个小于1的系数,相当于每次更新权重的时候都对它做了衰减,在经过多次权重更新之后会,权重的系数会接近于0,最终会导致权重也接近0,假设权重的系数为0.9,经过100次权重的迭代更新,最终权重系数会变为0.9^100≈2.7∗10−5(注:这里没有考虑梯度的大小,只是简单表明这种趋势)。上面只是一个单步的权重更新过程,接下来我们推导一下在整个训练过程中,权重的更新过程,为了简化分析我们假设ω∗为J(ω)取得最小值时的权重向量,根据dxxm公式
假设J(ω)二阶可导,我们对其进行二次近似的dxxm展开则有
为了让J^(ω)取得最小值,我们令其导数为0,因为J(ω∗)为常数,所以它的导数为0,我们就直接省略了
上式中的I表示的是单位矩阵,通过上式不难发现,当正则化的惩罚项系数α为0时,此时ω˜的最优解就等于ω∗,接下来我们讨论一下当惩罚项系数不为0的时。因为H是J在ω∗的Hessian矩阵,所以H是一个对称矩阵,我们可以对其做特征分解,可得H=QΛQT(后面是Q的转置),其中Λ为对角矩阵,Q为一组特征向量的标准正交基,代入上式可得
通过上面的式子可以发现,L2正则化的效果就是沿着H矩阵特征向量所定义的轴缩放未正则化J(ω)的解ω∗。因为I是单位矩阵,我们可以将缩放的系数改成这种形式
,其中λi指的是矩阵H的特征向量每个轴值的大小,也就是特征分解之后特征值的大小。通过修改后的衰减系数不难发现,当特征值λi≫α时,此时α的影响可以忽略不计,正则化的缩放系数会趋于1,正则化基本没有影响。当特征值λi≪α时,可以将缩放系数改为
,因为α≫λi所以α/λi≫1,所以缩放系数λi/α≪1,缩放系数趋于0使得权重也会趋于0。
L1正则化
上面我们推导了添加了L2正则化之后对权重的影响,通过最后推导得到式子可以解释为什么l2正则化会让权重趋于0。接下来,我们以类似的方式来推导L1正则化对于权重的影响
上式中的sign函数为符号函数,函数图像如下
当函数输入值x<0时输出值恒等于-1,输入值为0时输出值也等于0,输入值x>1时输出值恒等于1,sign函数经常被用来表示阶跃函数
我们将J(ω;X,y)使用二阶的dxxm展开式来代替,可以将L1正则化后的代价函数转换为如下形式
接下来我们看看如何求解ωi,上式中的J(ω∗)是常数我们不用考虑,主要考虑求和式中的二次项式和绝对值式来使得整个目标函数取得最小值,为了求得后两项和的最小值,我们对其求导并令求导后的结果等于0来求ωi
我们可以将上式中ωi分为两种情况,第一种是ωi和ω∗同号即sign(ωi)=sign(ωi∗),第二种是ωi和ω∗异号即sign(ωi)≠sign(ω∗i),我们先讨论第一种情况,为了帮助大家理解我们可以看看下图
通过上图可以发现,当ωi与ω∗异号时,无论是哪种情况为了使得损失函数最小,其最优值都是ωi=0此时能保证代价函数的二次项式和绝对值式都取得最小值。当ωi和ω∗同号时,可以将上式进行化简可得
所以,我们可以合并上式的结果得到最终的ωi的表达式为
总结
我们通过画图和使用公式推导证明了L1正则化和L2正则化产生不同效果的原因,需要注意的是它们的共同点其实都是在衰减对于代价函数的值变化影响相对较小的权重,也就是特征值小的权重,而L1正则化的效果是会使得这部分权重为0,L2正则化会使得它们趋于0。