前言
说到正则化大家应该都不生疏,这个在机器学习和深度学习中都是非常常见的,常用的正则化有L1正则化和L2正则化。提到正则化大家就会想到是它会将权重添加到损失函数计算中来降低模型过拟合的程度。了解更多一点的同窗还会说,L1正则化会让模型的权重参数稀疏化(部分权重的值为0),L2正则化会让模型的权重有趋于0的偏好(部分权重趋于0)。
不知道大家有没有想过为什么L1正则化会让部分权重的值为0?为什么L2正则化会让权重会有倾向于0?为什么正则化可以防止过拟合?正则化是终究是怎样来的? 带着这些成绩,我们来看这片文章,会协助大家逐一解答。
正则化的由来
在引见正则化之前,我们先来看一张图
在上图中我们绘制了三条不同的曲线y1、y2、y3,从曲线函数值的变化不好看出,y1的函数值变化最大,y2和y3的函数值变化相对来说要陡峭一些。经过函数的表达式可以看出,y2相对于y1来说自变量的系数值变小了,y3相对y1来说自变量少了一个,我们可以了解为少的那个自变量的系数为0。
通常假如函数的取值变化的幅度更大,我们会以为函数更复杂,函数的方差更大。所以,下面的三个函数中,函数y1的复杂度最高。经过函数图像可以发现,降低自变量的系数值,或者减少函数自变量的个数(自变量的系数为0)是可以降低函数复杂度的。
在构建模型之前,我们是不知道数据的分布,假如模型过于简单就会导致欠拟合,假如模型过于复杂就会过拟合。通常我们为了模型可以更好的拟合数据都是使得模型处于过拟合,为了降低模型的过拟合就需求使得模型部分权重为0或者降低模型的权重,所以我们会为损失函数添加一个惩罚项,数学表达式如下
上式中的J(θ;X,y)表示原目的函数(没有添加正则化),Ω(θ)表示模型参数的惩罚项,惩罚项系数α∈[0,∞),α越大表示正则化惩罚越大。
需求留意:我们在对模型的参数做惩罚的时分,其实只是添加了模型的权重参数并不包括偏置参数,由于模型的偏置参数数量相对于权重参数数量来说要少的多,而且每个权重参数会指定两个变量如何互相作用,而偏置只是控制一个单一的变量,所以我们不对偏置做正则化也不会导致太大的方差。而且,假如对偏置停止正则化能够会导致分明的欠拟合。
上式中的参数θ包含了权重和偏置,而我们只需求对权重做正则化。所以,L1正则化和L2正则化可以改成如下表达式
正则化的影响
在正则化的由来中,我们直观的引见了为什么需求加入正则化?接上去我们来引见一下为什么L1正则化会使得模型的部分参数为0,L2正则化会使得模型的参数趋于0。为了更好协助大家了解和证明,首先经过图解来停止解释,然后再经过公式推导证明
为了协助大家从直观上了解正则化的效果,接上去我们将经过画图来观察L1正则化和L2正则化的效果
后面我们引见了正则化其实就是在原目的函数的基础上多添加了一项参数的惩罚项,目的就是为了不让网络的参数过大而导致模型过拟合,所以我们其实可以将正则化后的目的函数了解为在最小化原目的函数的基础上多添加了一个参数的约束函数,对于约束函数的要求就是它需求小于某个常数C
我们将L1正则化效果等价于求原目的函数的最小值和对权重参数的约束函数,这里为了便于作图我们只思索二维状况
根据上两个式子,我们可以绘制出线性规划图如下
上图中的蓝色椭圆表示的是原目的函数的等高线,红色矩形表示的是权重的约束函数,图中的红色箭头表示的是约束函数的法向量,其中蓝色箭头表示的是原目的函数在该点的梯度方向(等高线的梯度方向与它的法向量方向分歧)
由于约束函数的限制导致ω只能在红色矩形的边上停止移动来寻觅最佳的ω∗。当ω处于上图中的地位时,将原目的函数的梯度分解为沿约束函数的切线方向(即矩形的边)和法线方向,为了使得原目的函数获得最小值此时需求沿着梯度在约束函数的切线方向(左上方)移动。当ω移动到ω′时,经过分解原代价函数的梯度可以发现,为了使得获得原代价函数的最小值应该沿着右上方移动,所以最终最优的ω∗应该为矩形的顶点地位。
经过观察可以发现此时ω∗在坐标轴ω1方向的取值为0,最优点会落在某些轴上导致部分权重为0,这也就是为什么L1正则化会使得部分权重参数稀疏的缘由。
异样,我们按照分析L1正则化的思绪停止分析
上图中蓝色椭圆表示是原目的函数的等高线,红色圆表示的是权重的约束函数它的半径是√C,其中蓝色箭头表示的是原目的函数在该点的梯度方向,红色箭头表示的是约束函数在该点的法向量,绿色箭头表示的是约束函数在该点的切线方向。
还是按照下面的思想我们将梯度按切线方向和法线方向停止分解,为了使得原代价函数获得最小值,我们需求将ω按切线方向停止移动,当移动到ω∗时,梯度方向与切线方向垂直时梯度沿切线方向的分量为0,此时原代价函数获得最小值,所以ω∗为最优点。
经过观察上图可以发现,此时ω1的取值接近于0,由于最优点会接近某些轴,导致部分权重取值接近于0,这也就是为什么L2正则化会使得部分权重趋于0的缘由。
2.公式推导证明
L2正则化也被称为权重衰减或岭回归,在神经网络中也被常常用到,由于它会使得部分权重向零点接近(使得部分权重的取值趋于0)。为了更好的观察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正则化的效果就是沿着H矩阵特征向量所定义的轴缩放未正则化J(ω)的解ω∗。由于I是单位矩阵,我们可以将缩放的系数改成这种方式
,其中λi指的是矩阵H的特征向量每个轴值的大小,也就是特征分解之后特征值的大小。
经过修正后的衰减系数不难发现,当特征值λi≫α时,此时α的影响可以忽略不计,正则化的缩放系数会趋于1,正则化基本没有影响。当特征值λi≪α时,可以将缩放系数改为
,由于α≫λi所以α/λi≫1,所以缩放系数λi/α≪1,缩放系数趋于0使得权重也会趋于0。
下面我们推导了添加了L2正则化之后对权重的影响,经过最后推导得到式子可以解释为什么l2正则化会让权重趋于0。接上去,我们以相似的方式来推导L1正则化对于权重的影响
上式中的sign函数为符号函数,函数图像如下
当函数输入值x1时输入值恒等于1,sign函数常常被用来表示阶跃函数
我们将J(ω;X,y)运用二阶的泰勒展开式来代替,可以将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。 |