[Python嗯~机器学习]---L1正则化和L2正则化

正则化解决过拟合问题

正则化(Regularization)是机器学习中一种常用的技术,其主要目的是控制模型复杂度,减小过拟合。
最基本的正则化方法是在原目标(代价)函数 中添加惩罚项,对复杂度高的模型进行“惩罚”。
数学表达式:

式中  、 为训练样本和相应标签,  为权重系数向量;  为目标函数,  即为惩罚项,可
理解为模型“规模”的某种度量;参数 控制控制正则化强弱。不同的  函数对权重  的最优解有不同的
偏好,因而会产生不同的正则化效果。最常用的  函数有两种,即 范数和  范数,相应称之为  正则
化和  正则化。


一、  、  正则化来源推导

可从带约束条件的优化求解和最大后验概率两种思路来推导  、  正则化,下面将予以详细分析。

1、正则化理解之基于约束条件的最优化

对于模型权重系数  求解是通过最小化目标函数实现的,即求解:

我们知道,模型的复杂度可用 VC维 来衡量。通常情况下,模型 VC维 与系数  的个数成线性关系:
即  数量越多,VC维越大,模型越复杂。因此,为了限制模型的复杂度,很自然的思路是减少系数  
的个数,即让  向量中一些元素为 0 或者说限制  中非零元素的个数。为此,我们可在原优化问题中加
入一个约束条件:

 范数表示向量中非零元素的个数。但由于该问题是一个NP问题,不易求解,为此我们需要稍微“放松”
一下约束条件。为了达到近似效果,我们不严格要求某些权重  为0,而是要求权重  应接近于0,即尽量小。
从而可用  、  范数来近似  范数,即:

 或 

使用  范数时,为方便后续处理,可对  进行平方,此时只需调整  的取值即可。利用拉格朗日算子法,
我们可将上述带约束条件的最优化问题转换为不带约束项的优化问题,构造拉格朗日函数:

 或

其中  ,我们假设  的最优解为  ,则对拉格朗日函数求最小化等价于:

 或

可以看出,上式与  等价。

故此,我们得到对  、  正则化的第一种理解:

  •  正则化等价于在原优化目标函数中增加约束条件 
  •  正则化等价于在原优化目标函数中增加约束条件 

2、正则化理解之最大后验概率估计

在最大似然估计中,是假设权重  是未知的参数,从而求得对数似然函数:

通过假设  的不同概率分布,即可得到不同的模型。例如若假设  的高斯分布,则有:

l\left( w \right) =\text{log}\left[ \prod_{i}\frac{1}{\sqrt{2\pi}\sigma} e^{-\frac{\left( y^{i}-w^{T}x^{i} \right)^{2}}{2\sigma^{2}}} \right]=-\frac{1}{2\sigma^{2}}\sum_{i}{\left( y^{i}-w^{T}x^{i} \right)^{2}}+C

式中  为常数项,由于常数项和系数项不影响  的解,因而可令  即可得到
线性回归的代价函数。

在最大后验概率估计中,则将权重  看作随机变量,也具有某种分布,从而有:

同样取对数有:

可以看出后验概率函数为在似然函数的基础上增加了一项  。  的意义是对权重系数  的概率
分布的先验假设,在收集到训练样本  后,则可根据  在  下的后验概率对  进行修正,从而
做出对  更好地估计。

若假设  的先验分布为0均值的高斯分布,即  ,则有:

\text{log}P\left( w \right)=\text{log}\prod_{j}P\left( w_{j} \right)=\text{log}\prod_{j}\left[ \frac{1}{\sqrt{2\pi}\sigma} e^{-\frac{\left( w_{j} \right)^{2}}{2\sigma^{2}}} \right]=-\frac{1}{2\sigma^{2}}\sum_{j}{w_{j}^{2}}+C'

可以看到,在高斯分布下  的效果等价于在代价函数中增加  正则项。

若假设  服从均值为0、参数为  的拉普拉斯分布,即:

则有:

可以看到,在拉普拉斯分布下  的效果等价于在代价函数中增加  正则项。

故此,我们得到对于  、  正则化的第二种理解:

  •  正则化可通过假设权重  的先验分布为拉普拉斯分布,由最大后验概率估计导出;
  •  正则化可通过假设权重  的先验分布为高斯分布,由最大后验概率估计导出。

二、  、  正则化效果分析

本文将从直观分析和理论推导两个角度来说明  、  正则化的效果。

1、直观理解

考虑带约束条件的优化解释,对  正则化为:

该问题的求解示意图如下所示:

[Python嗯~机器学习]---L1正则化和L2正则化_第1张图片

图中椭圆为原目标函数  的一条等高线,圆为半径  的 范数球。由于约束条件的限制,  必须
位于  范数球内。考虑边界上的一点  ,图中蓝色箭头为  在该处的梯度方向  ,红色箭头
为  范数球在该处的法线方向。由于  不能离开边界(否则违反约束条件),因而在使用梯度下降法更新 
 时,只能朝  在 范数球上  处的切线方向更新,即图中绿色箭头的方向。如此  将沿着边界移
动,当  与范数球上  处的法线平行时,此时  在切线方向的分量为0,  将无法继续移动,
从而达到最优解 (图中红色点所示)。

对于  正则化:

同理,其求解示意图如下所示:

[Python嗯~机器学习]---L1正则化和L2正则化_第2张图片

其主要差别在于  、  范数球的形状差异。由于此时每条边界上  的切线和法线方向保持不变,在图中 
 将一直朝着  在切线方向的分量沿着边界向左上移动。当  跨过顶点到达  时,  在
切线方向的分量变为右上方,因而  将朝右上方移动。最终,  将稳定在顶点处,达到最优解  。此时,
可以看到  ,这也就是采用  范数会使产生稀疏性的原因。

以上分析虽是基于二维的情况,但不难将其推广到多维情况,其主要目的是为了直观地说明  、  正则化最
优解的差异,以及  范数为什么为产生稀疏性。

2、理论分析

假设原目标函数  的最优解为  ,并假设其为二阶可导,将  在  处进行二阶泰勒展开有:

式中  为  在  处的Hessian矩阵,注意  为  的最优解,其一阶导数为0,因而式中无一阶
导数项。  取得最小值时有:

由于  正则化的目标函数为在  中添加  ,因而有:

设其最优解为  ,则有:

由于  是对称矩阵,可对其作特征值分解,即  ,其中  为正交矩阵,且每一列为  的特征
向量,代入上式有:

 为对角矩阵,且对角线元素为  的特征值  。

 可在  为正交基上作线性展开,由上式可知  为  在  的每个特征向量上的分量以  比例放缩
得到。若  ,则  受正则化的影响较小;若  ,则 受正则化的影响较大,将收缩到接近于
0的值。同时,若  ,则  ,因而  正则化不会产生稀疏性的效果。

对于  正则化,只需将  替换为  的  范数,同理可以得到:

其最优解满足:

为了简化讨论,我们假设  为对角阵,即  , 。此时  的不同分量
之间没有相关性,该假设可通过对输入特征进行预处理(例如使用PCA)得到,此时  的解为:

当  时,可知  ,因而  正则化会使最优解的某些元素为0,从而产生稀疏性;  时,
 会在原有最优解上偏移一个常数值。

综上,  正则化的效果是对原最优解的每个元素进行不同比例的放缩;  正则化则会使原最优解的元素产生不同量的
偏移,并使某些元素为0,从而产生稀疏性。

你可能感兴趣的:(10分钟一篇机器学习,菜鸟鹏鹏哥哥的机器学习)