你真的了解正则化了吗?
作者头像
  • 2019-12-02 13:28:55 6

前言

谈到正则化,大家应该不会感到陌生。它在机器学习和深度学习中非常常见,常用的正则化方法包括L1正则化和L2正则化。正则化的主要作用是通过在损失函数中加入权重项来减少模型过拟合的风险。更深入了解的同学可能会提到,L1正则化可以使模型的权重参数变得稀疏(部分权重值为0),而L2正则化则使权重趋向于0。

但是,大家是否思考过为什么L1正则化会使部分权重变为0,而L2正则化会使权重趋向于0?正则化为何能有效防止过拟合?本文将详细探讨这些问题。

正则化的由来

在介绍正则化之前,我们先看一幅图:

正则化效果图

图中展示了三条不同的曲线:y1、y2和y3。从图中可以看出,y1的函数值变化最大,而y2和y3的变化较为平缓。通过观察函数表达式,可以发现y2的自变量系数比y1小,y3的自变量少了一个,这意味着y3中缺少的自变量系数为0。

通常情况下,函数值变化较大的情况意味着函数更加复杂,方差更大。因此,在这三个函数中,y1是最复杂的。通过图像可以看出,减少自变量的系数或减少自变量的数量(使其系数为0)可以降低函数的复杂度。

在构建模型之前,我们无法预知数据的分布。如果模型过于简单,会导致欠拟合;如果模型过于复杂,则会过拟合。为了更好地拟合数据,我们往往需要使模型处于过拟合状态,而为了防止过拟合,我们需要使部分权重为0或降低权重。因此,我们会在损失函数中添加一个惩罚项,如下所示:

带正则化的目的函数

上式中的J(θ;X,y)表示原始的目标函数(未添加正则化),Ω(θ)表示模型参数的惩罚项,惩罚项系数α∈[0,∞),α越大表示正则化惩罚越强。

需要注意的是,在对模型参数进行惩罚时,我们只添加了权重参数,而不包括偏置参数。这是因为偏置参数的数量较少,且每个权重参数会指定两个变量之间的相互作用,而偏置只控制一个变量。因此,不对偏置进行正则化不会显著影响方差。如果对偏置进行正则化,可能导致明显的欠拟合。

上式中的参数θ包含了权重和偏置,但只需对权重进行正则化。因此,L1正则化和L2正则化可以改写成如下形式:

L1正则化和L2正则化

正则化的影响

直观理解

为了帮助大家直观地理解正则化的效果,我们可以通过绘图来观察L1和L2正则化的效果。

正则化实际上是在原始目标函数基础上增加了一个参数惩罚项,目的是避免网络参数过大导致模型过拟合。因此,我们可以将正则化后的目标函数理解为在最小化原始目标函数的基础上增加了参数约束条件,约束条件需要小于某个常数C:

带约束的目的函数

L1正则化

我们将L1正则化的效果等效于寻找原始目标函数的最小值以及权重参数的约束函数。为了便于作图,我们只考虑二维情况:

二维的L1正则化

根据以上两个公式,我们可以绘制出线性规划图:

L1正则化

图中的蓝色椭圆代表原始目标函数的等高线,红色矩形代表权重的约束函数,红色箭头表示约束函数的法向量,蓝色箭头表示原始目标函数在该点的梯度方向(等高线的梯度方向与其法向量方向一致)。

由于约束函数的限制,权重只能在红色矩形的边上移动来寻找最佳的权重。当权重处于图中的位置时,将原始目标函数的梯度分解为沿约束函数的切线方向(即矩形的边)和法线方向。为了使原始目标函数取得最小值,此时需要沿着梯度在约束函数的切线方向移动。当权重移动到ω′时,可以发现为了使原始目标函数取得最小值应该沿着右上方移动,所以最终最优的权重应位于矩形的顶点位置。

通过观察可以发现,此时权重在坐标轴上的取值为0,最优点会落在某些轴上,导致部分权重为0。这就是L1正则化会使部分权重参数稀疏的原因。

L2正则化

同样,我们按照分析L1正则化的方法进行分析:

二维的L2正则化

L2正则化

图中的蓝色椭圆代表原始目标函数的等高线,红色圆代表权重的约束函数,其半径为√C。蓝色箭头表示原始目标函数在该点的梯度方向,红色箭头表示约束函数在该点的法向量,绿色箭头表示约束函数在该点的切线方向。

按照上述思路,我们将梯度按切线方向和法线方向分解,为了使原始目标函数取得最小值,我们需要沿切线方向移动权重。当移动到ω∗时,梯度方向与切线方向垂直时梯度沿切线方向的分量为0,此时原始目标函数取得最小值,所以ω∗为最优点。

通过观察上图可以发现,此时权重在坐标轴上的取值接近于0。由于最优点接近某些轴,导致部分权重取值接近于0,这就是L2正则化会使部分权重趋于0的原因。

公式推导

L2正则化

L2正则化也称为权重衰减或岭回归,在神经网络中经常使用,因为它会使部分权重向零点接近(使部分权重取值趋于0)。为了更好地观察L2正则化的影响,我们观察一下在添加惩罚项之后,权重参数是如何更新的:

带L2正则化目的函数的梯度

使用单步梯度下降更新权重,更新公式如下:

L2正则化单步权重更新过程

上式中的ϵ表示学习率,α表示权重衰减系数,这两个参数通常都小于1。通过单步权重的梯度更新公式可以发现,每次更新权重之前都需要乘以一个小于1的系数,相当于每次更新权重时都对它进行了衰减。在经过多次权重更新之后,权重的系数会接近于0,最终导致权重也接近0。假设权重的系数为0.9,经过100次权重的迭代更新,最终权重系数会变为0.9^100≈2.7*10^-5(注:这里没有考虑梯度的大小,只是简单表明这种趋势)。

接下来我们推导整个训练过程中权重的更新过程。为了简化分析,假设ω∗为J(ω)取得最小值时的权重向量。根据泰勒公式:

泰勒公式

假设J(ω)二阶可导,我们对其进行二次近似的泰勒展开,则有:

原目的函数的泰勒展开

为了让J^(ω)取得最小值,我们令其导数为0,由于J(ω∗)为常数,所以它的导数为0,我们直接省略:

编辑器不支持部分公式就用图片代替了

上式中的I表示单位矩阵。通过上式不难发现,当正则化的惩罚项系数α为0时,此时ω˜的最优解就等于ω∗。接下来我们讨论当惩罚项系数不为0的情况。由于H是J在ω∗处的Hessian矩阵,所以H是一个对称矩阵,我们可以对其特征分解,可得H=QΛQT(后面是Q的转置),其中Λ为对角矩阵,Q为一组特征向量的标准正交基,代入上式可得:

L2正则化权重最优解推导

通过上述公式可以发现,L2正则化的效果就是沿着H矩阵特征向量所定义的轴缩放未正则化J(ω)的解ω∗。由于I是单位矩阵,我们可以将缩放的系数改成这种形式:

L2正则化权重最优解推导

其中λi指的是矩阵H的特征向量每个轴值的大小,即特征分解之后特征值的大小。通过修正后的衰减系数不难发现,当特征值λi≫α时,此时α的影响可以忽略不计,正则化的缩放系数会趋于1,正则化基本没有影响。当特征值λi≪α时,可以将缩放系数改为:

L2正则化权重最优解推导

由于α≫λi,所以α/λi≫1,所以缩放系数λi/α≪1,缩放系数趋于0使得权重也会趋于0。

L1正则化

接下来我们推导添加了L2正则化之后对权重的影响。通过最后推导得到的公式可以解释为什么L2正则化会使权重趋于0。接下来,我们以相似的方式推导L1正则化对于权重的影响:

L1正则化

上式中的sign函数为符号函数,函数图像如下:

符号函数(sign)

符号函数输入值x1时输入值恒等于1,常用于表示阶跃函数。

我们将J(ω;X,y)用二阶的泰勒展开式来代替,可以将L1正则化后的代价函数转换为如下方式:

L1正则化后的代价函数

接下来我们看看如何求解ωi。上式中的J(ω∗)是常数,我们无需考虑,主要考虑求和式中的二次项式和绝对值式来使整个目标函数取得最小值。为了求得后两项和的最小值,我们对其求导并令求导后的结果等于0来求ωi:

求导后的结果

我们可以将上式中的ωi分为两种情况:第一种是ωi和ω∗同号,即sign(ωi)=sign(ωi∗),第二种是ωi和ω∗异号,即sign(ωi)≠sign(ω∗i)。我们先讨论第一种情况,为了帮助大家理解,我们可以看看下图:

符号函数示意图

通过上图可以发现,当ωi与ω∗异号时,无论哪种情况,为了使损失函数最小,其最优值都是ωi=0,此时可以保证代价函数的二次项式和绝对值式都取得最小值。

当ωi和ω∗同号时,可以将上式进行化简:

化简后的结果

因此,我们可以合并上式的结果得到最终的ωi的表达式为:

最终的ωi表达式

总结

我们通过画图和公式推导证明了L1正则化和L2正则化产生不同效果的原因。需要注意的是,它们的共同点在于衰减对于代价函数的值变化影响较小的权重,也就是特征值较小的权重。L1正则化会使这部分权重为0,而L2正则化会使它们趋于0。

    本文来源:图灵汇
责任编辑: :
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
正则了解真的
    下一篇