机器学习14:稀疏性-Sparsity

article/2025/10/26 7:05:57

现实世界中,问题的特征的数量往往是很大的,而其中起决定性作用的往往是很小的一部分,稀疏规则化算子的引入会学习去掉这些没有信息的特征,也就是把这些特征对应的权重置为 0。

1.稀疏性正则化:L₁ 正则化

稀疏向量通常包含许多维度,而创建 特征交叉 则会产生更多维度。考虑到如此高维的特征向量,模型可能会变得巨大且需要大量的 RAM 资源。

在高维稀疏向量中,最好将权重精确地下降到 0。权重恰好为 0 本质上意味着从模型中删除相应的特征,即该特征不再作为模型的输入。此外,将特征归零可节省 RAM,并减少模型中的噪声。

例如,考虑一个不仅涵盖加利福尼亚州而且涵盖整个全球的住房数据集。以分(角分)级别(每度 60 分)存储全球纬度,在稀疏编码中提供大约 10,000 个维度;分级别的全球经度给出了大约 20,000 个维度。这两个特征的特征交叉将产生大约 200,000,000 个维度。这 200,000,000 个维度中的许多维度代表的居住区域非常有限(例如海洋中的位置),因此很难使用这些数据进行有效概括。存储这些不需要的维度,不仅 RAM 成本高昂,而且是愚蠢的。因此,最好将无意义维度的权重恰好降至 0,这样我们就可以避免在推理时支付这些模型系数的存储成本。

通过添加适当选择的正则化项,我们也许能够将这个想法编码到训练时完成的优化问题中。那么,在【机器学习10】中介绍的 L2 正则化能完成这项任务吗?显然是不能的。L2 正则化鼓励权重变小,但不会强制它们恰好为 0.0。

另一种想法是尝试创建一个正则化项来惩罚模型中非零系数值的计数。仅当模型拟合数据的能力有足够的增益时,增加此计数才是合理的。不幸的是,虽然这种基于计数的方法直观上很有吸引力,但它会将我们的凸优化问题变成非凸优化问题。所以这个被称为 L0 正则化的想法并不是我们可以在实践中有效使用的。

然而,有一个称为 L1 正则化的正则项,作为 L0 的近似值,它具有凸性的优点,因此计算效率高。因此,我们可以使用 L1 正则化来将模型中的那些无信息系数恰好降低为 0,从而在推理时节省 RAM。

2.L1 与 L2 正则化。

L2 和 L1 对权重的惩罚不同:

  • L2 惩罚 weight^{2}
  • L1 惩罚 \left | weight \right |

因此,L2 和 L1 具有不同的导数:

  • L2 的导数是 2 *权重
  • L1 的导数是 k(常数,其值与权重无关)。

为了便于理解,我们可以将 L2 的导数视为每次移除 “x%*权重” 的力。根据  Zeno  理论,即使你删除某个数字的百分之 x 数十亿次,减少的数字永远不会完全达到零(如“割圆术”所言,每次减少1/2,万世不竭)。无论如何,L2 通常不会将权重降低到零。

同样的,可以将 L1 的导数视为每次从重量中减去某个常数的力。然而,由于绝对值的原因,L1 在 0 处具有不连续性,这导致与 0 交叉的减法结果被清零。例如,如果减法将权重从 +0.1 强制到 -0.2,则 L1 会将权重设置为恰好 0。显然,L1 可将权重归零。

L1 正则化(惩罚所有权重的绝对值)对于宽模型来说非常有效。需要注意的是,此描述对于一维模型来说是正确的。

相同情况下,相较于 L2 正则化,L1 正则化具有以下特点:

  • 从 L2 正则化切换到 L1 正则化会极大地减少测试损失和训练损失之间的增量
  • 从 L2 正则化切换到 L1 正则化会抑制所有学习到的权重
  • 增加 L1 正则化率通常会抑制学习权重;然而,如果正则化率太高,模型无法收敛并且损失非常高。

3.L1 正则化的数学内涵

L1 正则化的策略是在原始的目标函数后面加上一个 L1 范数,也就是惩罚项为:

添加惩罚项后的正则化目标函数数学形式为:

对应的梯度为:

其中 sign(w) 只是简单地取 w 各个元素的正负号:

则权重的更新公式为:

展开后公式为:

从权重更新公式可以看出,因为 sign(w) 的存在,当 w>0 时,梯度下降时更新后的 w 变小,当w<0 时,梯度下降时更新后的 w 变大,换言之,L1 正则化使得权重 w 往 0 靠,使网络中的权重尽可能为 0,也就相当于减小了网络复杂度,防止过拟合。

这也是 L1 正则化会产生更稀疏的解的原因。此处稀疏性指的是最优值中的一些参数为 0。特征稀疏的好处有以下两点:

  • 特征选择。现实世界中,问题的特征的数量往往是很大的,而起决定性作用的往往是一小部分,稀疏规则化算子的引入会学习去掉这些没有信息的特征,也就是把这些特征对应的权重置为 0。
  • 可解释性。例如对于某种疾病的预测问题,可能有上千个特征,如果主要特征只有 5 个,那么我们有理由相信,患不患病只和这 5 个特征有关,其它特征暂不考虑也不会有太大影响。

4.参考文献

1-深度学习基础算法系列(3)-正则化之L1/L2正则化 - 知乎

2-稀疏性正则化:L1 正则化  |  Machine Learning  |  Google for Developers


http://chatgpt.dhexx.cn/article/AWduKmVp.shtml

相关文章

稀疏(sparsity)矩阵的行压缩存储

压缩矩阵行或列来存储矩阵的格式是很普遍的&#xff0c;它们不会存储不必要的元素&#xff08;即空值&#xff09;。但是它们也不是非常有效的&#xff0c;当在一个矩阵-向量积或预解决的每个简单标量中需要间接寻址。行压缩存储方式会把一个稀疏矩阵行的非零数值放在连续的存储…

redis删除锁

redis删除锁 参考&#xff1a;百度安全验证 前言 在分布式系统中&#xff0c;由于redis分布式锁相对于更简单和高效&#xff0c;成为了分布式锁的首先&#xff0c;被我们用到了很多实际业务场景当中。 但不是说用了redis分布式锁&#xff0c;就可以高枕无忧了&#xff0c;如…

Redis进阶: 锁的使用

Redis进阶: 锁的使用 1. 概念1. 原子性2. 事务 2. 使用Redis构建全局并发锁3. Redlock&#xff08;redis分布式锁&#xff09;总结 相关Blog 1. 概念 1. 原子性 原子性 原子性是数据库的事务中的特性。在数据库事务的情景下&#xff0c;原子性指的是&#xff1a;一个事务&…

redis锁的几种实现

1. redis加锁分类 redis能用的的加锁命令分表是INCR、SETNX、SET 2. 第一种锁命令INCR 这种加锁的思路是&#xff0c; key 不存在&#xff0c;那么 key 的值会先被初始化为 0 &#xff0c;然后再执行 INCR 操作进行加一。 然后其它用户在执行 INCR 操作进行加一时&#xff0…

java redis锁_Java中Redis锁的实现

由于具体业务场景的需求,需要保证数据在分布式环境下的正确更新,所以研究了一下Java中分布式锁的实现。 Java分布式锁的实现方式主要有以下三种: 数据库实现的乐观锁 Redis实现的分布式锁 Zookeeper实现的分布式锁 其中,较常用的是前两种方式,但是数据库实现方式需要较多的…

Redis的分布式锁详解

一、什么是分布式锁&#xff1a; 1、什么是分布式锁&#xff1a; 分布式锁&#xff0c;即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题&#xff0c;而分布式锁&#xff0c;就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是&…

redis锁

一、redis锁的实现 加锁命令&#xff1a; SETNX key value&#xff1a; 当键不存在时&#xff0c;对键进行设置操作并返回成功1&#xff0c;否则返回失败0。 Key是锁的唯一标识&#xff0c;一般按业务来决定命名&#xff1b; Value 往往用来比较加锁的是哪一个线程或者哪一个…

超图 hypergraph 二分图 Bipartite graph

超图是什么 超图超图的意义应用 二分图 超图 超图是什么&#xff1f; 超图的本质特征在于它的超边&#xff0c;它可以连接两个以上的结点(包括两个)。按这样的意义来说&#xff0c;我们所熟悉的普通图只是超图的一个特例而已&#xff0c;而超图则定义了一个更加宽泛的图。 超图…

BiNE: Bipartite Network Embedding 阅读笔记

论文传送门 作者 华东师范大学&#xff1a; 高明周傲英Leihui Chen 中国科学技术大学&#xff1a;何向南 摘要 传统的学习图数据的节点表示的方法大都聚焦于一般的同构网络&#xff0c;忽略了二部图的特殊性质。因此这些方法对于二部图嵌入来说可能是次优的。 本文提出了B…

C#,图论与图算法,二分图(Bipartite Graph)最佳二分匹配(Maximum Bipartite Matching)算法与源程序

二部图中的匹配是一组边的选择方式&#xff0c;使两条边不共享一个端点。最大匹配是最大大小&#xff08;最大边数&#xff09;的匹配。在最大匹配中&#xff0c;如果向其添加任何边&#xff0c;则该边不再是匹配。对于给定的二部图&#xff0c;可以有多个最大匹配。 我们为什…

【论文精读】Bipartite network projection and personal recommendation

一、Introduction 在过去的几年里&#xff0c;人们对复杂网络进行了大量的研究&#xff0c;一类特殊的网络是二部网络&#xff08;bipartite network&#xff09;。特点是其节点可分割为两个互不相交的子集X和Y&#xff0c;连接只允许存在于不同集合中两个节点之间。例如人类的…

【一致性仿真】Group-Bipartite Consensus in the Networks With Cooperative-Competitive Interactions

文章链接&#xff1a;Group-Bipartite Consensus in the Networks With Cooperative-Competitive Interactions 仿真图Fig3&#xff1a; MATLAB代码 % Group-Bipartite Consensus in the Networks With Cooperative-Competitive Interactions % Protocol Simulation Results …

C#,图论与图算法,二分图(Bipartite Graph)的霍普克罗夫特-卡普(Hopcroft Karp)最大匹配算法与源程序

二分图Bipartite graph 有没有可能通过数学过程找到你的灵魂伴侣&#xff1f;大概让我们一起探索吧&#xff01; 假设有两组人注册了约会服务。在他们注册后&#xff0c;会向他们展示另一组人的图像并给出他们的描述。他们被要求选择他们愿意与之匹配的人。 所有信息都被输入…

[VLDB 2022]Butterfly Counting on Uncertain Bipartite Graphs

总结 非确定二部图上的蝴蝶结构统计&#xff0c;精确算法。在普通的蝴蝶结构统计上&#xff0c;增加了边权重&#xff0c;使得传统算法失效&#xff0c;再在这基础上定义新的统计并优化老方法。 动机 Butterfly的数量直接展示了二部图的密度&#xff0c;是个很重要的属性。相…

二分匹配大总结——Bipartite Graph Matchings[LnJJF]

文章目录 二分匹配——Bipartite Graph Matchings[LnJJF]认识&#xff1a;什么是二分图&#xff1f;理解&#xff1a;现实模型如何与二分图相互转化&#xff1f;如何判断能否转化&#xff1f;能够转化的话&#xff0c;如何转化&#xff1f; 应用&#xff1a;已知一个二分图&…

【一致性仿真】Fixed-time bipartite consensus of multi-agent systems with disturbances

文章链接&#xff1a;Fixed-time bipartite consensus of multi-agent systems with disturbances 仿真图Fig2&#xff1a; MATLAB代码&#xff1a; % Fixed-time bipartite consensus of multi-agent systems with disturbances % author:JCGUY % date:2022-04-20 clear clc…

Bipartite Graph多视图学习聚类文章总结

看了一些anchor graph和bipartite graph 的文章始终不知道他们的区别在哪里。今天总结一下这类文章。 1.能看到最早的这类关于多视图学习的文章 Large-Scale Multi-View Spectral Clustering via Bipartite Graph&#xff08;AAAI-2015&#xff09; 目标&#xff1a;we addre…

Fast spectral clustering learning with hierarchical bipartite graph for large-scale data

Fast spectral clustering learning with hierarchical bipartite graph for large-scale data 基于层次二分图的大规模数据快速谱聚类学习 abstract 传统方法&#xff1a;不适用大规模问题 高斯核函数 提出了一种新的基于层次二分图&#xff08;SCHBG&#xff09;的光谱聚…

Bipartite Graph Based Multi-View Clustering

Bipartite Graph Based Multi-View Clustering 基于二部图的多视图聚类 abstract 对于基于图的多视图聚类&#xff0c;一个关键问题是通过两阶段学习方案捕获共识聚类结构。具体来说&#xff0c;首先学习多个视图的相似性图矩阵&#xff0c;然后将它们融合为统一的高级图矩阵。…

BiNE: Bipartite Network Embedding

** BiNE: Bipartite Network Embedding ** SIGIR 2018 论文链接&#xff1a;https://dl.acm.org/doi/10.1145/3209978.3209987 项目代码&#xff1a;https://github.com/clhchtcjj/BiNE 文章目录 BiNE: Bipartite Network Embedding 摘要1、Introduction2、Related work&a…