前言

说到正则化大家应该都不陌生,这个在机器学习和深度学习中都是非常常见的,常用的正则化有L1正则化L2正则化。提到正则化大家就会想到是它会将权重添加到损失函数计算中来降低模型过拟合的程度。了解更多一点的同学还会说,L1正则化会让模型的权重参数稀疏化(部分权重的值为0)L2正则化会让模型的权重有趋于0的偏好(部分权重趋于0)

不知道大家有没有想过为什么L1正则化会让部分权重的值为0?为什么L2正则化会让权重会有偏向于0?为什么正则化可以防止过拟合?正则化是究竟是怎么来的? 带着这些问题,我们来看这片文章,会帮助大家一一解答。

正则化的由来

在介绍正则化之前,我们先来看一张图

正则化好处(你真的理解正则化了吗)(1)

正则化效果图


在上图中我们绘制了三条不同的曲线y1、y2、y3​,从曲线函数值的变化不难看出,y1​的函数值变化最大y2​和y3​的函数值变化相对来说要平缓一些。通过函数的表达式可以看出,y2​相对于y1​来说自变量的系数值变小了,y3​相对y1来说自变量少了一个,我们可以理解为少的那个自变量的系数为0

通常如果函数的取值变化的幅度更大,我们会认为函数更复杂函数的方差更大。所以,上面的三个函数中,函数y1​的复杂度最高。通过函数图像可以发现,降低自变量的系数值,或者减少函数自变量的个数(自变量的系数为0)是可以降低函数复杂度的

在构建模型之前,我们是不知道数据的分布,如果模型过于简单就会导致欠拟合,如果模型过于复杂就会过拟合。通常我们为了模型能够更好的拟合数据都是使得模型处于过拟合为了降低模型的过拟合就需要使得模型部分权重为0或者降低模型的权重,所以我们会为损失函数添加一个惩罚项,数学表达式如下


正则化好处(你真的理解正则化了吗)(2)

带正则化的目标函数


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

需要注意:我们在对模型的参数做惩罚的时候,其实只是添加了模型的权重参数并不包括偏置参数,因为模型的偏置参数数量相对于权重参数数量来说要少的多,而且每个权重参数会指定两个变量如何相互作用,而偏置只是控制一个单一的变量,所以我们不对偏置做正则化也不会导致太大的方差。而且,如果对偏置进行正则化可能会导致明显的欠拟合。

上式中的参数θ包含了权重和偏置,而我们只需要对权重做正则化。所以,L1正则化和L2正则化可以改成如下表达式

正则化好处(你真的理解正则化了吗)(3)

L1正则化和L2正则化


正则化的影响

在正则化的由来中,我们直观的介绍了为什么需要加入正则化?接下来我们来介绍一下为什么L1正则化会使得模型的部分参数为0,L2正则化会使得模型的参数趋于0。为了更好帮助大家理解和证明,首先通过图解来进行解释,然后再通过公式推导证明

  1. 直观理解

为了帮助大家从直观上理解正则化的效果,接下来我们将通过画图来观察L1​正则化和L2​正则化的效果
前面我们介绍了正则化其实就是在原目标函数的基础上多增加了一项参数的惩罚项,目的就是为了不让网络的参数过大而导致模型过拟合,所以我们其实可以将正则化后的目标函数理解为在最小化原目标函数的基础上多增加了一个参数的约束函数,对于约束函数的要求就是它需要小于某个常数C


正则化好处(你真的理解正则化了吗)(4)

带约束的目标函数

  • L1正则化

我们将L1正则化效果等价于求原目标函数的最小值和对权重参数的约束函数,这里为了便于作图我们只考虑二维情况


正则化好处(你真的理解正则化了吗)(5)

二维的L1正则化

根据上两个式子,我们可以绘制出线性规划图如下

正则化好处(你真的理解正则化了吗)(6)

L1正则化


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

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

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

  • L2正则化

同样,我们按照分析L1正则化的思路进行分析


正则化好处(你真的理解正则化了吗)(7)

二维的L2正则化


正则化好处(你真的理解正则化了吗)(8)

L2正则化


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

还是按照上面的思想我们将梯度按切线方向和法线方向进行分解,为了使得原代价函数取得最小值,我们需要将ω按切线方向进行移动,当移动到ω∗时,梯度方向与切线方向垂直时梯度沿切线方向的分量为0,此时原代价函数取得最小值,所以ω∗为最优点

通过观察上图可以发现,此时ω1的取值接近于0,因为最优点会靠近某些轴,导致部分权重取值接近于0,这也就是为什么L2​正则化会使得部分权重趋于0的原因

2.公式推导证明

  • L2​正则化

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

正则化好处(你真的理解正则化了吗)(9)

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

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

正则化好处(你真的理解正则化了吗)(10)

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

上式中的,ϵ指的是学习率α指的是权重衰减系数,这两个参数通常都是小于1的。
通过单步的权重的梯度更新公式可以发现,权重每次在更新之前都需要乘以一个小于1的系数,相当于每次更新权重的时候都对它做了衰减,在经过多次权重更新之后会,权重的系数会接近于0,最终会导致权重也接近0,假设权重的系数为0.9,经过100次权重的迭代更新,最终权重系数会变为0.9^100≈2.7∗10−5(注:这里没有考虑梯度的大小,只是简单表明这种趋势)。
上面只是一个单步的权重更新过程,接下来我们推导一下在整个训练过程中,权重的更新过程,为了简化分析我们假设ω∗为J(ω)取得最小值时的权重向量,根据泰勒公式


正则化好处(你真的理解正则化了吗)(11)

泰勒公式

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


正则化好处(你真的理解正则化了吗)(12)

原目标函数的泰勒展开

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


正则化好处(你真的理解正则化了吗)(13)

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

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


正则化好处(你真的理解正则化了吗)(14)

L2正则化权重最优解推导

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

正则化好处(你真的理解正则化了吗)(15)

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

正则化好处(你真的理解正则化了吗)(16)

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

  • L1​正则化

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

正则化好处(你真的理解正则化了吗)(17)

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

正则化好处(你真的理解正则化了吗)(18)

符号函数(sign)


函数输入值x<0时输出值恒等于-1输入值为0时输出值也等于0输入值x>1时输出值恒等于1,sign函数经常被用来表示阶跃函数

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

正则化好处(你真的理解正则化了吗)(19)

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

正则化好处(你真的理解正则化了吗)(20)

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

正则化好处(你真的理解正则化了吗)(21)

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

正则化好处(你真的理解正则化了吗)(22)

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

正则化好处(你真的理解正则化了吗)(23)

ωi解析解

总结

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

,