1.机器学习中的L0、L1与L2范数到底是什么意思?

article/2025/9/22 8:42:01

一、L0范数与L1范数

L0范数是指向量中非0的元素的个数。如果我们用L0范数来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0。让参数W是稀疏的。

L1范数是指向量中各个元素绝对值之和,也叫“稀疏规则算子”(Lasso regularization)。

既然L0可以实现稀疏,为什么不用L0,而要用L1呢?一是因为L0范数很难优化求解(NP难问题),二是L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解。L1范数和L0范数可以实现稀疏,L1因具有比L0更好的优化求解特性而被广泛应用。

为什么要实现参数稀疏呢?

1)特征选择(Feature Selection)

一般来说,xi的大部分元素(也就是特征)都是和最终的输出yi没有关系或者不提供任何信息的,在最小化目标函数的时候考虑xi这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的信息反而会被考虑,从而干扰了对正确yi的预测。稀疏规则化算子的引入就是为了完成特征自动选择的光荣使命,它会学习地去掉这些没有信息的特征,也就是把这些特征对应的权重置为0。

2)可解释性(Interpretability)

模型更容易解释。如果最后学习到的w*就只有很少的非零元素,那么我们就有理由相信,这些对应的特征在分析上面提供的信息是巨大的,决策性的。

二、L2范数

L2范数“岭回归”(Ridge Regression)。改善机器学习里面一个非常重要的问题:过拟合。

欠拟合(underfitting,也称High-bias)、合适的拟合和过拟合(overfitting,也称High variance)三种情况。

L2范数是指向量各元素的平方和然后求平方根。我们让L2范数的规则项||W||2最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0,而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。参数越小,限制了多项式某些分量的影响,或者减少参数个数。通过L2范数,我们可以实现了对模型空间的限制,从而在一定程度上避免了过拟合。

L2范数的好处,一方面可以防止过拟合,提升模型的泛化能力。另外一方面,从优化计算的角度来看:L2范数有助于处理condition number不好的情况下矩阵求逆很困难的问题。condition number就是拿来衡量ill-condition系统(输入稍微改变下,输出就发生很大的改变)的可信度的。如果方阵A是非奇异的,那么A的conditionnumber定义为:

 

对condition number来个一句话总结:conditionnumber是一个矩阵(或者它所描述的线性系统)的稳定性或者敏感度的度量,如果一个矩阵的condition number在1附近,那么它就是well-conditioned的,如果远大于1,那么它就是ill-conditioned的,如果一个系统是ill-conditioned的,它的输出结果就不要太相信了。L2范数有助于处理condition number不好的情况下矩阵求逆很困难的问题。加上L2规则项,就变成了下面这种情况,就可以直接求逆了:

 

L2范数不但可以防止过拟合,还可以让我们的优化求解变得稳定和快速。

L1和L2的差别。

1)下降速度

L1和L2都是规则化的方式,我们将权值参数以L1或者L2的方式放到代价函数里面去。然后模型就会尝试去最小化这些权值参数。而这个最小化就像一个下坡的过程,L1和L2的差别就在于这个“坡”不同,L1就是按绝对值函数的“坡”下降的,而L2是按二次函数的“坡”下降。所以实际上在0附近,L1的下降速度比L2的下降速度要快。所以会非常快得降到0。

看导数一个是1一个是w便知, 在靠进零附近, L1以匀速下降到零, 而L2则完全停下来了. 这说明L1是将不重要的特征(或者说, 重要性不在一个数量级上)尽快剔除, L2则是把特征贡献尽量压缩最小但不至于为零. 两者一起作用, 就是把重要性在一个数量级(重要性最高的)的那些特征一起平等共事(通过不同的系数可以调节。比如:Elastic Net)。

2)模型空间的限制

将模型空间限制在w的一个L1-ball中。为了便于可视化,我们考虑两维的情况,在(w1, w2)平面上可以画出目标函数的等高线,而约束条件则成为平面上半径为C的一个norm ball。等高线与norm ball首次相交的地方就是最优解:

 

可以看到,L1-ball与L2-ball的不同就在于L1在和每个坐标轴相交的地方都有“角”出现,而目标函数的测地线除非位置摆得非常好,大部分时候都会在角的地方相交。注意到在角的位置就会产生稀疏性,例如图中的相交点就有w1=0,而更高维的时候(想象一下三维的L1-ball是什么样的?)除了角点以外,还有很多边的轮廓也是既有很大的概率成为第一次相交的地方,又会产生稀疏性。

相比之下,L2-ball就没有这样的性质,因为没有角,所以第一次相交的地方出现在具有稀疏性的位置的概率就变得非常小了。这就从直观上来解释了为什么L1-regularization能产生稀疏性,而L2-regularization不行的原因了。

因此,一句话总结就是:L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。

 

转自:作者:江州司马binbin
链接:https://www.jianshu.com/p/798a31fad527
來源:简书


http://chatgpt.dhexx.cn/article/5PnUkJPd.shtml

相关文章

L0,L1,L2正则,lasso,岭回归

L0正则: 我们要讨论的第一个规范是L0规范。根据定义,x的L0范数是 严格来说,L0范数实际上不是一个范数。它是基数函数,其定义形式为L0-norm,尽管许多人称其为范数。使用它有点棘手,因为其中存在零次幂和零…

自学网络安全的三个必经阶段(含路线图)

一、为什么选择网络安全? 这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地,网络安全行业地位、薪资随之水涨船高。 未来3-5年,是安全行业的黄金发展期,提前踏入…

网络安全学习指南:新手入门建议

💂 个人网站:【海拥】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言网络安全基础知识学…

网络安全学习路线-超详细

零基础小白,到就业!入门到入土的网安学习路线! 在各大平台搜的网安学习路线都太粗略了。。。。看不下去了! 建议的学习顺序: 一、网络安全学习普法(心里有个数,要进去坐几年!&#…

如何学习网络安全?(网络安全学习笔记)

概括来说,网络安全课程的主要内容包括: 安全基本知识 应用加密学 协议层安全 Windows安全(攻击与防御) Unix/Linux安全(攻击与防御) 防火墙技术 入侵监测系统 审计和日志分析 下面分别对每部分知识介绍相应…

2023网络安全学习路线 非常详细 推荐学习

关键词:网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线 分享2套零基础、进阶学习网络安全/渗透测试教程 第一套是Web安全学习笔记,共430页12个章节。 该笔记详细介绍了计算机网络协议、信息收集、常见漏洞、内网渗透、御用技术等等&…

网络安全-自学笔记

目录 相关网站推荐 WEB(应用)安全 学习路线 推荐 书籍 网站 在线靶场 基础 XSS攻击 CSRF漏洞 劫持攻击 点击劫持 SSRF漏洞 文件包含漏洞 文件上传漏洞 XXE漏洞 WebShell 解析安全 RCE漏洞 SQL注入漏洞 反序列化漏洞 条件竞争 通信…

Emmet插件用法指南

安装Emmet插件 Emmet只是文本编辑器一个插件,要想让他发挥应用的功能,就得将其安装到你喜欢的文本编辑器中。到目前为止,很多流行的文本编辑器都支持Emmet插件,也就是说很多流行的文本编辑器都可以安装这款插件。 点击下面的链接&…

HBuilder X的安装及配置Emmet插件和使用部分快捷方式

安装HBuilder X 软件安装1 配置Emmet插件 打开软件选择自己喜欢的主题然后进入主界面按下 Alt T或者点击工具 之后按下 p或者点击安装插件 选择第一个插件emmet 点击安装即可 注意: 按装完之后要重启HBuilder X ,要不然自己使用Emmet功能快捷键按下Tab无法触发 …

Emmet插件的使用教程

/**本文为转载 很多快捷键真的都很相似,这些语法都是很相似了,今天遇到一个比较不错的教程,收藏一下。 Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生。它使用仿CSS选择器的语…

Emmet插件详解

http://www.ithao123.cn/content-10512551.html (webstorm的css编写插件)Emmet:HTML/CSS代码快速编写神器 [摘要:Emmet的前身是默默无闻的Zen coding,若是您处置Web前端开辟的话,对该插件肯定没有会目生。它…

Sublime text3 emmet插件安装

Emmet插件作为Sublime text3 的热门插件,首先解决如何添加安装才是使用的基础 在添加Emmet插件的时候,我也遇到了若干问题,只能卸载Sublime text3再安装,终于安装成功,现分享下经验(2017/9/20) …

Emmet 插件使用教程

1)使用 Emmet 生成 HTML 的语法详解 生成 HTML 文档初始结构 HTML 文档的初始结构,就是包括 doctype、html、head、body 以及 meta 等内容。你只需要输入一个 “!” 就可以生成一个 HTML5 的标准文档初始结构,你没有看错,输入一个…

Emmet插件的常用语法

本人使用的代码编辑工具是SublimeText,Emmet是一个代码的缩写插件,使用代码缩写快速完成代码编写,前提条件需要安装emmet插件,如下图,打开SublimeText 使用快捷键 Ctrl Shift P,显示 Package Control功能…

Intellij中Emmet插件的使用技巧

Emmet简述 Emmet (前身为 Zen Coding) 是一个能大幅度提高前端开发效率的一个工具. 在前端开发的过程中,一大部分的工作是写 HTML、CSS 代码。特别是手动编写 HTML 代码的时候,效率会特别低下,因为需要敲打很多尖括号,而且很多标签…

【精品】Intellij中Emmet插件的使用技巧

Emmet简述 Emmet (前身为 Zen Coding) 是一个能大幅度提高前端开发效率的一个工具. 在前端开发的过程中,一大部分的工作是写 HTML、CSS 代码。特别是手动编写 HTML 代码的时候,效率会特别低下,因为需要敲打很多尖括号,而且很多标…

sublime Emmet插件使用方法总结

Emmet(前身是Zen Coding),它可以极大的提高代码编写的效率,它提供了一种非常简练的语法规则,然后立刻生成对应的 HTML 结构或者 CSS 代码,同时还有多种实用的功能帮助进行前端开发,例如快速生成html5头部就靠它了。。 一、安装em…

为Notepad++安装Emmet插件

文章目录 为Notepad安装Emmet安装32-bit64-bit 完毕 为Notepad安装Emmet 安装 Notepad下载链接(GitHub) Npp的默认安装目录 32位:C:\Program Files (x86)\Notepad 64位:C:\Program Files\Notepad 32-bit Emmet插件下载链接 64-bit 由于官方插件多年没更新,只支持32位,只能…

eclipse快速下载Emmet插件

所需链接: http://download.emmet.io/eclipse/updates/ eclipse 中的 help -> install new software… 注意:如果链接放进去,发现是打叉状态那么 回车一下就会发现 出现Emmet 选择,然后进行下一步安装 如果安装成功会在菜单…

Sublime Text3安装Emmet插件

使用场景: 使用Sublime Text3进行前端开发,使用Emmet可以有效提高编码效率! 安装步骤: 1、菜单栏设置(或者首选项)->package control,或者用快捷键 shiftctrlp; 2、选择并点击…