机器学习14:稀疏性-Sparsity

news2024/9/27 7:22:16

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker容器初识篇

学习-https://vuepress.mirror.docker-practice.com/basic_concept/container/ https://www.bookstack.cn/cate 什么是Docker Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后&#xff0c;在其上运行一个完整操作系统&#xff0c;在该系统上再运行所需应…

时间序列分解 | Matlab集合经验模态分解EEMD的信号分解

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 时间序列分解 | Matlab集合经验模态分解EEMD的信号分解 部分源码 %--------------------

JavaWeb学习路线(10)—— 关于SpringBoot的原理

一、配置文件优先级 在Springboot框架三s种配置文件的格式 application.propertiesapplication.ymlapplication.yaml Springboot是支持多配置文件的&#xff0c;所以当我们使用两种配置文件配置相同参数时&#xff0c;Springboot会执行哪一个配置文件呢&#xff1f;这就是Sp…

FFmpeg5.0源码阅读—— avcodec_open2

摘要&#xff1a;本文主要描述了FFmpeg中用于打开编解码器接口avcodec_open2大致流程的具体调用流程&#xff0c;详细描述了该接口被调用时所作的具体工作。   关键字&#xff1a;ffmpeg、avcodec_open2大致流程   注意&#xff1a;读者需要了解FFmpeg的基本使用流程&#…

SpringMVC (一) 什么是SpringMVC

一、回顾MVC 1.1、什么是MVC MVC是模型(Model)、视图(View)、控制器(Controller)的简写&#xff0c;是一种软件设计规范。是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式&#xff0c;MVC是一种架构模式。…

在 ZBrush、Maya 和 Substance 3D Painter 中制作后世界末日女性角色

今天瑞云渲染小编给大家带来了蒂亚戈布兰道 (Thiago Brandao) 分享的设计极其精细后世界末日女性角色背后的秘密&#xff0c;解释了复杂的纹理处理过程&#xff0c;并谈到了创造逼真的面部特征。 介绍 我的名字是蒂亚戈-布兰道。我来自巴西&#xff0c;目前住在这里。从小&…

【AJAX】原生AJAX

目录 一、AJAX的使用场景 二、原生的AJAX 三、HTTP &#xff1a; 1、原生AJAX GET请求 1、原生AJAX POST请求 四、总结 一、AJAX的使用场景 1、页面不刷新的情况下&#xff0c;浏览器等搜索框输入某关键字出现多个搜索选择内容,如下图所示&#xff1a; 2、登录、注册界面输…

前端JS如何实现对复杂文本进行句子分割,将每句话拆分出来?

文章目录 切割句子背景简介前端如何使用NLP&#xff1f;技术实现 切割句子背景简介 开发中遇到一种场景&#xff0c;在做文本翻译这块需求时&#xff0c;需要对输入的原文进行一句一句话的拆分出来&#xff0c;传给后台&#xff0c;获取每句话的翻译结果&#xff0c;便于实现页…

clickhouse系统日志引起的root目录磁盘满的问题处理

问题及追踪 对于生产环境&#xff0c;尤其是配置较低的生产环境&#xff0c;一定要注意资源的使用 今天就遇到一个问题&#xff0c;服务器磁盘接近满了&#xff0c;部署的平台服务异常&#xff0c;无法提供服务 简单说一下客户环境&#xff1a;客户只有老的Windows server 服…

hydra的简单使用

Hydra是一款开源的暴力PJ工具&#xff0c;集成在kali当中。 参数功能-l指定用户名-p指定密码-L指定用户名字典-P指定密码字典-C指定所用格式为“user:password”的字典文件-en null&#xff0c;表示尝试空密码-es same&#xff0c;把用户名本身当做密码进行尝试-er 反向&#…

哈工大计算机网络课程网络层协议详解之:距离向量路由算法与层次化路由算法

文章目录 距离向量路由算法Bellman-Ford算法举例距离向量路由算法 层次化路由算法层次化路由AS示例自治系统间&#xff08;Inter-AS&#xff09;路由任务 在上一节中我们介绍了路由算法中的链路状态路由算法&#xff0c;介绍它基于Dijkstra算法来实现&#xff0c;同时分析了其缺…

Jmeter接口测试断言详解

目录 前言&#xff1a; 响应断言 Apply to (响应断言的应用范围) 要测试的响应字段(可通过取样器结果查看) 响应断言&#xff1a;模式匹配 Json断言 前言&#xff1a; 在JMeter中进行接口测试时&#xff0c;断言是一个非常重要的概念。断言允许我们验证接口的响应是否符…

十七、docker学习-docker-compose安装nginx反向代理

compose安装nginx反向代理 IDEA安装docker插件 idea安装docker插件。Dockerfile、docker-compose.yml文件大部分内容会有提示信息。方便开发人员编写配置文件。 https://plugins.jetbrains.com/plugin/7724-docker/versions基础镜像 docker pull 1.21.0-alpine docker pull…

一文读懂SQL中的Aggregate(聚合) 函数和Scalar(标准)函数

目录 前言&#xff1a; 一、SQL Aggregate 函数 1、AVG() 函数 2、count()函数 3、MAX() 函数 4、MIN() 函数 5、SUM() 函数 6、SQL GROUP BY 语法 7、SQL HAVING 子句 8、SQL EXISTS 运算符 9、SQL UNION 操作符 二、SQL Scalar 函数 1、SQL UCASE() 函数 2、SQ…

Swift 周报 第三十二期

文章目录 前言新闻和社区现已提供新的设计资源visionOS SDK 现已发布 提案Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组自主整理周报的第二十三期&#xff0c;每个模块已初步成型。各位读者如果有好的提议&#xff0c;欢迎在文末留言。 欢迎投稿或推荐内容。…

力扣 -- 174. 地下城游戏

题目链接&#xff1a;174. 地下城游戏 - 力扣&#xff08;LeetCode&#xff09; 下面是用动态规划的思想解决这道题的过程&#xff0c;相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 参考代码&#xff1a; class Solution { public:int calculateMinimumHP(vector&…

【上海海事大学806】23上岸学姐经验分享

今天很荣幸请到了一位23上岸上海海事大学的学姐来给大家做一期经验分享&#xff01;&#xff01;&#xff01;我之前也有做过关于上海海事大学806的一些真题解析以及重点勾画&#xff0c;希望能帮到大家&#xff0c; 一、学姐经验分享 很荣幸你能看到我的考研经验分享&#x…

第七章 版本控制器——git

第七章 版本控制器——git 一、git的历史二、git的特点与发展1、git的特点2、git与github 二、git的安装与注册1、git的安装2、git的使用&#xff08;1&#xff09;github注册&#xff08;2&#xff09;创建远端仓库&#xff08;3&#xff09;将远端仓库镜像复制到本地仓库指令…

LIS实验室信息管理系统功能模块(Oracle数据库、Client/Server架构)

一、系统框架简介 1、技术框架 &#xff08;1&#xff09;总体框架&#xff1a; ♦SaaS架构的Client/Server应用 ♦服务可伸缩&#xff0c;多服务协同 ♦服务可拆分&#xff0c;功能易扩展 &#xff08;2&#xff09;技术细节&#xff1a; ♦体系结构&#xff1a;Client/Serv…

零基础小白暑假QT实训1

一.前言 今天就要开始暑假短学期的实训了&#xff0c;本来课堂也要求记笔记&#xff0c;这里我就开始分享我将来五天的学习过程吧。 二.QT安装过程 首先&#xff0c;提供一下我的链接&#xff1a; 本来上传到我的阿里云盘了的&#xff0c;结果压缩包不给分享&#xff0c;抱歉…