机器学习14:稀疏性-Sparsity

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/34330.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SSM框架模板

SSM(Spring、SpringMVC、MyBatis) 首先对Spring框架和mybatis框架进行整合&#xff1a;&#xff08;需要进行测试&#xff0c;是否获取到数据库的内容&#xff0c;才能进行下一步对Springmvc框架的整合&#xff09; 目录结构&#xff1a; pom.xml文件的模板&#xff1a; 最开…

spring.aop 随笔4 如何借助jdk代理类实现aop

0. 下了有一个月的雨&#xff0c;这对鼻炎来说来吗&#xff1f;不好 其实这也算6月份的博客&#xff0c;之前一直疏于整理 本文仅关注jdk代理所实现的spring.aop下&#xff0c;两者的关系完整的aop源码走读请移步相关 spring.aop 的其他随笔 1. 反编译追踪源码 1.1 jdk代理类…

Echarts柱状图数据过多设置滚动条效果

未设置前&#xff1a; 可以看出数据全部挤压在一起了 设置后&#xff1a; 下面多出一个滚动条&#xff0c;并且鼠标可以拖动数据 dataZoom: [{show: true,height:8,bottom:0,startValue: 0, //起始值endValue: 5, //结束值showDetail: false,fillerColor: "rgba(1, 132, …

(5)深度学习学习笔记-多层感知机

文章目录 多层感知机和激活函数代码来源 多层感知机和激活函数 通过在网络中加入一个或多个隐藏层来克服线性模型的限制&#xff0c;使其能处理更普遍的函数关系类型。最简单的方法是将多个全连接层堆叠在一起。每一层都输出到上面的层&#xff0c;直到生成最后的输出&#xf…

springboot开启热部署

第一步引入spring-boot-devtools依赖 <!--热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><!--默认false改依赖是否可以传递&…

虚幻引擎(UE5)-大世界分区WorldPartition教程(三)

文章目录 前言LevelInstance的使用1.ALevelInstance2.选择Actor创建关卡3.运行时加载LevelInstance 总结 上一篇&#xff1a;虚幻引擎(UE5)-大世界分区WorldPartition教程(二) 前言 在制作大关卡时&#xff0c;可能会遇到这样一种情况&#xff0c;就是关卡中的某些Actor会重复…

Element-Plus select选择器-下拉组件错位bug(有高度滚动时)

1. bug重现 由于项目不便展示&#xff0c;因此在官网复现bug https://element-plus.org/zh-CN/component/select.html#基础用法 2. 调试 源码调试时发现下拉菜单是直接放在body 元素里&#xff0c;这时候希望它不要直接放在body里&#xff0c; 查阅文档看到这两个属性&#x…

量化研究丨全市场多空情绪

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 大家好&#xff0c;我是Le Chiffre 今天我们简单的介绍一个天风期货工具复现&#xff0c;如下图所示&#xff1a; 其实我只是关注了公众号&#xff0c;但是从来没有认真看过他们的研究。在5月底的时候&…

计算机网络速成

更好的阅读体验 \color{red}{\huge{更好的阅读体验}} 更好的阅读体验 因特网概述 网络、互联网和因特网 网络&#xff1a;将多个计算机或计算机网络通过通信线路连接起来&#xff0c;使得它们可以相互通信和交换信息的系统。由若干节点&#xff08;Node&#xff09;和连接这些…

课程20:API项目重构

🚀前言 本文是《.Net Core从零学习搭建权限管理系统》教程专栏的课程(点击链接,跳转到专栏主页,欢迎订阅,持续更新…) 专栏介绍:以实战为线索,基于.Net 7 + REST + Vue、前后端分离,不依赖任何第三方框架,从零一步一步讲解权限管理系统搭建。 专栏适用于人群:We…

神经网络初谈

文章目录 简介神经网络的发展历程神经网络的初生神经网络的第一次折戟神经网络的新生&#xff0c;Hinton携BP算法登上历史舞台命途多舛&#xff0c;神经网络的第二次寒冬神经网络的重生&#xff0c;黄袍加身&#xff0c;一步封神神经网络的未来&#xff0c;众说纷纭其他时间点 …

Cisco ISR 4000 Series IOS XE Release Dublin-17.11.1a ED

Cisco ISR 4000 Series IOS XE Release Dublin-17.11.1a ED 思科 4000 系列集成服务路由器 请访问原文链接&#xff1a;https://sysin.org/blog/cisco-isr-4000/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 思科 4000 系列…

计算机视觉:分割一切AI大模型segment-anything

1 segment-anything介绍 Segment Anything Model (SAM)来源于Facebook公司Meta AI实验室。据Mata实验室介绍&#xff0c;SAM 已经学会了关于物体的一般概念&#xff0c;并且它可以为任何图像或视频中的任何物体生成 mask&#xff0c;甚至包括在训练过程中没有遇到过的物体和图…

面对“神奇的甲方”:如何应对匪夷所思的需求

在工作中&#xff0c;我们常常会遇到一些“神奇的甲方”&#xff0c;他们总是能给我们带来匪夷所思甚至无厘头的需求。本文将分享作者的经历&#xff0c;并提供一些建议&#xff0c;帮助读者应对这些“无理的需求”。 文章目录 方向一&#xff1a;分享那些你遇到的无理需求方向…

简单的手机记事本怎么把内容标记为完成状态?

很多人平时会在手机记事本上记录一些自己身边需要记住的事情&#xff0c;有的事情做完之后不想删除&#xff0c;又想要和未完成的内容区分开&#xff0c;那么这种情况下可以将它标记为已完成状态。简单的手机记事本怎么把内容标记为完成状态呢&#xff1f;以iPhone手机端敬业签…

【应用笔记】CW32 电容式触摸按键设计指南

前言 CW32 电容式触摸按键设计指南向客户提供一种利用 CW32 内部资源结合软件编程实现电容式触摸按键有效 触摸检测的方法。本指南的内容重点在于工作原理、软件检测过程以及调试指引。 利用芯源半导体的 CW32 系列小规模 MCU 的 IO、比较器、定时器、高速高精度内置 RC 时钟…

技术分享| 融合通讯的架构介绍

在融合通讯中&#xff0c;我们经常听到如下一些术语&#xff1a;MCU服务&#xff0c;SFU架构&#xff0c;MESH架构&#xff0c;星形网络等等。很多客户听到这些数据都是一脸雾水&#xff0c;经常说我们就是要一个可以把多种设备拉到同一个会议中&#xff0c;怎么搞这么复杂。今…

Web安全-Godzilla(哥斯拉)Webshell管理工具使用

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 工具下载地址02 运行环境03 工具介绍04 使用案例 01 工具下载地址 https://github.com/BeichenDream/Godzilla点击页面右侧"releases"&#xff0c;进入工具的版本下载页面。 在个人终端…

[Qt 教程之Widgets模块] —— QFontComboBox 字体选择器

Qt系列教程总目录 文章目录 3.2.1 创建 QFontComboBox3.2.2 成员函数1. 书写系统2. 字体过滤器3. 当前字体4. 信号 该控件用于选择字体&#xff0c;在一些软件中经常有类似控件&#xff0c;如下&#xff1a; Microsoft Office&#xff1a; Photoshop&#xff1a; QFontComboB…

QT调用glog日志流程

glog日志库是Google开源的轻量级的日志库&#xff0c;平时在开发过程中经常要使用到日志&#xff0c;本篇记录Qt项目使用glog日志库的记录。 1.首先下载cmake&#xff0c;Download | CMake 安装设置环境变量&#xff0c;检查安装情况 2.下载glog源码 git clone https://git…