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

正则化解决过拟合问题正则化(Regularization)是机器学习中一种常用的技术,其主要目的是控制模型复杂度,减小过拟合。最基本的正则化方法是在原目标(代价)函数中添加惩罚项,对复杂度高的模型进行“惩罚”。数学表达式:式中  、 为训练样本和相应标签,  为权重系数向量;  为目标函数,  即为惩罚项,可理解为模型“规模”的某种度量;参数 控制控制正则化强弱。不同的  函数对权重…

大家好,又见面了,我是你们的朋友全栈君。

正则化解决过拟合问题

正则化(Regularization)是机器学习中一种常用的技术,其主要目的是控制模型复杂度,减小过拟合。
最基本的正则化方法是在原目标(代价)函数 中添加惩罚项,对复杂度高的模型进行“惩罚”。
数学表达式:
\tilde{J}\left( w;X,y \right) =J \left( w;X,y \right)+\alpha\Omega\left( w \right)
式中 X 、 y为训练样本和相应标签, w 为权重系数向量; J\left( \right) 为目标函数, \Omega\left( w \right) 即为惩罚项,可
理解为模型“规模”的某种度量;参数\alpha 控制控制正则化强弱。不同的 \Omega 函数对权重 w 的最优解有不同的
偏好,因而会产生不同的正则化效果。最常用的 \Omega 函数有两种,即 l_{1}范数和 l_{2} 范数,相应称之为 l_{1} 正则
化和 l_{2} 正则化。

l_{1}:\Omega\left( w \right)=\left| \left| w \right|\right|_{1}=\sum_{i}{\left| w_{i} \right|}
l_{2}:\Omega\left( w \right)=\left| \left| w \right|\right|_{2}^{2}=\sum_{i}{w_{i}^{2}}

一、 l_{1} 、 l_{2} 正则化来源推导

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

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

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

\min_{w }{J\left( w; X, y \right)}

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

\begin{gather} \min_{w }{J\left( w; X, y \right)}\\ s.t. \left| \left| w \right|\right|_{0}\leq C \end{gather}

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

\begin{gather} \min_{w }{J\left( w; X, y \right)}\\ s.t. \left| \left| w \right|\right|_{1}\leq C \end{gather} 或 \begin{gather} \min_{w }{J\left( w; X, y \right)}\\ s.t. \left| \left| w \right|\right|_{2}\leq C \end{gather}

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

L\left( w,\alpha \right)=J \left( w;X,y \right)+\alpha\left(\left| \left| w \right|\right|_{1}-C\right) 或

L\left( w,\alpha \right)=J \left( w;X,y \right)+\alpha\left( \left| \left| w \right|\right|_{2}^{2} - C \right)

其中 \alpha 的最优解为 \alpha^{\ast} ,则对拉格朗日函数求最小化等价于:

\min_{w }J \left( w;X,y \right)+\alpha^{\ast} \left| \left| w \right|\right|_{1} 或

\min_{w }J \left( w;X,y \right)+\alpha^{\ast} \left| \left| w \right|\right|_{2}^{2}

可以看出,上式与 \min_{w }\tilde{J}\left( w;X,y \right) 等价。

故此,我们得到对 l_{1} 、 l_{2} 正则化的第一种理解:

  • l_{1} 正则化等价于在原优化目标函数中增加约束条件 \left| \left| w \right|\right|_{1}\leq C
  • l_{2} 正则化等价于在原优化目标函数中增加约束条件 \left| \left| w \right|\right|_{2}^{2}\leq C

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

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

l\left( w \right) =\text{log}\left[ P\left( y|X;w \right) \right]=\text{log}\left[ \prod_{i}P\left( y^{i}|x^{i};w \right) \right]

通过假设 y^{i} 的不同概率分布,即可得到不同的模型。例如若假设 y^{i}\sim N\left( w^{T}x^{i}, \sigma^{2} \right) 的高斯分布,则有:

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

式中 C 为常数项,由于常数项和系数项不影响 \text{max}\space l\left( w \right) 的解,因而可令 J \left( w;X,y \right)=- l\left( w \right) 即可得到
线性回归的代价函数。

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

P\left( w|X,y \right) =\frac{P\left( w,X,y \right)}{P\left( X,y \right)} =\frac{P\left( X,y|w \right)P\left( w \right)}{P\left( X,y \right)} \propto {P\left( y|X,w \right)P\left( w \right)}

同样取对数有:

\text{MAP}=\text{log}{P\left( y|X,w \right)P\left( w \right)}=\text{log}{P\left( y|X,w \right)}+\text{log}P\left( w \right)

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

若假设 w_{j} 的先验分布为0均值的高斯分布,即 w_{j}\sim N\left( 0, \sigma^{2} \right) ,则有:

\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'

可以看到,在高斯分布下 \text{log}P\left( w \right) 的效果等价于在代价函数中增加 l_{2} 正则项。

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

P\left( w_{j} \right)=\frac{1}{\sqrt{2a}}e^{\frac{-\left| w_{j}\right|}{a}}

则有:

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

可以看到,在拉普拉斯分布下 \text{log}P\left( w \right) 的效果等价于在代价函数中增加 l_{1} 正则项。

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

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

二、 l_{1} 、 l_{2} 正则化效果分析

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

1、直观理解

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

\begin{gather} \min_{w }{J\left( w; X, y \right)}\\ s.t. \left| \left| w \right|\right|_{2}\leq C \end{gather}

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

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

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

对于 l_{1} 正则化:

\begin{gather} \min_{w }{J\left( w; X, y \right)}\\ s.t. \left| \left| w \right|\right|_{1}\leq C \end{gather}

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

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

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

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

2、理论分析

假设原目标函数 J\left( w \right) 的最优解为 w^{*} ,并假设其为二阶可导,将 J\left( w \right) 在 w^{*} 处进行二阶泰勒展开有:

\hat{J} \left( w \right)=J\left( w^{*} \right)+\frac{1}{2}\left( w-w^{*} \right)^{T}H\left( w-w^{*} \right)

式中 H 为 J\left( w \right) 在 w^{*} 处的Hessian矩阵,注意 w^{*} 为 J\left( w \right) 的最优解,其一阶导数为0,因而式中无一阶
导数项。 \hat{J} \left( w \right) 取得最小值时有:

\nabla _{w} \hat{J}\left( w \right)=H\left( w-w^{*} \right)=0

由于 l_{2} 正则化的目标函数为在 J\left( w \right) 中添加 \Omega\left( w \right)=\frac{1}{2}\alpha \left| \left| w \right|\right|_{2}^{2}=\frac{1}{2}\alpha w^{T}w ,因而有:

\nabla _{w} \tilde{J}\left( w \right)=\nabla _{w} \hat{J}\left( w \right)+ \nabla _{w}\Omega\left( w \right)=H\left( w-w^{*} \right)+\alpha w

设其最优解为 \tilde{w} ,则有:

H\left( \tilde w-w^{*} \right)+\alpha \tilde w=0

\tilde w=\left( H+\alpha I \right)^{-1}H w^{*}

由于 H 是对称矩阵,可对其作特征值分解,即 H=Q\Lambda Q^{T} ,其中 Q 为正交矩阵,且每一列为 H 的特征
向量,代入上式有:

\tilde w=Q\left( \Lambda+\alpha I \right)^{-1} \Lambda Q^{T} w^{*}

\Lambda 为对角矩阵,且对角线元素为 H 的特征值 \lambda_{j} 。

w^{*} 可在 Q 为正交基上作线性展开,由上式可知 \tilde w 为 w^{*} 在 H 的每个特征向量上的分量以 \frac{\lambda_{j}}{\lambda_{j}+\alpha} 比例放缩
得到。若 \lambda_{j}\gg\alpha ,则 w^{*}_{j} 受正则化的影响较小;若 \lambda_{j}\ll\alpha ,则 w^{*}_{j}受正则化的影响较大,将收缩到接近于
0的值。同时,若 w^{*}_{j}\ne0 ,则 \tilde w_{j}\ne0 ,因而 l_{2} 正则化不会产生稀疏性的效果。

对于 l_{1} 正则化,只需将 \Omega\left( w \right) 替换为 w 的 l_{1} 范数,同理可以得到:

\nabla _{w} \tilde{J}\left( w \right)=\nabla _{w} \hat{J}\left( w \right)+\nabla _{w} \Omega\left( w \right)=H\left( w-w^{*} \right)+\alpha \text{sign}\left( w \right)

其最优解满足:

H\left( \tilde w-w^{*} \right)+\alpha \text{sign}\left( \tilde w \right)=0

为了简化讨论,我们假设 H 为对角阵,即 H=\text{diag} \left[ H_{11}, H_{22},...,H_{nn}\right] , w 的不同分量
之间没有相关性,该假设可通过对输入特征进行预处理(例如使用PCA)得到,此时 \tilde w 的解为:

\tilde w_{j}=\text{sign} \space \left( w^{*}_{j} \right)\max \left\{ \left| w^{*}_{j} \right|-\frac{\alpha}{H_{jj}} , 0 \right\}

当 \left| w^{*}_{j} \right|\leq\frac{\alpha}{H_{jj}} 时,可知 \tilde w_{j}=0 ,因而 l_{1} 正则化会使最优解的某些元素为0,从而产生稀疏性; \tilde w_{j} 会在原有最优解上偏移一个常数值。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/128223.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • MySQL呕血汇总–从基础到毕业【收藏篇】

    MYSQL目录前言一、MYSQL基础1.安装2.数据库介绍2.1.什么是数据库?2.2.实体(类)和表关系2.3.常见关系型数据库3.MYSQL基础操作❤重点❤3.1.启动关闭3.2.DDL(数据定义语言,这些语句定义不同的数据段、数据库、表、列、索引等数据库对象。常用语句关键字主要包括create,drop,alter等)3.2.1.操作数据库3.2.2.操作表3.3.DML(数据操作语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用语句关键字主要包括insert,delete,upda

  • oracle表字段为汉字,依据拼音排序

    oracle表字段为汉字,依据拼音排序

  • 二维数组a[3][4]_树状数组的算法原理

    二维数组a[3][4]_树状数组的算法原理原题链接堆栈是一种经典的后进先出的线性结构,相关的操作主要有“入栈”(在堆栈顶插入一个元素)和“出栈”(将栈顶元素返回并从堆栈中删除)。本题要求你实现另一个附加的操作:“取中值”——即返回所有堆栈中元素键值的中值。给定 N 个元素,如果 N 是偶数,则中值定义为第 N/2 小元;若是奇数,则为第 (N+1)/2 小元。输入格式:输入的第一行是正整数 N(≤10​5​​ )。随后 N 行,每行给出一句指令,为以下 3 种之一:Push keyPopPeekMedian其中 key 是不超过

  • Linux下查看Tomcat版本信息[通俗易懂]

    一、为什么要查看tomcat版本信息1:客户或开发者要求2:网站迁移或环境复制3:漏洞查看或渗透测试二、如何查看tomcat版本信息1:使用curl命令收集网页信息,过滤出“ApacheTomcat”即可命令:curlTomcat_ip_addr:port|grep"ApacheTomcat"优点:最常用的方法,不需要进入后台即可查看,简单可行。风险…

  • python3.3使用tkinter实现猜数字游戏代码

    python3.3使用tkinter实现猜数字游戏代码发布时间:2014-06-18编辑:www.jbxue.com原文地址:http://www.jbxue.com/article/python/22152.htmlpython3.3使用tkint

  • Pytest(6)重复运行用例pytest-repeat「建议收藏」

    Pytest(6)重复运行用例pytest-repeat「建议收藏」前言平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来。自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号